summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Smolko <andrewsmolko@gmail.com>2019-07-31 16:27:44 +0300
committerAndrew Smolko <andrewsmolko@gmail.com>2019-08-07 18:07:33 +0300
commit636f46f04ba6d5c63783558ed78eb5f562179e9c (patch)
treeb5eb6ca8be0ca4b039b847579c3c94856006690b
parent9cd70bd2d9c37491b59b8eb91ff7ea13aa87ae8b (diff)
AVFoundation: Re-create CARenderer if current OpenGL context changed
CARenderer was not re-created so black frames were rendered in video if current OpenGL context changed. Task-number: QTBUG-77270 Change-Id: I8df423aaa9239c938363141cca1ae4136cde839b Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm
index 62ee13d25..d2cbb9268 100644
--- a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm
@@ -159,6 +159,13 @@ QOpenGLFramebufferObject *AVFVideoFrameRenderer::initRenderer(AVPlayerLayer *lay
qWarning("failed to create QOpenGLContext");
return 0;
}
+
+ // CARenderer must be re-created with different current context, so release it now.
+ // See lines below where m_videoLayerRenderer is constructed.
+ if (m_videoLayerRenderer) {
+ [m_videoLayerRenderer release];
+ m_videoLayerRenderer = nullptr;
+ }
}
//Need current context