Re: [Rhythmbox-devel] 0.6 still hangs when reacing end of playlist



On Wed, 2003-11-12 at 22:21, Bastien Nocera wrote:
> On Wed, 2003-11-12 at 19:31, tdrobinson@huli.org wrote:
> > Just updating on the message below.  The new version 0.6 still hangs when
> > reaching the end of a playlist.  There is a reply to the message below of
> > someone verifying the hang.
> > 
> > http://mail.gnome.org/archives/rhythmbox-devel/2003-October/msg00242.html
> 
> Get us a backtrace of the hang, otherwise there's absolutely nothing I
> can do for you.
> 
> 1) Get the PID
> $ ps aux | grep rhythmbox
> 2) Launch gdb with 12345 being the PID of rhythmbox
> $ gdb attach 12345
> 3) Get rhythmbox going again
> gdb) continue
> 4) Stop RB by pressing Ctrl+C
> 5) Get a backtrace
> gdb) bt thread apply all
> 6) Send that into bugzilla, if it's not in bugzilla, it doesn't exist.

Here's a small update for the xine backend. It might fix the hang people
were seeing at the end of the playlist, also fixes the song changes
taking quite a bit of time. Finally, it reduces the memory usage needed
for decoding.

Cheers

---
Bastien Nocera <hadess@hadess.net> 
It hurt the way your tongue hurts after you accidentally staple it to
the wall. 
Index: monkey-media/monkey-media-player-xine.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/monkey-media/monkey-media-player-xine.c,v
retrieving revision 1.9
diff -u -r1.9 monkey-media-player-xine.c
--- monkey-media/monkey-media-player-xine.c	22 Oct 2003 00:40:17 -0000	1.9
+++ monkey-media/monkey-media-player-xine.c	14 Nov 2003 09:43:32 -0000
@@ -301,6 +301,7 @@
 			       GError **error)
 {
 	const char *audio_driver;
+	xine_cfg_entry_t entry;
 
 	mp->priv->xine = xine_new ();
 
@@ -339,6 +340,20 @@
 	mp->priv->video_driver = xine_open_video_driver (mp->priv->xine, "none",
 							 XINE_VISUAL_TYPE_NONE, NULL);
 
+	/* Reduce the number of buffers to lower the memory usage */
+	memset (&entry, 0, sizeof (entry));
+	if (!xine_config_lookup_entry (mp->priv->xine,
+				"video.num_buffers", &entry))
+	{
+		xine_config_register_num (mp->priv->xine,
+				"video.num_buffers", 5, 0, NULL, 10,
+				NULL, NULL);
+		xine_config_lookup_entry (mp->priv->xine,
+				"video.num_buffers", &entry);
+	}
+	entry.num_value = 5;
+	xine_config_update_entry (mp->priv->xine, &entry);
+
 	mp->priv->stream = xine_stream_new (mp->priv->xine,
 				            mp->priv->audio_driver,
 				            mp->priv->video_driver);
@@ -397,6 +412,7 @@
 
 	g_return_if_fail (MONKEY_MEDIA_IS_PLAYER (mp));
 
+	xine_stop (mp->priv->stream);
 	xine_close (mp->priv->stream);
 
 	g_free (mp->priv->uri);


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