From fb99c6ebb57754e4b764a63dfae7f62ec272ba6b Mon Sep 17 00:00:00 2001 From: Johannes Kron Date: Thu, 18 Jan 2024 14:00:19 +0100 Subject: [PATCH] Disable the use of CGDisplayStreamCreate() for desktop capture on Sonoma CGDisplayStreamCreate is an deprecated API. It was believed that the use of it was disabled on Sonoma through the setting allow_iosurface = false [1], which causes the thumbnails to be created by the API CGDisplayCreateImage. This API is not marked as deprecated at the moment. However, although the thumbnails are created through CGDisplayCreateImage, CGDisplayStreamCreate() is still called and runs in the background. This makes the capture chip appear. No capture chip appears if this CL is landed and the ScreenCaptureKit thumbnail capturer is enabled, --enable-features="ScreenCaptureKitMac,ScreenCaptureKitStreamPickerSonoma,ThumbnailCapturerMac:capture_mode/sc_screenshot_manager" [1] https://chromium-review.googlesource.com/c/chromium/src/+/4892397 Bug: chromium:1486851 Change-Id: I3422efffc57dcb3e8965f19a5eca7f2a95d62da1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/334721 Reviewed-by: Mark Foltz Commit-Queue: Johannes Kron Cr-Commit-Position: refs/heads/main@{#41563} --- modules/desktop_capture/mac/desktop_frame_provider.h | 2 ++ modules/desktop_capture/mac/screen_capturer_mac.mm | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/modules/desktop_capture/mac/desktop_frame_provider.h b/modules/desktop_capture/mac/desktop_frame_provider.h index aad28d2f30..64ef5750ec 100644 --- a/modules/desktop_capture/mac/desktop_frame_provider.h +++ b/modules/desktop_capture/mac/desktop_frame_provider.h @@ -46,6 +46,8 @@ class DesktopFrameProvider { // Expected to be called before stopping the CGDisplayStreamRef streams. void Release(); + bool allow_iosurface() const { return allow_iosurface_; } + private: SequenceChecker thread_checker_; const bool allow_iosurface_; diff --git a/modules/desktop_capture/mac/screen_capturer_mac.mm b/modules/desktop_capture/mac/screen_capturer_mac.mm index 28cc410573..60089fd0f2 100644 --- a/modules/desktop_capture/mac/screen_capturer_mac.mm +++ b/modules/desktop_capture/mac/screen_capturer_mac.mm @@ -439,6 +439,10 @@ void ScreenCapturerMac::ScreenConfigurationChanged() { bool ScreenCapturerMac::RegisterRefreshAndMoveHandlers() { RTC_DCHECK(thread_checker_.IsCurrent()); + if (!desktop_frame_provider_.allow_iosurface()) { + return true; + } + desktop_config_ = desktop_config_monitor_->desktop_configuration(); for (const auto& config : desktop_config_.displays) { size_t pixel_width = config.pixel_bounds.width();