[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