[Xfce4-commits] <xfce4-mpc-plugin:master> wip on MpdData output/song

Landry Breuil noreply at xfce.org
Sat May 15 00:18:04 CEST 2010


Updating branch refs/heads/master
         to d4c56c062c3918c3ab112d9bb578d2f27ec026e2 (commit)
       from c33b5635fe368f7f38f4568185aa14ff4c7d8198 (commit)

commit d4c56c062c3918c3ab112d9bb578d2f27ec026e2
Author: Landry Breuil <landry at xfce.org>
Date:   Fri May 14 18:39:32 2010 +0200

    wip on MpdData output/song
    
    - skeleton for parse_outputs_answer()
    - basic implem for mpd_server_get_output_devices() ripped from mpd_playlist_get_current_song()
    - switch on md->type in mpd_data_get_next() to correctly work on output/song

 panel-plugin/simple-libmpd.c |   49 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/panel-plugin/simple-libmpd.c b/panel-plugin/simple-libmpd.c
index 232591e..c597634 100644
--- a/panel-plugin/simple-libmpd.c
+++ b/panel-plugin/simple-libmpd.c
@@ -434,6 +434,12 @@ void parse_playlistinfo_answer(MpdObj *mo, void *param)
    DBG("Got 'OK', md->nb = %d", md->nb);
 }
 
+void parse_outputs_answer(MpdObj *mo, void *param)
+{
+   MpdData* md = (MpdData*) param;
+   mpd_Song* ms;
+}
+
 mpd_Song* mpd_playlist_get_current_song(MpdObj* mo)
 {
    DBG("!");
@@ -471,6 +477,7 @@ MpdData* mpd_playlist_get_changes(MpdObj* mo, int old_playlist_id)
 {
    MpdData* md = g_new0(MpdData,1);
    md->cur = md->nb = 0;
+   md->type = MPD_DATA_TYPE_SONG;
    md->allsongs = g_new(mpd_Song, mo->playlistlength);
    DBG("!");
    send_complex_cmd(mo, "playlistinfo\n", parse_playlistinfo_answer, (void*) md);
@@ -486,23 +493,51 @@ MpdData* mpd_data_get_next(MpdData* md)
    {
       for (md->cur--; md->cur; md->cur--)
       {
-         if (md->allsongs[md->cur].file) free(md->allsongs[md->cur].file);
-         if (md->allsongs[md->cur].artist) free(md->allsongs[md->cur].artist);
-         if (md->allsongs[md->cur].album) free(md->allsongs[md->cur].album);
-         if (md->allsongs[md->cur].title) free(md->allsongs[md->cur].title);
-         if (md->allsongs[md->cur].track) free(md->allsongs[md->cur].track);
+         switch (md->type) {
+            case MPD_DATA_TYPE_OUTPUT_DEV:
+            if (md->alloutputs[md->cur].name) free(md->alloutputs[md->cur].name);
+            break;
+            case MPD_DATA_TYPE_SONG:
+            if (md->allsongs[md->cur].file) free(md->allsongs[md->cur].file);
+            if (md->allsongs[md->cur].artist) free(md->allsongs[md->cur].artist);
+            if (md->allsongs[md->cur].album) free(md->allsongs[md->cur].album);
+            if (md->allsongs[md->cur].title) free(md->allsongs[md->cur].title);
+            if (md->allsongs[md->cur].track) free(md->allsongs[md->cur].track);
+            break;
+         }
+      }
+      switch (md->type) {
+         case MPD_DATA_TYPE_OUTPUT_DEV:
+            g_free(md->alloutputs);
+            break;
+         case MPD_DATA_TYPE_SONG:
+            g_free(md->allsongs);
+            break;
       }
-      g_free(md->allsongs);
       g_free(md);
       DBG("Free()'d md");
       return NULL;
    }
-   md->song = (&md->allsongs[md->cur]);
+   switch (md->type) {
+      case MPD_DATA_TYPE_OUTPUT_DEV:
+         md->output_dev = (&md->alloutputs[md->cur]);
+         break;
+      case MPD_DATA_TYPE_SONG:
+         md->song = (&md->allsongs[md->cur]);
+         break;
+   }
    return md;
 }
 
 MpdData* mpd_server_get_output_devices(MpdObj* mo)
 {
+   MpdData* md = g_new0(MpdData,1);
+   DBG("!");
+   md->cur = md->nb = 0;
+   md->type = MPD_DATA_TYPE_OUTPUT_DEV;
+   send_complex_cmd(mo, "outputs\n", parse_outputs_answer, (void*) md);
+   md->output_dev = &(md->alloutputs[0]);
+   return ((!mo->error) ? md : NULL);
 }
 
 int mpd_server_set_output_device (MpdObj* mo, int id, int state)



More information about the Xfce4-commits mailing list