qt/glrenderer: don't attempt to use QWindow from non-Qt main thread
authorMatthew Waters <matthew@centricular.com>
Mon, 29 May 2023 07:01:01 +0000 (17:01 +1000)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 31 May 2023 10:20:04 +0000 (11:20 +0100)
Use QObject::deleteLater() to schedule deletion in the main thread.

Remove the moveToThread of the QWindow.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4744>

subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc

index ce453a9..ef5270b 100644 (file)
@@ -152,7 +152,7 @@ shared_render_data_free (struct SharedRenderData * data)
     delete data->m_context;
   data->m_context = nullptr;
   if (data->m_surface)
-    delete data->m_surface;
+    data->m_surface->deleteLater();
   data->m_surface = nullptr;
 }
 
@@ -281,7 +281,6 @@ bool CreateSurfaceWorker::event(QEvent * ev)
         g_mutex_lock (&m_sharedRenderData->lock);
         m_sharedRenderData->m_surface = new GstBackingSurface;
         m_sharedRenderData->m_surface->create();
-        m_sharedRenderData->m_surface->moveToThread (m_sharedRenderData->m_renderThread);
         GST_TRACE ("%p created surface %p", m_sharedRenderData,
             m_sharedRenderData->m_surface);
         g_cond_broadcast (&m_sharedRenderData->cond);