| Index: webrtc/modules/desktop_capture/window_capturer_mac.mm
|
| diff --git a/webrtc/modules/desktop_capture/window_capturer_mac.mm b/webrtc/modules/desktop_capture/window_capturer_mac.mm
|
| index 72b20f3411b80af0fd9d3bc790d12df2aa6a012a..7484f9f31ca1358815e1fc8abb31f78fcbe60745 100644
|
| --- a/webrtc/modules/desktop_capture/window_capturer_mac.mm
|
| +++ b/webrtc/modules/desktop_capture/window_capturer_mac.mm
|
| @@ -48,14 +48,12 @@ class WindowCapturerMac : public WindowCapturer {
|
| full_screen_chrome_window_detector);
|
| ~WindowCapturerMac() override;
|
|
|
| - // WindowCapturer interface.
|
| - bool GetWindowList(WindowList* windows) override;
|
| - bool SelectWindow(WindowId id) override;
|
| - bool BringSelectedWindowToFront() override;
|
| -
|
| // DesktopCapturer interface.
|
| void Start(Callback* callback) override;
|
| void CaptureFrame() override;
|
| + bool GetSourceList(SourceList* sources) override;
|
| + bool SelectSource(SourceId id) override;
|
| + bool FocusOnSelectedSource() override;
|
|
|
| private:
|
| Callback* callback_ = nullptr;
|
| @@ -76,63 +74,18 @@ WindowCapturerMac::WindowCapturerMac(
|
|
|
| WindowCapturerMac::~WindowCapturerMac() {}
|
|
|
| -bool WindowCapturerMac::GetWindowList(WindowList* windows) {
|
| - // Only get on screen, non-desktop windows.
|
| - CFArrayRef window_array = CGWindowListCopyWindowInfo(
|
| - kCGWindowListExcludeDesktopElements,
|
| - kCGNullWindowID);
|
| - if (!window_array)
|
| - return false;
|
| - MacDesktopConfiguration desktop_config = MacDesktopConfiguration::GetCurrent(
|
| - MacDesktopConfiguration::TopLeftOrigin);
|
| - // Check windows to make sure they have an id, title, and use window layer
|
| - // other than 0.
|
| - CFIndex count = CFArrayGetCount(window_array);
|
| - for (CFIndex i = 0; i < count; ++i) {
|
| - CFDictionaryRef window = reinterpret_cast<CFDictionaryRef>(
|
| - CFArrayGetValueAtIndex(window_array, i));
|
| - CFStringRef window_title = reinterpret_cast<CFStringRef>(
|
| - CFDictionaryGetValue(window, kCGWindowName));
|
| - CFNumberRef window_id = reinterpret_cast<CFNumberRef>(
|
| - CFDictionaryGetValue(window, kCGWindowNumber));
|
| - CFNumberRef window_layer = reinterpret_cast<CFNumberRef>(
|
| - CFDictionaryGetValue(window, kCGWindowLayer));
|
| - if (window_title && window_id && window_layer) {
|
| - // Skip windows with layer=0 (menu, dock).
|
| - int layer;
|
| - CFNumberGetValue(window_layer, kCFNumberIntType, &layer);
|
| - if (layer != 0)
|
| - continue;
|
| -
|
| - int id;
|
| - CFNumberGetValue(window_id, kCFNumberIntType, &id);
|
| -
|
| - // Skip windows that are minimized and not full screen.
|
| - if (IsWindowMinimized(id) &&
|
| - !IsWindowFullScreen(desktop_config, window)) { continue;}
|
| -
|
| - WindowCapturer::Window window;
|
| - window.id = id;
|
| - if (!rtc::ToUtf8(window_title, &(window.title)) ||
|
| - window.title.empty()) {
|
| - continue;
|
| - }
|
| - windows->push_back(window);
|
| - }
|
| - }
|
| -
|
| - CFRelease(window_array);
|
| - return true;
|
| +bool WindowCapturerMac::GetSourceList(SourceList* sources) {
|
| + return webrtc::GetWindowList(sources, true);
|
| }
|
|
|
| -bool WindowCapturerMac::SelectWindow(WindowId id) {
|
| +bool WindowCapturerMac::SelectSource(SourceId id) {
|
| if (!IsWindowValid(id))
|
| return false;
|
| window_id_ = id;
|
| return true;
|
| }
|
|
|
| -bool WindowCapturerMac::BringSelectedWindowToFront() {
|
| +bool WindowCapturerMac::FocusOnSelectedSource() {
|
| if (!window_id_)
|
| return false;
|
|
|
|
|