From 636f46f04ba6d5c63783558ed78eb5f562179e9c Mon Sep 17 00:00:00 2001 From: Andrew Smolko Date: Wed, 31 Jul 2019 16:27:44 +0300 Subject: 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 --- src/plugins/avfoundation/mediaplayer/avfvideoframerenderer.mm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/plugins/avfoundation/mediaplayer') 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 -- cgit v1.2.3