diff -Naur rhythmbox-0.8.8/data/rhythmbox.schemas rhythmbox/data/rhythmbox.schemas --- rhythmbox-0.8.8/data/rhythmbox.schemas 2004-04-15 16:50:00.000000000 -0400 +++ rhythmbox/data/rhythmbox.schemas 2005-04-22 16:47:28.000000000 -0400 @@ -251,6 +251,19 @@ String used for filtering radio view. + + + /schemas/apps/rhythmbox/state/iradio/buffer_size + /apps/rhythmbox/state/iradio/buffer_size + rhythmbox + int + 64 + + Integer indicating buffer size in kilobytes + Integer indicating buffer size in kilobytes. Setting it to larger values should prevent glitches during streaming. + + + /schemas/apps/rhythmbox/state/iradio/show_browser /apps/rhythmbox/state/iradio/show_browser diff -Naur rhythmbox-0.8.8/player/rb-player-gst.c rhythmbox/player/rb-player-gst.c --- rhythmbox-0.8.8/player/rb-player-gst.c 2004-09-27 13:25:14.000000000 -0400 +++ rhythmbox/player/rb-player-gst.c 2005-04-22 18:36:23.522120853 -0400 @@ -39,6 +39,8 @@ #include "rb-debug.h" #include "rb-marshal.h" +#define CONF_STATE_BUFFER_SIZE "/apps/rhythmbox/state/iradio/buffer_size" + static void rb_player_class_init (RBPlayerClass *klass); static void rb_player_init (RBPlayer *mp); static void rb_player_finalize (GObject *object); @@ -439,6 +441,7 @@ { GstDParamManager *dpman; char *element_name = NULL; + int buffer_size = 64; #define MAKE_ELEMENT_OR_LOSE(NAME, NICE) G_STMT_START { \ element_name = #NAME ;\ @@ -510,7 +513,10 @@ mp->priv->queue = gst_element_factory_make (element_name, element_name); if (mp->priv->queue == NULL) goto missing_element; - g_object_set (G_OBJECT (mp->priv->queue), "max-size-bytes", 64 * 1024, NULL); + + buffer_size = eel_gconf_get_integer(CONF_STATE_BUFFER_SIZE); + + g_object_set (G_OBJECT (mp->priv->queue), "max-size-bytes", buffer_size * 1024, NULL); g_signal_connect_object (G_OBJECT (mp->priv->queue), "overrun", G_CALLBACK (queue_full_cb), mp, 0); gst_bin_add (GST_BIN (mp->priv->srcthread), mp->priv->queue);