diff options
author | Thibault Saunier <tsaunier@gnome.org> | 2015-09-23 11:42:51 +0200 |
---|---|---|
committer | Thibault Saunier <tsaunier@gnome.org> | 2015-09-23 12:08:18 +0200 |
commit | 3417a1507657505cae943d161282dc72982c2241 (patch) | |
tree | eb5771a5b166ecad932903dd725b8a52f536857f /ext/gtk | |
parent | a25253130b573c842805439e424eb048c1ef9bbc (diff) | |
download | gstreamer-plugins-bad-3417a1507657505cae943d161282dc72982c2241.tar.gz |
gtksink: Do not show window until we reach the PAUSED state
https://bugzilla.gnome.org/show_bug.cgi?id=755459
Diffstat (limited to 'ext/gtk')
-rw-r--r-- | ext/gtk/gstgtkbasesink.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/gtk/gstgtkbasesink.c b/ext/gtk/gstgtkbasesink.c index 0aeed1f35..6321bdaae 100644 --- a/ext/gtk/gstgtkbasesink.c +++ b/ext/gtk/gstgtkbasesink.c @@ -297,7 +297,6 @@ gst_gtk_base_sink_start (GstBaseSink * bsink) gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel); g_signal_connect (gst_sink->window, "destroy", G_CALLBACK (widget_destroy_cb), gst_sink); - gtk_widget_show_all (gst_sink->window); } return TRUE; @@ -317,6 +316,14 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink) return TRUE; } +static gboolean +_show_window_cb (GstGtkBaseSink * gtk_sink) +{ + gtk_widget_show_all (gtk_sink->window); + + return FALSE; +} + static GstStateChangeReturn gst_gtk_base_sink_change_state (GstElement * element, GstStateChange transition) { @@ -332,6 +339,12 @@ gst_gtk_base_sink_change_state (GstElement * element, GstStateChange transition) return ret; switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + GST_OBJECT_LOCK (gtk_sink); + if (gtk_sink->window) + g_idle_add ((GSourceFunc) _show_window_cb, gtk_sink); + GST_OBJECT_UNLOCK (gtk_sink); + break; case GST_STATE_CHANGE_PAUSED_TO_READY: GST_OBJECT_LOCK (gtk_sink); if (gtk_sink->widget) |