diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 0ae0548674..efe44f90fa 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -176,6 +176,7 @@ if (is_mac) { ":primitives", "../../rtc_base:rtc_base", "../../rtc_base:rtc_base_approved", + "../../sdk:common_objc", ] libs = [ "AppKit.framework", diff --git a/modules/desktop_capture/DEPS b/modules/desktop_capture/DEPS index 3314b8cdfd..3b8a639f5e 100644 --- a/modules/desktop_capture/DEPS +++ b/modules/desktop_capture/DEPS @@ -2,3 +2,9 @@ include_rules = [ "+system_wrappers", "+third_party/libyuv", ] + +specific_include_rules = { + "screen_capturer_mac\.mm": [ + "+sdk/objc", + ], +} diff --git a/modules/desktop_capture/screen_capturer_mac.mm b/modules/desktop_capture/screen_capturer_mac.mm index 01911e1ceb..6f2690f285 100644 --- a/modules/desktop_capture/screen_capturer_mac.mm +++ b/modules/desktop_capture/screen_capturer_mac.mm @@ -35,6 +35,7 @@ #include "rtc_base/logging.h" #include "rtc_base/macutils.h" #include "rtc_base/timeutils.h" +#include "sdk/objc/Framework/Classes/Common/scoped_cftyperef.h" namespace webrtc { @@ -445,7 +446,7 @@ bool ScreenCapturerMac::GetSourceList(SourceList* screens) { for (MacDisplayConfigurations::iterator it = desktop_config_.displays.begin(); it != desktop_config_.displays.end(); ++it) { - screens->push_back({it->id}); + screens->push_back({it->id, std::string()}); } return true; } @@ -674,8 +675,17 @@ bool ScreenCapturerMac::RegisterRefreshAndMoveHandlers() { ScreenRefresh(count, rects, display_origin); } }; + + rtc::ScopedCFTypeRef properties_dict( + CFDictionaryCreate(kCFAllocatorDefault, + (const void* []){kCGDisplayStreamShowCursor}, + (const void* []){kCFBooleanFalse}, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks)); + CGDisplayStreamRef display_stream = CGDisplayStreamCreate( - display_id, pixel_width, pixel_height, 'BGRA', nullptr, handler); + display_id, pixel_width, pixel_height, 'BGRA', properties_dict.get(), handler); if (display_stream) { CGError error = CGDisplayStreamStart(display_stream);