Re: [PATCH] dbus: decode uri when sending PropertiesChanged
Rémi Denis-Courmont <[email protected]> Tue, 30 Sep 2025 19:51:22 +0300
| Newsgroups | gmane.comp.video.videolan.vlc.devel |
|---|---|
| Message-ID | <[email protected]> |
Le 30 septembre 2025 10:32:31 GMT+03:00, Conor Smith <[email protected]> a écrit : >Also updated out of date links to dbus and mpris documentation >--- > modules/control/dbus/dbus.c | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > >diff --git a/modules/control/dbus/dbus.c b/modules/control/dbus/dbus.c >index cc7eae5d6e..a102ae825c 100644 >--- a/modules/control/dbus/dbus.c >+++ b/modules/control/dbus/dbus.c >@@ -27,14 +27,14 @@ > > /* > * D-Bus Specification: >- * http://dbus.freedesktop.org/doc/dbus-specification.html >+ * https://dbus.freedesktop.org/doc/dbus-specification.html > * D-Bus low-level C API (libdbus) >- * http://dbus.freedesktop.org/doc/dbus/api/html/index.html >+ * https://dbus.freedesktop.org/doc/api/html/ > * extract: > * "If you use this low-level API directly, you're signing up for some pain." > * >- * MPRIS Specification version 1.0 >- * http://wiki.xmms2.xmms.se/index.php/MPRIS >+ * MPRIS Specification: >+ * https://specifications.freedesktop.org/mpris-spec/latest/ > */ > > /***************************************************************************** >@@ -61,6 +61,7 @@ > #include <vlc_meta.h> > #include <vlc_tick.h> > #include <vlc_fs.h> >+#include <vlc_url.h> > > #include <assert.h> > #include <limits.h> >@@ -1394,11 +1395,17 @@ int GetInputMeta(size_t index, vlc_playlist_item_t *item, DBusMessageIter *args) > dbus_int64_t i_mtime = input_item_GetDuration( p_input ); > dbus_uint32_t i_time = i_mtime / 1000000; > dbus_int64_t i_length = i_mtime / 1000; >- char *psz_trackid; >+ char *psz_trackid, *psz_uri, *decoded_uri; > > if (asprintf(&psz_trackid, MPRIS_TRACKID_FORMAT, index) == -1) > return VLC_ENOMEM; > >+ psz_uri = input_item_GetURI(p_input); >+ if((decoded_uri = vlc_uri_decode_duplicate(psz_uri))) >+ free(psz_uri); >+ else >+ decoded_uri = psz_uri; That can't be right. Decoding a URI is a non-reversible operation that potentially corrupts the URI. It only makes sense for display purpose, really. Also we don't accept patches via email any longer. >+ > const char* ppsz_meta_items[] = > { > "mpris:trackid", "xesam:url", "xesam:title", "xesam:artist", >@@ -1414,7 +1421,7 @@ int GetInputMeta(size_t index, vlc_playlist_item_t *item, DBusMessageIter *args) > dbus_message_iter_open_container( args, DBUS_TYPE_ARRAY, "{sv}", &dict ); > > ADD_META( 0, DBUS_TYPE_OBJECT_PATH, psz_trackid ); >- ADD_VLC_META_STRING( 1, URI ); >+ ADD_META( 1, DBUS_TYPE_STRING, decoded_uri); > ADD_VLC_META_STRING( 2, Title ); > ADD_META_SINGLETON_STRING_LIST( 3, Artist ); > ADD_VLC_META_STRING( 4, Album ); >@@ -1438,6 +1445,8 @@ int GetInputMeta(size_t index, vlc_playlist_item_t *item, DBusMessageIter *args) > ADD_VLC_META_STRING( 25, URL ); > > free( psz_trackid ); >+ if(decoded_uri != NULL) >+ free( decoded_uri ); > > vlc_mutex_lock( &p_input->lock ); > if( p_input->p_meta ) _______________________________________________ vlc-devel mailing list To unsubscribe or modify your subscription options: https://mailman.videolan.org/listinfo/vlc-devel