[rhythmbox] switch streaming sources over to playback status to report buffering



commit e1f7b99bc4b5e41d31c000445dc4010cba161b67
Author: Jonathan Matthew <jonathan d14n org>
Date:   Sat Mar 23 23:48:25 2013 +1000

    switch streaming sources over to playback status to report buffering

 .../rb-audioscrobbler-radio-source.c               |   12 ++++++++----
 plugins/iradio/rb-iradio-source.c                  |    9 ++++++++-
 sources/rb-streaming-source.c                      |    2 +-
 3 files changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c 
b/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
index b0ddd52..346e963 100644
--- a/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
+++ b/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
@@ -225,6 +225,7 @@ static void impl_remove (RBDisplayPage *page);
 /* RBSource implementations */
 static RBEntryView *impl_get_entry_view (RBSource *asource);
 static RBSourceEOFType impl_handle_eos (RBSource *asource);
+static void impl_get_playback_status (RBSource *source, char **text, float *progress);
 
 enum {
        PROP_0,
@@ -311,6 +312,7 @@ rb_audioscrobbler_radio_source_class_init (RBAudioscrobblerRadioSourceClass *kla
        source_class->impl_try_playlist = (RBSourceFeatureFunc) rb_false_function;
        source_class->impl_get_entry_view = impl_get_entry_view;
        source_class->impl_handle_eos = impl_handle_eos;
+       source_class->impl_get_playback_status = impl_get_playback_status;
 
        g_object_class_install_property (object_class,
                                         PROP_PARENT,
@@ -1016,19 +1018,21 @@ static void
 impl_get_status (RBDisplayPage *page, char **text, char **progress_text, float *progress)
 {
        RBAudioscrobblerRadioSource *source = RB_AUDIOSCROBBLER_RADIO_SOURCE (page);
-
-       /* pulse progressbar if we're busy, otherwise see what the streaming source part of us has to say */
        if (source->priv->is_busy) {
                /* We could be calling either radio.tune or radio.getPlaylist methods.
                 * "Tuning station" seems like a user friendly message to display for both cases.
                 */
                *progress_text = g_strdup (_("Tuning station"));
                *progress = -1.0f;
-       } else {
-               rb_streaming_source_get_progress (RB_STREAMING_SOURCE (source), progress_text, progress);
        }
 }
 
+static void
+impl_get_playback_status (RBSource *source, char **text, float *progress)
+{
+       rb_streaming_source_get_progress (RB_STREAMING_SOURCE (source), text, progress);
+}
+
 static RBSourceEOFType
 impl_handle_eos (RBSource *asource)
 {
diff --git a/plugins/iradio/rb-iradio-source.c b/plugins/iradio/rb-iradio-source.c
index da2de04..5118201 100644
--- a/plugins/iradio/rb-iradio-source.c
+++ b/plugins/iradio/rb-iradio-source.c
@@ -106,6 +106,7 @@ static void impl_add_uri (RBSource *source,
                          RBSourceAddCallback callback,
                          gpointer data,
                          GDestroyNotify destroy_data);
+static void impl_get_playback_status (RBSource *source, char **text, float *progress);
 
 static void rb_iradio_source_do_query (RBIRadioSource *source);
 static void impl_reset_filters (RBSource *source);
@@ -206,6 +207,7 @@ rb_iradio_source_class_init (RBIRadioSourceClass *klass)
        source_class->impl_song_properties = impl_song_properties;
        source_class->impl_want_uri = impl_want_uri;
        source_class->impl_add_uri = impl_add_uri;
+       source_class->impl_get_playback_status = impl_get_playback_status;
 
        g_object_class_override_property (object_class,
                                          PROP_SHOW_BROWSER,
@@ -615,7 +617,12 @@ impl_get_status (RBDisplayPage *page,
        *text = g_strdup_printf (ngettext ("%d station", "%d stations", num_entries),
                                 num_entries);
 
-       rb_streaming_source_get_progress (RB_STREAMING_SOURCE (source), progress_text, progress);
+}
+
+static void
+impl_get_playback_status (RBSource *source, char **text, float *progress)
+{
+       rb_streaming_source_get_progress (RB_STREAMING_SOURCE (source), text, progress);
 }
 
 static void
diff --git a/sources/rb-streaming-source.c b/sources/rb-streaming-source.c
index 0e18031..6ce25de 100644
--- a/sources/rb-streaming-source.c
+++ b/sources/rb-streaming-source.c
@@ -232,7 +232,7 @@ buffering_cb (GObject *backend, gpointer whatever, guint progress, RBStreamingSo
 
        GDK_THREADS_ENTER ();
        source->priv->buffering = progress;
-       rb_display_page_notify_status_changed (RB_DISPLAY_PAGE (source));
+       rb_source_notify_playback_status_changed (RB_SOURCE (source));
        GDK_THREADS_LEAVE ();
 }
 


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