mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-05 09:00:54 +00:00
qmlglsrc: Fix deadlock when stopping
This fix makes sure that streaming thread stops waiting when the qmlglsrc element transitions from playing to paused. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3619>
This commit is contained in:
parent
4a99827d4c
commit
10fee807b9
3 changed files with 15 additions and 0 deletions
|
@ -513,6 +513,8 @@ gst_qt_src_change_state (GstElement * element, GstStateChange transition)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
|
||||
if (qt_src->window)
|
||||
qt_window_stop (qt_src->window);
|
||||
break;
|
||||
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
||||
break;
|
||||
|
|
|
@ -450,3 +450,15 @@ qt_window_use_default_fbo (QtGLWindow * qt_window, gboolean useDefaultFbo)
|
|||
|
||||
g_mutex_unlock (&qt_window->priv->lock);
|
||||
}
|
||||
|
||||
void
|
||||
qt_window_stop(QtGLWindow* qt_window)
|
||||
{
|
||||
g_mutex_lock(&qt_window->priv->lock);
|
||||
|
||||
GST_DEBUG("stop window");
|
||||
qt_window->priv->updated = TRUE;
|
||||
g_cond_signal(&qt_window->priv->update_cond);
|
||||
|
||||
g_mutex_unlock(&qt_window->priv->lock);
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ gboolean qt_window_set_context (QtGLWindow * qt_window, GstGLContext * co
|
|||
GstGLDisplay * qt_window_get_display (QtGLWindow * qt_window);
|
||||
gboolean qt_window_is_scenegraph_initialized (QtGLWindow * qt_window);
|
||||
void qt_window_use_default_fbo (QtGLWindow * qt_window, gboolean useDefaultFbo);
|
||||
void qt_window_stop(QtGLWindow* qt_window);
|
||||
}
|
||||
|
||||
#endif /* __QT_WINDOW_H__ */
|
||||
|
|
Loading…
Reference in a new issue