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