From 3010af22c9d1c0559505da179b22822008b03fd8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Thu, 1 Feb 2007 19:12:45 +0000 Subject: [PATCH] D-Bus Patch by Mirsal ENNAIME --- THANKS | 3 ++- modules/control/dbus.c | 61 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/THANKS b/THANKS index 5cb6d3fb77..e8dd1e2d98 100644 --- a/THANKS +++ b/THANKS @@ -117,7 +117,7 @@ Mateus Krepsky Ludwich - rc interface mosaic-orde Mathias C. Berens | welcome-soft - German translation Mathias Kretschmer - IP Multicast support Mats Rojestal - compilation fixes for Solaris 9 -Matthieu Lochegnies - MPEG audio emphasis fix +Matthieu Lochegnies - MPEG audio emphasis fix Max Rudberg - Mac OS X controller art (v0.7.0) Michael Mondragon - ncurses compilation fix Mickael Hoerdt - IPv6 SSM multicast patch @@ -125,6 +125,7 @@ Mike Schrag - directx device selection Mikko Hirvonen - Firefox-1.5.x development configure patch Michel Lanners - fixed typos and AltiVec detection Miroslav Oujeský - Czech translation +Mirsal Ennaime - D-Bus amelioration Moritz Bunkus - Matroska patches Morten Brix Pedersen - Danish translation Nilmoni Deb - autoconf and Makefile fixes diff --git a/modules/control/dbus.c b/modules/control/dbus.c index cb9bbce2d8..ab3bdbd3f5 100644 --- a/modules/control/dbus.c +++ b/modules/control/dbus.c @@ -58,6 +58,7 @@ #include #include + /***************************************************************************** * Local prototypes. *****************************************************************************/ @@ -371,11 +372,25 @@ DBUS_METHOD( AddTrack ) } DBUS_METHOD( GetCurrentTrack ) -{ //TODO +{ REPLY_INIT; OUT_ARGUMENTS; dbus_int32_t i_position = 0; - //TODO get position of playing element + playlist_t *p_playlist = pl_Yield( (vlc_object_t*) p_this ); + playlist_item_t* p_tested_item = p_playlist->p_root_onelevel; + + while ( p_tested_item->i_id != p_playlist->status.p_item->i_id ) + { + i_position++; + p_tested_item = playlist_GetNextLeaf( p_playlist, + p_playlist->p_root_onelevel, + p_tested_item, + VLC_FALSE, + VLC_FALSE ); + } + + pl_Release( p_playlist ); + ADD_INT32( &i_position ); REPLY_SEND; } @@ -407,23 +422,42 @@ DBUS_METHOD( GetMetadata ) } DBUS_METHOD( GetLength ) -{ //TODO +{ REPLY_INIT; OUT_ARGUMENTS; + dbus_int32_t i_elements = 0; - //TODO: return number of elements in playlist + playlist_t *p_playlist = pl_Yield( (vlc_object_t*) p_this ); + playlist_item_t* p_tested_item = p_playlist->p_root_onelevel; + playlist_item_t* p_last_item = playlist_GetLastLeaf( p_playlist, p_playlist->p_root_onelevel ); + + while ( p_tested_item->i_id != p_last_item->i_id ) + { + i_elements++; + p_tested_item = playlist_GetNextLeaf( p_playlist, + p_playlist->p_root_onelevel, + p_tested_item, + VLC_FALSE, + VLC_FALSE ); + } + + pl_Release( p_playlist ); + ADD_INT32( &i_elements ); REPLY_SEND; } DBUS_METHOD( DelTrack ) -{ //TODO +{ + /*FIXME: Doesn't work.*/ REPLY_INIT; DBusError error; dbus_error_init( &error ); - dbus_int32_t i_position; + dbus_int32_t i_position, i_count = 0; + playlist_t *p_playlist = pl_Yield( (vlc_object_t*) p_this ); + playlist_item_t* p_tested_item = p_playlist->p_root_onelevel; dbus_message_get_args( p_from, &error, DBUS_TYPE_INT32, &i_position, @@ -436,8 +470,21 @@ DBUS_METHOD( DelTrack ) dbus_error_free( &error ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } + + while ( i_count < i_position ) + { + i_count++; + p_tested_item = playlist_GetNextLeaf( p_playlist, + p_playlist->p_root_onelevel, + p_tested_item, + VLC_FALSE, + VLC_FALSE ); + } - //TODO delete the element + playlist_NodeRemoveItem( p_playlist, + p_tested_item, + p_playlist->p_root_onelevel ); + pl_Release( p_playlist ); REPLY_SEND; } -- 2.39.2