Dbus TrackListChange signal
According to http://wiki.xmms2.xmms.se/wiki/MPRIS#TrackListChange the TrackListChange signal must be emmited from the /TrackList object path.
Actually the TrackListChange signal is emmited by the /Player object path.
Here is the code of the TrackListChange signal
DBUS_SIGNAL( TrackListChangeSignal )
{ /* emit the new tracklist lengh */
SIGNAL_INIT("TrackListChange");
OUT_ARGUMENTS;
/* XXX: locking */
dbus_int32_t i_elements = ((intf_thread_t*)p_data)->p_sys->p_playlist->current.i_size;
ADD_INT32( &i_elements );
SIGNAL_SEND;
}
The bug comes from the SIGNAL_INIT macro that always use /Player object path as parameter for new signal message creation.
#define SIGNAL_INIT( signal ) \
DBusMessage *p_msg = dbus_message_new_signal( MPRIS_DBUS_PLAYER_PATH, \
MPRIS_DBUS_INTERFACE, signal ); \
if( !p_msg ) return DBUS_HANDLER_RESULT_NEED_MEMORY; \