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);