/* * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "modules/desktop_capture/window_finder_mac.h" #include #include #include #include "modules/desktop_capture/mac/desktop_configuration.h" #include "modules/desktop_capture/mac/desktop_configuration_monitor.h" #include "modules/desktop_capture/mac/window_list_utils.h" namespace webrtc { WindowFinderMac::WindowFinderMac( rtc::scoped_refptr configuration_monitor) : configuration_monitor_(std::move(configuration_monitor)) {} WindowFinderMac::~WindowFinderMac() = default; WindowId WindowFinderMac::GetWindowUnderPoint(DesktopVector point) { WindowId id = kNullWindowId; GetWindowList( [&id, point](CFDictionaryRef window) { DesktopRect bounds; bounds = GetWindowBounds(window); if (bounds.Contains(point)) { id = GetWindowId(window); return false; } return true; }, true, true); return id; } // static std::unique_ptr WindowFinder::Create( const WindowFinder::Options& options) { return std::make_unique(options.configuration_monitor); } } // namespace webrtc