vlc | branch: master | Alex Merry <[email protected]> | Mon Jan 28 11:54:15 2013 +0000| [ad8039e3e3b910730e71921b9f8952107644695a] | committer: Mirsal Ennaime
Fix MPRIS2 metadata entry types Several of these entries, such as xesam:artist, should be lists of strings, not strings. Signed-off-by: Mirsal Ennaime <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ad8039e3e3b910730e71921b9f8952107644695a --- modules/control/dbus/dbus.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/modules/control/dbus/dbus.c b/modules/control/dbus/dbus.c index e9dd35b..6f58bad 100644 --- a/modules/control/dbus/dbus.c +++ b/modules/control/dbus/dbus.c @@ -1147,10 +1147,32 @@ int DemarshalSetPropertyValue( DBusMessage *p_msg, void *p_arg ) free( psz ); \ } +#define ADD_META_SINGLETON_STRING_LIST( entry, item ) \ + { \ + char * psz = input_item_Get##item( p_input );\ + if( psz ) { \ + dbus_message_iter_open_container( &dict, DBUS_TYPE_DICT_ENTRY, \ + NULL, &dict_entry ); \ + dbus_message_iter_append_basic( &dict_entry, DBUS_TYPE_STRING, \ + &ppsz_meta_items[entry] ); \ + dbus_message_iter_open_container( &dict_entry, DBUS_TYPE_VARIANT, \ + "as", &variant ); \ + dbus_message_iter_open_container( &variant, DBUS_TYPE_ARRAY, "s", \ + &list ); \ + dbus_message_iter_append_basic( &list, \ + DBUS_TYPE_STRING, \ + &psz ); \ + dbus_message_iter_close_container( &variant, &list ); \ + dbus_message_iter_close_container( &dict_entry, &variant ); \ + dbus_message_iter_close_container( &dict, &dict_entry ); \ + } \ + free( psz ); \ + } + int GetInputMeta( input_item_t* p_input, DBusMessageIter *args ) { - DBusMessageIter dict, dict_entry, variant; + DBusMessageIter dict, dict_entry, variant, list; /** The duration of the track can be expressed in second, milli-seconds and ยต-seconds */ dbus_int64_t i_mtime = input_item_GetDuration( p_input ); @@ -1177,19 +1199,19 @@ int GetInputMeta( input_item_t* p_input, ADD_META( 0, DBUS_TYPE_OBJECT_PATH, psz_trackid ); ADD_VLC_META_STRING( 1, URI ); ADD_VLC_META_STRING( 2, Title ); - ADD_VLC_META_STRING( 3, Artist ); + ADD_META_SINGLETON_STRING_LIST( 3, Artist ); ADD_VLC_META_STRING( 4, Album ); ADD_VLC_META_STRING( 5, TrackNum ); ADD_META( 6, DBUS_TYPE_UINT32, i_time ); ADD_META( 7, DBUS_TYPE_INT64, i_mtime ); - ADD_VLC_META_STRING( 8, Genre ); - ADD_VLC_META_STRING( 9, Rating ); - ADD_VLC_META_STRING( 10, Date ); + ADD_META_SINGLETON_STRING_LIST( 8, Genre ); + //ADD_META( 9, DBUS_TYPE_DOUBLE, rating ); + ADD_VLC_META_STRING( 10, Date ); // this is supposed to be in ISO 8601 extended format ADD_VLC_META_STRING( 11, ArtURL ); ADD_VLC_META_STRING( 12, TrackID ); ADD_VLC_META_STRING( 17, Copyright ); - ADD_VLC_META_STRING( 18, Description ); + ADD_META_SINGLETON_STRING_LIST( 18, Description ); ADD_VLC_META_STRING( 19, EncodedBy ); ADD_VLC_META_STRING( 20, Language ); ADD_META( 21, DBUS_TYPE_INT64, i_length ); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
