rhythmbox r5737 - in trunk: . backends/gstreamer



Author: jmatthew
Date: Tue Jun 10 13:33:08 2008
New Revision: 5737
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=5737&view=rev

Log:
2008-06-10  Jonathan Matthew  <jonathan d14n org>

	* backends/gstreamer/rb-player-gst-xfade.c: (start_sink):
	While waiting for the sink to start, pass messages that aren't related
	to the sink back to the regular bus callback.  Fixes buffering status
	not being reported for streaming, and possibly other stuff.


Modified:
   trunk/ChangeLog
   trunk/backends/gstreamer/rb-player-gst-xfade.c

Modified: trunk/backends/gstreamer/rb-player-gst-xfade.c
==============================================================================
--- trunk/backends/gstreamer/rb-player-gst-xfade.c	(original)
+++ trunk/backends/gstreamer/rb-player-gst-xfade.c	Tue Jun 10 13:33:08 2008
@@ -2556,6 +2556,8 @@
 	GstStateChangeReturn sr;
 	gboolean waiting;
 	GError *generic_error = NULL;
+	GstBus *bus;
+
 	g_set_error (&generic_error,
 		     RB_PLAYER_ERROR,
 		     RB_PLAYER_ERROR_INTERNAL,		/* ? */
@@ -2596,14 +2598,14 @@
 
 		/* now wait for everything to finish */
 		waiting = TRUE;
+		bus = gst_element_get_bus (GST_ELEMENT (player->priv->pipeline));
 		while (waiting) {
 			GstMessage *message;
 			GstState oldstate;
 			GstState newstate;
 			GstState pending;
 
-			message = gst_bus_timed_pop (gst_element_get_bus (GST_ELEMENT (player->priv->pipeline)),
-						     GST_SECOND * 5);
+			message = gst_bus_timed_pop (bus, GST_SECOND * 5);
 			if (message == NULL) {
 				rb_debug ("sink is taking too long to start..");
 				g_propagate_error (error, generic_error);
@@ -2655,6 +2657,8 @@
 				break;
 
 			default:
+				rb_debug ("passing message to bus callback");
+				rb_player_gst_xfade_bus_cb (bus, message, player);
 				break;
 			}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]