| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 if (host_window_) | 45 if (host_window_) |
| 46 DestroyWindow(host_window_); | 46 DestroyWindow(host_window_); |
| 47 | 47 |
| 48 if (magnifier_initialized_) | 48 if (magnifier_initialized_) |
| 49 mag_uninitialize_func_(); | 49 mag_uninitialize_func_(); |
| 50 | 50 |
| 51 if (mag_lib_handle_) | 51 if (mag_lib_handle_) |
| 52 FreeLibrary(mag_lib_handle_); | 52 FreeLibrary(mag_lib_handle_); |
| 53 | 53 |
| 54 if (desktop_dc_) | 54 if (desktop_dc_) |
| 55 ReleaseDC(NULL, desktop_dc_); | 55 ReleaseDC(nullptr, desktop_dc_); |
| 56 } | 56 } |
| 57 | 57 |
| 58 void ScreenCapturerWinMagnifier::Start(Callback* callback) { | 58 void ScreenCapturerWinMagnifier::Start(Callback* callback) { |
| 59 RTC_DCHECK(!callback_); | 59 RTC_DCHECK(!callback_); |
| 60 RTC_DCHECK(callback); | 60 RTC_DCHECK(callback); |
| 61 callback_ = callback; | 61 callback_ = callback; |
| 62 | 62 |
| 63 if (!InitializeMagnifier()) { | 63 if (!InitializeMagnifier()) { |
| 64 LOG_F(LS_WARNING) << "Switching to fallback screen capturer becuase " | 64 LOG_F(LS_WARNING) << "Switching to fallback screen capturer becuase " |
| 65 "magnifier initialization failed."; | 65 "magnifier initialization failed."; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 84 StartFallbackCapturer(); | 84 StartFallbackCapturer(); |
| 85 fallback_capturer_->CaptureFrame(); | 85 fallback_capturer_->CaptureFrame(); |
| 86 return; | 86 return; |
| 87 } | 87 } |
| 88 | 88 |
| 89 int64_t capture_start_time_nanos = rtc::TimeNanos(); | 89 int64_t capture_start_time_nanos = rtc::TimeNanos(); |
| 90 | 90 |
| 91 // Switch to the desktop receiving user input if different from the current | 91 // Switch to the desktop receiving user input if different from the current |
| 92 // one. | 92 // one. |
| 93 std::unique_ptr<Desktop> input_desktop(Desktop::GetInputDesktop()); | 93 std::unique_ptr<Desktop> input_desktop(Desktop::GetInputDesktop()); |
| 94 if (input_desktop.get() != NULL && !desktop_.IsSame(*input_desktop)) { | 94 if (input_desktop.get() != nullptr && !desktop_.IsSame(*input_desktop)) { |
| 95 // Release GDI resources otherwise SetThreadDesktop will fail. | 95 // Release GDI resources otherwise SetThreadDesktop will fail. |
| 96 if (desktop_dc_) { | 96 if (desktop_dc_) { |
| 97 ReleaseDC(NULL, desktop_dc_); | 97 ReleaseDC(nullptr, desktop_dc_); |
| 98 desktop_dc_ = NULL; | 98 desktop_dc_ = nullptr; |
| 99 } | 99 } |
| 100 // If SetThreadDesktop() fails, the thread is still assigned a desktop. | 100 // If SetThreadDesktop() fails, the thread is still assigned a desktop. |
| 101 // So we can continue capture screen bits, just from the wrong desktop. | 101 // So we can continue capture screen bits, just from the wrong desktop. |
| 102 desktop_.SetThreadDesktop(input_desktop.release()); | 102 desktop_.SetThreadDesktop(input_desktop.release()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 DesktopRect rect = GetScreenRect(current_screen_id_, current_device_key_); | 105 DesktopRect rect = GetScreenRect(current_screen_id_, current_device_key_); |
| 106 queue_.MoveToNextFrame(); | 106 queue_.MoveToNextFrame(); |
| 107 CreateCurrentFrameIfNecessary(rect.size()); | 107 CreateCurrentFrameIfNecessary(rect.size()); |
| 108 // CaptureImage may fail in some situations, e.g. windows8 metro mode. So | 108 // CaptureImage may fail in some situations, e.g. windows8 metro mode. So |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 set_window_filter_list_func_( | 150 set_window_filter_list_func_( |
| 151 magnifier_window_, MW_FILTERMODE_EXCLUDE, 1, &excluded_window_); | 151 magnifier_window_, MW_FILTERMODE_EXCLUDE, 1, &excluded_window_); |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 | 154 |
| 155 bool ScreenCapturerWinMagnifier::CaptureImage(const DesktopRect& rect) { | 155 bool ScreenCapturerWinMagnifier::CaptureImage(const DesktopRect& rect) { |
| 156 RTC_DCHECK(magnifier_initialized_); | 156 RTC_DCHECK(magnifier_initialized_); |
| 157 | 157 |
| 158 // Set the magnifier control to cover the captured rect. The content of the | 158 // Set the magnifier control to cover the captured rect. The content of the |
| 159 // magnifier control will be the captured image. | 159 // magnifier control will be the captured image. |
| 160 BOOL result = SetWindowPos(magnifier_window_, NULL, rect.left(), rect.top(), | 160 BOOL result = SetWindowPos(magnifier_window_, nullptr, rect.left(), |
| 161 rect.width(), rect.height(), 0); | 161 rect.top(), rect.width(), rect.height(), 0); |
| 162 if (!result) { | 162 if (!result) { |
| 163 LOG_F(LS_WARNING) << "Failed to call SetWindowPos: " << GetLastError() | 163 LOG_F(LS_WARNING) << "Failed to call SetWindowPos: " << GetLastError() |
| 164 << ". Rect = {" << rect.left() << ", " << rect.top() | 164 << ". Rect = {" << rect.left() << ", " << rect.top() |
| 165 << ", " << rect.right() << ", " << rect.bottom() << "}"; | 165 << ", " << rect.right() << ", " << rect.bottom() << "}"; |
| 166 return false; | 166 return false; |
| 167 } | 167 } |
| 168 | 168 |
| 169 magnifier_capture_succeeded_ = false; | 169 magnifier_capture_succeeded_ = false; |
| 170 | 170 |
| 171 RECT native_rect = {rect.left(), rect.top(), rect.right(), rect.bottom()}; | 171 RECT native_rect = {rect.left(), rect.top(), rect.right(), rect.bottom()}; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 RTC_DCHECK(fallback_capturer_); | 380 RTC_DCHECK(fallback_capturer_); |
| 381 if (!fallback_capturer_started_) { | 381 if (!fallback_capturer_started_) { |
| 382 fallback_capturer_started_ = true; | 382 fallback_capturer_started_ = true; |
| 383 | 383 |
| 384 fallback_capturer_->Start(callback_); | 384 fallback_capturer_->Start(callback_); |
| 385 fallback_capturer_->SelectSource(current_screen_id_); | 385 fallback_capturer_->SelectSource(current_screen_id_); |
| 386 } | 386 } |
| 387 } | 387 } |
| 388 | 388 |
| 389 } // namespace webrtc | 389 } // namespace webrtc |
| OLD | NEW |