Commit 7b77afbc authored by Mirsal Ennaime's avatar Mirsal Ennaime

dbus: Correctly implement the GetTracksMetadata method

parent 12ff3c04
...@@ -83,35 +83,59 @@ DBUS_METHOD( GetCurrentTrack ) ...@@ -83,35 +83,59 @@ DBUS_METHOD( GetCurrentTrack )
REPLY_SEND; REPLY_SEND;
} }
DBUS_METHOD( GetMetadata ) DBUS_METHOD( GetTracksMetadata )
{ {
REPLY_INIT; REPLY_INIT;
OUT_ARGUMENTS; OUT_ARGUMENTS;
DBusError error;
dbus_error_init( &error );
dbus_int32_t i_position; int i_track_id = -1;
playlist_t *p_playlist = PL; const char *psz_track_id = NULL;
dbus_message_get_args( p_from, &error, playlist_t *p_playlist = PL;
DBUS_TYPE_INT32, &i_position, input_item_t *p_input = NULL;
DBUS_TYPE_INVALID );
if( dbus_error_is_set( &error ) ) 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 ) )
{ {
msg_Err( (vlc_object_t*) p_this, "D-Bus message reading : %s", msg_Err( (vlc_object_t*) p_this, "Invalid arguments" );
error.message );
dbus_error_free( &error );
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
} }
PL_LOCK; dbus_message_iter_recurse( &in_args, &track_ids );
if( i_position < p_playlist->current.i_size ) dbus_message_iter_open_container( &args, DBUS_TYPE_ARRAY, "a{sv}", &meta );
while( DBUS_TYPE_OBJECT_PATH ==
dbus_message_iter_get_arg_type( &track_ids ) )
{ {
GetInputMeta( p_playlist->current.p_elems[i_position]->p_input, &args ); dbus_message_iter_get_basic( &track_ids, &psz_track_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_track_id );
continue;
}
PL_LOCK;
for( int i = 0; i < playlist_CurrentSize( p_playlist ); i++ )
{
p_input = p_playlist->current.p_elems[i]->p_input;
if( i_track_id == p_input->i_id )
{
GetInputMeta( p_input, &meta );
break;
}
}
PL_UNLOCK;
dbus_message_iter_next( &track_ids );
} }
PL_UNLOCK; dbus_message_iter_close_container( &args, &meta );
REPLY_SEND; REPLY_SEND;
} }
...@@ -263,7 +287,7 @@ handle_tracklist ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this ) ...@@ -263,7 +287,7 @@ handle_tracklist ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this )
/* here D-Bus method names are associated to an handler */ /* here D-Bus method names are associated to an handler */
METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetMetadata", GetMetadata ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetTracksMetadata", GetTracksMetadata );
METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetCurrentTrack", GetCurrentTrack ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetCurrentTrack", GetCurrentTrack );
METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetLength", GetLength ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "GetLength", GetLength );
METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "AddTrack", AddTrack ); METHOD_FUNC( DBUS_MPRIS_TRACKLIST_INTERFACE, "AddTrack", AddTrack );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment