| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 } | 107 } |
| 108 | 108 |
| 109 int DxgiDuplicatorController::ScreenCount() { | 109 int DxgiDuplicatorController::ScreenCount() { |
| 110 rtc::CritScope lock(&lock_); | 110 rtc::CritScope lock(&lock_); |
| 111 if (Initialize()) { | 111 if (Initialize()) { |
| 112 return ScreenCountUnlocked(); | 112 return ScreenCountUnlocked(); |
| 113 } | 113 } |
| 114 return 0; | 114 return 0; |
| 115 } | 115 } |
| 116 | 116 |
| 117 bool DxgiDuplicatorController::GetDeviceNames( |
| 118 std::vector<std::string>* output) { |
| 119 rtc::CritScope lock(&lock_); |
| 120 if (Initialize()) { |
| 121 GetDeviceNamesUnlocked(output); |
| 122 return true; |
| 123 } |
| 124 return false; |
| 125 } |
| 126 |
| 117 DxgiDuplicatorController::Result | 127 DxgiDuplicatorController::Result |
| 118 DxgiDuplicatorController::DoDuplicate(DxgiFrame* frame, int monitor_id) { | 128 DxgiDuplicatorController::DoDuplicate(DxgiFrame* frame, int monitor_id) { |
| 119 RTC_DCHECK(frame); | 129 RTC_DCHECK(frame); |
| 120 rtc::CritScope lock(&lock_); | 130 rtc::CritScope lock(&lock_); |
| 121 | 131 |
| 122 // The dxgi components and APIs do not update the screen resolution without | 132 // The dxgi components and APIs do not update the screen resolution without |
| 123 // a reinitialization. So we use the GetDC() function to retrieve the screen | 133 // a reinitialization. So we use the GetDC() function to retrieve the screen |
| 124 // resolution to decide whether dxgi components need to be reinitialized. | 134 // resolution to decide whether dxgi components need to be reinitialized. |
| 125 // If the screen resolution changed, it's very likely the next Duplicate() | 135 // If the screen resolution changed, it's very likely the next Duplicate() |
| 126 // function call will fail because of a missing monitor or the frame size is | 136 // function call will fail because of a missing monitor or the frame size is |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 } | 373 } |
| 364 | 374 |
| 365 int DxgiDuplicatorController::ScreenCountUnlocked() const { | 375 int DxgiDuplicatorController::ScreenCountUnlocked() const { |
| 366 int result = 0; | 376 int result = 0; |
| 367 for (auto& duplicator : duplicators_) { | 377 for (auto& duplicator : duplicators_) { |
| 368 result += duplicator.screen_count(); | 378 result += duplicator.screen_count(); |
| 369 } | 379 } |
| 370 return result; | 380 return result; |
| 371 } | 381 } |
| 372 | 382 |
| 383 void DxgiDuplicatorController::GetDeviceNamesUnlocked( |
| 384 std::vector<std::string>* output) const { |
| 385 RTC_DCHECK(output); |
| 386 for (auto& duplicator : duplicators_) { |
| 387 for (int i = 0; i < duplicator.screen_count(); i++) { |
| 388 output->push_back(duplicator.GetDeviceName(i)); |
| 389 } |
| 390 } |
| 391 } |
| 392 |
| 373 DesktopSize DxgiDuplicatorController::SelectedDesktopSize( | 393 DesktopSize DxgiDuplicatorController::SelectedDesktopSize( |
| 374 int monitor_id) const { | 394 int monitor_id) const { |
| 375 if (monitor_id < 0) { | 395 if (monitor_id < 0) { |
| 376 return desktop_size(); | 396 return desktop_size(); |
| 377 } | 397 } |
| 378 | 398 |
| 379 return ScreenRect(monitor_id).size(); | 399 return ScreenRect(monitor_id).size(); |
| 380 } | 400 } |
| 381 | 401 |
| 382 bool DxgiDuplicatorController::EnsureFrameCaptured(Context* context, | 402 bool DxgiDuplicatorController::EnsureFrameCaptured(Context* context, |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 void DxgiDuplicatorController::TranslateRect() { | 453 void DxgiDuplicatorController::TranslateRect() { |
| 434 const DesktopVector position = | 454 const DesktopVector position = |
| 435 DesktopVector().subtract(desktop_rect_.top_left()); | 455 DesktopVector().subtract(desktop_rect_.top_left()); |
| 436 desktop_rect_.Translate(position); | 456 desktop_rect_.Translate(position); |
| 437 for (auto& duplicator : duplicators_) { | 457 for (auto& duplicator : duplicators_) { |
| 438 duplicator.TranslateRect(position); | 458 duplicator.TranslateRect(position); |
| 439 } | 459 } |
| 440 } | 460 } |
| 441 | 461 |
| 442 } // namespace webrtc | 462 } // namespace webrtc |
| OLD | NEW |