[webkit-changes] [WebKit/WebKit] 76398a: Regression (284080 at main): ScreenCaptureKitCaptureS...
youennf
noreply at github.com
Wed Oct 9 06:54:37 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 76398a9a4508d5b249c6544c5c79fcc6824b43e3
https://github.com/WebKit/WebKit/commit/76398a9a4508d5b249c6544c5c79fcc6824b43e3
Author: Youenn Fablet <youenn at apple.com>
Date: 2024-10-09 (Wed, 09 Oct 2024)
Changed paths:
M Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.h
M Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm
Log Message:
-----------
Regression (284080 at main): ScreenCaptureKitCaptureSource may fail capture due to the whenReady callback being called before totally stopping capture
https://bugs.webkit.org/show_bug.cgi?id=280964
rdar://problem/137414283
Reviewed by Jean-Yves Avenard.
284080 at main added a way to get the initial capture size by starting the capture, getting a first frame and stopping the capture.
Once stopping the capture, the source is said to be ready and we synchronously send an IPC message to WebProcess.
WebProcess will then send back an IPC message to start the capture.
The issue is that stopping the capture is asynchronous.
Stopping the capture after the first frame might not be finished when receiving the IPC message to restart capture.
If that is the case, stopping the capture will fail, which fails the whole capture.
To prevent this race before the WebProcess IPC message and stopping the capture, we wait for stopping the capture to finish before stating that the source is ready.
Manually tested as there is no ScreenCaptureKitCaptureSource mock.
* Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.h:
* Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:
(WebCore::ScreenCaptureKitCaptureSource::whenReady):
(WebCore::ScreenCaptureKitCaptureSource::stopInternal):
(WebCore::ScreenCaptureKitCaptureSource::stop): Deleted.
Canonical link: https://commits.webkit.org/284891@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list