Title: [276834] trunk/Source/WebCore
Revision
276834
Author
[email protected]
Date
2021-04-30 00:18:28 -0700 (Fri, 30 Apr 2021)

Log Message

MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers lambda should check its player is alive
https://bugs.webkit.org/show_bug.cgi?id=225186
<rdar://77267681>

Reviewed by Eric Carlson.

Make sure to check weakThis.
Move the meat of the lambda in a method as a small improvement refactoring.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::layersAreInitialized):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (276833 => 276834)


--- trunk/Source/WebCore/ChangeLog	2021-04-30 06:31:15 UTC (rev 276833)
+++ trunk/Source/WebCore/ChangeLog	2021-04-30 07:18:28 UTC (rev 276834)
@@ -1,3 +1,19 @@
+2021-04-30  Youenn Fablet  <[email protected]>
+
+        MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers lambda should check its player is alive
+        https://bugs.webkit.org/show_bug.cgi?id=225186
+        <rdar://77267681>
+
+        Reviewed by Eric Carlson.
+
+        Make sure to check weakThis.
+        Move the meat of the lambda in a method as a small improvement refactoring.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
+        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::layersAreInitialized):
+
 2021-04-29  Jean-Yves Avenard  <[email protected]>
 
         Adopt AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h (276833 => 276834)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h	2021-04-30 06:31:15 UTC (rev 276833)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h	2021-04-30 07:18:28 UTC (rev 276834)
@@ -168,6 +168,8 @@
 
     void scheduleDeferredTask(Function<void ()>&&);
 
+    void layersAreInitialized(IntSize, bool);
+
     enum DisplayMode {
         None,
         PaintItBlack,

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm (276833 => 276834)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2021-04-30 06:31:15 UTC (rev 276833)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm	2021-04-30 07:18:28 UTC (rev 276834)
@@ -370,21 +370,28 @@
         m_sampleBufferDisplayLayer->setRenderPolicy(SampleBufferDisplayLayer::RenderPolicy::Immediately);
 
     auto size = snappedIntRect(m_player->playerContentBoxRect()).size();
-    m_sampleBufferDisplayLayer->initialize(hideRootLayer(), size, [this, weakThis = makeWeakPtr(this), size](auto didSucceed) {
-        if (!didSucceed) {
-            ERROR_LOG(LOGIDENTIFIER, "Initializing the SampleBufferDisplayLayer failed.");
-            m_sampleBufferDisplayLayer = nullptr;
-            return;
-        }
-        updateRenderingMode();
-        m_shouldUpdateDisplayLayer = true;
+    m_sampleBufferDisplayLayer->initialize(hideRootLayer(), size, [weakThis = makeWeakPtr(this), size](auto didSucceed) {
+        if (weakThis)
+            weakThis->layersAreInitialized(size, didSucceed);
+    });
+}
 
-        m_videoLayerManager->setVideoLayer(m_sampleBufferDisplayLayer->rootLayer(), size);
+void MediaPlayerPrivateMediaStreamAVFObjC::layersAreInitialized(IntSize size, bool didSucceed)
+{
+    if (!didSucceed) {
+        ERROR_LOG(LOGIDENTIFIER, "Initializing the SampleBufferDisplayLayer failed.");
+        m_sampleBufferDisplayLayer = nullptr;
+        return;
+    }
 
-        [m_boundsChangeListener begin:m_sampleBufferDisplayLayer->rootLayer()];
+    updateRenderingMode();
+    m_shouldUpdateDisplayLayer = true;
 
-        m_canEnqueueDisplayLayer = true;
-    });
+    m_videoLayerManager->setVideoLayer(m_sampleBufferDisplayLayer->rootLayer(), size);
+
+    [m_boundsChangeListener begin:m_sampleBufferDisplayLayer->rootLayer()];
+
+    m_canEnqueueDisplayLayer = true;
 }
 
 void MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to