[webkit-changes] [WebKit/WebKit] 3e536c: [Cocoa] CRASH in RemoteMediaPlayerProxy::updateVid...
Jer Noble
noreply at github.com
Wed Oct 11 12:23:30 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3e536cdd2b1fe184627a33fb98024070f0fa2a83
https://github.com/WebKit/WebKit/commit/3e536cdd2b1fe184627a33fb98024070f0fa2a83
Author: Jer Noble <jer.noble at apple.com>
Date: 2023-10-11 (Wed, 11 Oct 2023)
Changed paths:
M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
Log Message:
-----------
[Cocoa] CRASH in RemoteMediaPlayerProxy::updateVideoFullscreenInlineImage
https://bugs.webkit.org/show_bug.cgi?id=258898
rdar://107296485
Reviewed by Eric Carlson.
A command to destroy the MediaPlayer may be received while MediaPlayerPrivateAVFoundationObjC
is spinning the RunLoop in waitForVideoOutputMediaDataWillChange(). Detect this by instantiating
a WeakPtr in waitForVideoOutputMediaDataWillChange() and bailing early with an error code if the
WeakPtr has been invalidated while spinning the RunLoop.
Modify updateLastImage() to take a CompletionHandler, which will only fire if
waitForVideoOutputMediaDataWillChange() returns a non-exceptional result. If that method
detects that the WeakPtr was invalidated, the completion handler will not be called
(which will trigger an ASSERT in debug builds).
Update all the callers of updateLastImage() to do their subsequent work in the completion handler
they pass to updateLastImage().
* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoFullscreenInlineImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::colorSpace):
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
Originally-landed-as: 265870.11 at safari-7616-branch (1fb95912042f). rdar://116424357
Canonical link: https://commits.webkit.org/269212@main
More information about the webkit-changes
mailing list