Updating branch refs/heads/master
         to 72fb769f45eb7fffee6b19e10f433a09a53a7e5b (commit)
       from 0a615ceda5598df1ad8df7484f6d91ea463775e9 (commit)

commit 72fb769f45eb7fffee6b19e10f433a09a53a7e5b
Author: Vincent Legout <[email protected]>
Date:   Tue Jan 4 20:37:09 2011 +0100

    Add a new mpdclient signal total_time_changed
    
    Also update the time_changed signal to deliver only the elapsed song time
    without the total song time.
    
    This should fix bug #6937.

 src/interface.vala |    9 +++++++--
 src/mpdclient.c    |   25 +++++++++++++++++++------
 src/mpdclient.vapi |    3 ++-
 3 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/src/interface.vala b/src/interface.vala
index e7aca15..4eb4db6 100644
--- a/src/interface.vala
+++ b/src/interface.vala
@@ -123,6 +123,7 @@ namespace Xfmpc {
                        this.mpdclient.song_changed.connect (cb_song_changed);
                        this.mpdclient.pp_changed.connect (cb_pp_changed);
                        this.mpdclient.time_changed.connect (cb_time_changed);
+                       this.mpdclient.total_time_changed.connect 
(cb_total_time_changed);
                        this.mpdclient.volume_changed.connect 
(cb_volume_changed);
                        this.mpdclient.playlist_changed.connect 
(cb_playlist_changed);
                        this.mpdclient.stopped.connect (cb_stopped);
@@ -240,8 +241,12 @@ namespace Xfmpc {
                        cb_song_changed ();
                }
 
-               private void cb_time_changed (int time, int total_time) {
-                       set_time (time, total_time);
+               private void cb_time_changed (int time) {
+                       set_time (time, mpdclient.get_total_time());
+               }
+
+               private void cb_total_time_changed (int total_time) {
+                       set_time (mpdclient.get_time(), total_time);
                }
 
                private void cb_volume_changed (int volume) {
diff --git a/src/mpdclient.c b/src/mpdclient.c
index b8dade8..1867541 100644
--- a/src/mpdclient.c
+++ b/src/mpdclient.c
@@ -38,6 +38,7 @@ enum
   SIG_SONG_CHANGED,
   SIG_PP_CHANGED,
   SIG_TIME_CHANGED,
+  SIG_TOTAL_TIME_CHANGED,
   SIG_VOLUME_CHANGED,
   SIG_STOPPED,
   SIG_DATABASE_CHANGED,
@@ -77,7 +78,8 @@ struct _XfmpcMpdclientClass
   void (*connected)         (XfmpcMpdclient *mpdclient, gpointer user_data);
   void (*song_changed)      (XfmpcMpdclient *mpdclient, gpointer user_data);
   void (*pp_changed)        (XfmpcMpdclient *mpdclient, gboolean is_playing, 
gpointer user_data);
-  void (*time_changed)      (XfmpcMpdclient *mpdclient, gint time, gint 
total_time, gpointer user_data);
+  void (*time_changed)      (XfmpcMpdclient *mpdclient, gint time, gpointer 
user_data);
+  void (*total_time_changed)(XfmpcMpdclient *mpdclient, gint total_time, 
gpointer user_data);
   void (*volume_changed)    (XfmpcMpdclient *mpdclient, gint volume, gpointer 
user_data);
   void (*stopped)           (XfmpcMpdclient *mpdclient, gpointer user_data);
   void (*database_changed)  (XfmpcMpdclient *mpdclient, gpointer user_data);
@@ -183,9 +185,17 @@ xfmpc_mpdclient_class_init (XfmpcMpdclientClass *klass)
                   G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION,
                   G_STRUCT_OFFSET (XfmpcMpdclientClass, time_changed),
                   NULL, NULL,
-                  g_cclosure_marshal_VOID__UINT_POINTER,
-                  G_TYPE_NONE, 2,
-                  G_TYPE_INT,
+                  g_cclosure_marshal_VOID__INT,
+                  G_TYPE_NONE, 1,
+                  G_TYPE_INT);
+
+  signals[SIG_TOTAL_TIME_CHANGED] =
+    g_signal_new ("total-time-changed", G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION,
+                  G_STRUCT_OFFSET (XfmpcMpdclientClass, total_time_changed),
+                  NULL, NULL,
+                  g_cclosure_marshal_VOID__INT,
+                  G_TYPE_NONE, 1,
                   G_TYPE_INT);
 
   signals[SIG_VOLUME_CHANGED] =
@@ -773,9 +783,12 @@ cb_status_changed (MpdObj *mi,
     g_signal_emit (mpdclient, signals[SIG_VOLUME_CHANGED], 0,
                    xfmpc_mpdclient_get_volume (mpdclient));
 
-  if (what & (MPD_CST_ELAPSED_TIME|MPD_CST_TOTAL_TIME))
+  if (what & MPD_CST_ELAPSED_TIME)
     g_signal_emit (mpdclient, signals[SIG_TIME_CHANGED], 0,
-                   xfmpc_mpdclient_get_time (mpdclient),
+                   xfmpc_mpdclient_get_time (mpdclient));
+
+  if (what & MPD_CST_TOTAL_TIME)
+    g_signal_emit (mpdclient, signals[SIG_TOTAL_TIME_CHANGED], 0,
                    xfmpc_mpdclient_get_total_time (mpdclient));
 
   if (what & MPD_CST_REPEAT)
diff --git a/src/mpdclient.vapi b/src/mpdclient.vapi
index 833775e..bae52ee 100644
--- a/src/mpdclient.vapi
+++ b/src/mpdclient.vapi
@@ -56,7 +56,8 @@ namespace Xfmpc {
                public virtual signal void connected ();
                public virtual signal void song_changed ();
                public virtual signal void pp_changed (bool is_playing);
-               public virtual signal void time_changed (int time, int 
total_time);
+               public virtual signal void time_changed (int time);
+               public virtual signal void total_time_changed (int total_time);
                public virtual signal void volume_changed (int volume);
                public virtual signal void stopped ();
                public virtual signal void database_changed ();
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to