qt/gloverlay: fix using OpenGL after destroying Qml
authorMatthew Waters <matthew@centricular.com>
Thu, 18 Jun 2020 09:12:46 +0000 (19:12 +1000)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 10 Jul 2020 06:11:48 +0000 (06:11 +0000)
Qml somewhat unhelpfully seems to uncurrent our OpenGL context on its
destruction.  Work around that by uncurrenting and recurrenting again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/632>

ext/qt/qtglrenderer.cc

index 6e337cd..42669d8 100644 (file)
@@ -504,6 +504,11 @@ void GstQuickRenderer::stopGL ()
     if (m_sharedRenderData)
         shared_render_data_unref (m_sharedRenderData);
     m_sharedRenderData = NULL;
+
+    /* XXX: reset the OpenGL context and drawable as Qt may have clobbered it.
+     * Fixes any attempt to access OpenGL after shutting down qmlgloverlay. */
+    gst_gl_context_activate (gl_context, FALSE);
+    gst_gl_context_activate (gl_context, TRUE);
 }
 
 void GstQuickRenderer::cleanup()