Updating branch refs/heads/master to 1a09d817662e5d3be8cae120d6c006d2c7b6760a (commit) from e4a9d4227f3251efc30709933d4a8078f0091e10 (commit)
commit 1a09d817662e5d3be8cae120d6c006d2c7b6760a Author: Ali Abdallah <al...@xfce.org> Date: Thu Jan 14 10:01:19 2010 +0100 For local media files, check the stream caps only when switching from ready to paused state. gst/parole-gst.c | 52 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 38 insertions(+), 14 deletions(-) diff --git a/gst/parole-gst.c b/gst/parole-gst.c index cb30a38..2f982e7 100644 --- a/gst/parole-gst.c +++ b/gst/parole-gst.c @@ -34,7 +34,7 @@ #include <gst/video/video.h> #include <libxfce4util/libxfce4util.h> -#include <libxfcegui4/libxfcegui4.h> +#include <libxfce4ui/libxfce4ui.h> #include <gdk/gdkx.h> @@ -630,8 +630,8 @@ parole_gst_query_capabilities (ParoleGst *gst) NULL, NULL); g_object_set (G_OBJECT (gst->priv->stream), - "seekable", seekable, - NULL); + "seekable", seekable, + NULL); } gst_query_unref (query); } @@ -931,9 +931,22 @@ parole_gst_evaluate_state (ParoleGst *gst, GstState old, GstState new, GstState } case GST_STATE_PAUSED: { - parole_gst_query_duration (gst); - parole_gst_query_capabilities (gst); - parole_gst_query_info (gst); + if ( pending == GST_STATE_PLAYING ) + { + ParoleMediaType media_type; + + g_object_get (G_OBJECT (gst->priv->stream), + "media-type", &media_type, + NULL); + + if ( (media_type == PAROLE_MEDIA_TYPE_LOCAL_FILE && old == GST_STATE_READY) || + media_type != PAROLE_MEDIA_TYPE_LOCAL_FILE ) + { + parole_gst_query_duration (gst); + parole_gst_query_capabilities (gst); + parole_gst_query_info (gst); + } + } if ( gst->priv->target == GST_STATE_PLAYING ) { @@ -953,7 +966,7 @@ parole_gst_evaluate_state (ParoleGst *gst, GstState old, GstState new, GstState g_signal_emit (G_OBJECT (gst), signals [MEDIA_STATE], 0, gst->priv->stream, PAROLE_MEDIA_STATE_STOPPED); - if ( gst->priv->target == GST_STATE_PLAYING && pending != GST_STATE_PLAYING) + if ( gst->priv->target == GST_STATE_PLAYING && pending < GST_STATE_PAUSED) { parole_gst_play_file_internal (gst); } @@ -1494,8 +1507,11 @@ parole_gst_check_state_change_timeout (gpointer data) if ( gst->priv->state != gst->priv->target ) { - gboolean ret_val = - xfce_confirm (_("The stream is taking too much time to load"), GTK_STOCK_OK, _("Stop")); + gboolean ret_val = xfce_dialog_confirm (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gst))), + GTK_STOCK_YES, + _("Stop"), + _("The stream is taking too much time to load"), + NULL); if ( ret_val ) { @@ -1684,9 +1700,13 @@ parole_gst_constructed (GObject *object) if ( G_UNLIKELY (gst->priv->playbin == NULL) ) { - xfce_err (_("Unable to load playbin GStreamer plugin" - ", check your GStreamer installation")); - + GError *error; + error = g_error_new (0, 0, "%s", _("Unable to load playbin GStreamer plugin" + ", check your GStreamer installation")); + + xfce_dialog_show_error (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gst))), + error, NULL); + g_error_free (error); g_error ("playbin load failed"); } @@ -1704,8 +1724,12 @@ parole_gst_constructed (GObject *object) if ( G_UNLIKELY (gst->priv->video_sink == NULL) ) { - xfce_err (_("Unable to load video GStreamer plugin" - ", check your GStreamer installation")); + GError *error; + error = g_error_new (0, 0, "%s", _("Unable to load video GStreamer plugin" + ", check your GStreamer installation")); + xfce_dialog_show_error (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gst))), + error, NULL); + g_error_free (error); g_error ("ximagesink load failed"); } } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits