vlc | branch: master | Mirsal Ennaime <[email protected]> | Thu May 19 16:16:47 2011 +0200| [54ece28f9d1a3ff81b7393d40c375d2ee6c9b1e7] | committer: Mirsal Ennaime
dbus: Update the TrackList interface implementation * Remove legacy methods * Implement the GoTo method > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=54ece28f9d1a3ff81b7393d40c375d2ee6c9b1e7 --- modules/control/dbus/dbus_tracklist.c | 115 +++++++++++---------------------- 1 files changed, 38 insertions(+), 77 deletions(-) diff --git a/modules/control/dbus/dbus_tracklist.c b/modules/control/dbus/dbus_tracklist.c index e4454eb..8bf66dd 100644 --- a/modules/control/dbus/dbus_tracklist.c +++ b/modules/control/dbus/dbus_tracklist.c @@ -1,9 +1,9 @@ /***************************************************************************** - * dbus-tracklist.c : dbus control module (mpris v1.0) - /TrackList object + * dbus-tracklist.c : dbus control module (mpris v2.1) - TrackList interface ***************************************************************************** * Copyright © 2006-2011 Rafaël Carré * Copyright © 2007-2011 Mirsal Ennaime - * Copyright © 2009-2010 The VideoLAN team + * Copyright © 2009-2011 The VideoLAN team * $Id$ * * Authors: Mirsal Ennaime <mirsal at mirsal fr> @@ -68,21 +68,6 @@ DBUS_METHOD( AddTrack ) REPLY_SEND; } -DBUS_METHOD( GetCurrentTrack ) -{ - REPLY_INIT; - OUT_ARGUMENTS; - - playlist_t *p_playlist = PL; - - PL_LOCK; - dbus_int32_t i_position = PL->i_current_index; - PL_UNLOCK; - - ADD_INT32( &i_position ); - REPLY_SEND; -} - DBUS_METHOD( GetTracksMetadata ) { REPLY_INIT; @@ -95,7 +80,6 @@ DBUS_METHOD( GetTracksMetadata ) input_item_t *p_input = NULL; DBusMessageIter in_args, track_ids, meta; - dbus_message_iter_init( p_from, &in_args ); if( DBUS_TYPE_ARRAY != dbus_message_iter_get_arg_type( &in_args ) ) @@ -139,34 +123,19 @@ DBUS_METHOD( GetTracksMetadata ) REPLY_SEND; } -DBUS_METHOD( GetLength ) +DBUS_METHOD( GoTo ) { REPLY_INIT; - OUT_ARGUMENTS; - playlist_t *p_playlist = PL; - - PL_LOCK; - dbus_int32_t i_elements = PL->current.i_size; - PL_UNLOCK; - - ADD_INT32( &i_elements ); - REPLY_SEND; -} -DBUS_METHOD( RemoveTrack ) -{ - REPLY_INIT; + int i_track_id = -1; + const char *psz_track_id = NULL; + playlist_t *p_playlist = PL; DBusError error; dbus_error_init( &error ); - int i_id = -1, i; - char *psz_id = NULL; - playlist_t *p_playlist = PL; - input_item_t *p_input = NULL; - dbus_message_get_args( p_from, &error, - DBUS_TYPE_OBJECT_PATH, &psz_id, + DBUS_TYPE_OBJECT_PATH, &psz_track_id, DBUS_TYPE_INVALID ); if( dbus_error_is_set( &error ) ) @@ -177,21 +146,21 @@ DBUS_METHOD( RemoveTrack ) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - if( 1 != sscanf( psz_id, MPRIS_TRACKID_FORMAT, &i_id ) ) + if( 1 != sscanf( psz_track_id, MPRIS_TRACKID_FORMAT, &i_track_id ) ) { - msg_Err( (vlc_object_t*) p_this, "Invalid track id: %s", psz_id ); + msg_Err( (vlc_object_t*) p_this, "Invalid track id %s", psz_track_id ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } PL_LOCK; - for( i = 0; i < playlist_CurrentSize( p_playlist ); i++ ) + for( int i = 0; i < playlist_CurrentSize( p_playlist ); i++ ) { - p_input = p_playlist->current.p_elems[i]->p_input; - - if( i_id == p_input->i_id ) + if( i_track_id == p_playlist->current.p_elems[i]->p_input->i_id ) { - playlist_DeleteFromInput( p_playlist, p_input, true ); + playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, true, + p_playlist->current.p_elems[i]->p_parent, + p_playlist->current.p_elems[i] ); break; } } @@ -200,17 +169,20 @@ DBUS_METHOD( RemoveTrack ) REPLY_SEND; } -DBUS_METHOD( SetLoop ) +DBUS_METHOD( RemoveTrack ) { REPLY_INIT; - OUT_ARGUMENTS; DBusError error; - dbus_bool_t b_loop; - dbus_error_init( &error ); + + int i_id = -1, i; + char *psz_id = NULL; + playlist_t *p_playlist = PL; + input_item_t *p_input = NULL; + dbus_message_get_args( p_from, &error, - DBUS_TYPE_BOOLEAN, &b_loop, + DBUS_TYPE_OBJECT_PATH, &psz_id, DBUS_TYPE_INVALID ); if( dbus_error_is_set( &error ) ) @@ -221,34 +193,26 @@ DBUS_METHOD( SetLoop ) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - var_SetBool( PL, "loop", ( b_loop == TRUE ) ); - - REPLY_SEND; -} - -DBUS_METHOD( SetRandom ) -{ - REPLY_INIT; - OUT_ARGUMENTS; - - DBusError error; - dbus_bool_t b_random; - - dbus_error_init( &error ); - dbus_message_get_args( p_from, &error, - DBUS_TYPE_BOOLEAN, &b_random, - DBUS_TYPE_INVALID ); - - if( dbus_error_is_set( &error ) ) + if( 1 != sscanf( psz_id, MPRIS_TRACKID_FORMAT, &i_id ) ) { - msg_Err( (vlc_object_t*) p_this, "D-Bus message reading : %s", - error.message ); - dbus_error_free( &error ); + msg_Err( (vlc_object_t*) p_this, "Invalid track id: %s", psz_id ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - var_SetBool( PL, "random", ( b_random == TRUE ) ); + PL_LOCK; + for( i = 0; i < playlist_CurrentSize( p_playlist ); i++ ) + { + p_input = p_playlist->current.p_elems[i]->p_input; + + if( i_id == p_input->i_id ) + { + playlist_DeleteFromInput( p_playlist, p_input, true ); + break; + } + } + + PL_UNLOCK; REPLY_SEND; } @@ -288,12 +252,9 @@ handle_tracklist ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this ) /* here D-Bus method names are associated to an handler */ METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetTracksMetadata", GetTracksMetadata ); - METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetCurrentTrack", GetCurrentTrack ); - METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetLength", GetLength ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "AddTrack", AddTrack ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "RemoveTrack", RemoveTrack ); - METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "SetLoop", SetLoop ); - METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "SetRandom", SetRandom ); + METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GoTo", GoTo ); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
