[rhythmbox] header: update when streaming metadata changes (bug #600624)
- From: Jonathan Matthew <jmatthew src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [rhythmbox] header: update when streaming metadata changes (bug #600624)
- Date: Wed, 11 Nov 2009 13:04:28 +0000 (UTC)
commit caf38f8bbbadecb2c56e2e8f6fde8f85f8ef7563
Author: Jonathan Matthew <jonathan d14n org>
Date: Wed Nov 11 23:02:16 2009 +1000
header: update when streaming metadata changes (bug #600624)
Since commit 36af8332c75ba127e54bdbe9715d6e9b926f8183, no one has been
telling the header about streaming metadata changes, now it gets them
from the database directly.
widgets/rb-header.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/widgets/rb-header.c b/widgets/rb-header.c
index 915b071..e19a7fb 100644
--- a/widgets/rb-header.c
+++ b/widgets/rb-header.c
@@ -83,6 +83,7 @@ static void slider_changed_callback (GtkWidget *widget, RBHeader *header);
static gboolean slider_scroll_callback (GtkWidget *widget, GdkEventScroll *event, RBHeader *header);
static void rb_header_elapsed_changed_cb (RBShellPlayer *player, gint64 elapsed, RBHeader *header);
+static void rb_header_extra_metadata_cb (RhythmDB *db, RhythmDBEntry *entry, const char *property_name, const GValue *metadata, RBHeader *header);
struct RBHeaderPrivate
{
@@ -322,6 +323,10 @@ rb_header_set_property (GObject *object,
switch (prop_id) {
case PROP_DB:
header->priv->db = g_value_get_object (value);
+ g_signal_connect_object (header->priv->db,
+ "entry-extra-metadata-notify",
+ G_CALLBACK (rb_header_extra_metadata_cb),
+ header, 0);
break;
case PROP_SHELL_PLAYER:
header->priv->shell_player = g_value_get_object (value);
@@ -765,3 +770,20 @@ rb_header_elapsed_changed_cb (RBShellPlayer *player,
header->priv->elapsed_time = elapsed;
rb_header_sync_time (header);
}
+
+static void
+rb_header_extra_metadata_cb (RhythmDB *db,
+ RhythmDBEntry *entry,
+ const char *property_name,
+ const GValue *metadata,
+ RBHeader *header)
+{
+ if (entry != header->priv->entry)
+ return;
+
+ if (g_str_equal (property_name, RHYTHMDB_PROP_STREAM_SONG_TITLE) ||
+ g_str_equal (property_name, RHYTHMDB_PROP_STREAM_SONG_ARTIST) ||
+ g_str_equal (property_name, RHYTHMDB_PROP_STREAM_SONG_ALBUM)) {
+ rb_header_sync (header);
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]