[vlc-devel] [PATCH] dbus: decode uri when sending PropertiesChanged
Conor Smith
conormartindale at gmail.com
Tue Sep 30 07:32:31 UTC 2025
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;
+
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 )
--
2.51.0
More information about the vlc-devel
mailing list