* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
+/* MPRIS VERSION */
+#define VLC_MPRIS_VERSION_MAJOR 1
+#define VLC_MPRIS_VERSION_MINOR 0
+
/* DBUS IDENTIFIERS */
/* name registered on the session bus */
-#define VLC_DBUS_SERVICE "org.freedesktop.MediaPlayer"
-#define VLC_DBUS_INTERFACE "org.freedesktop.MediaPlayer"
-#define VLC_DBUS_ROOT_PATH "/"
-#define VLC_DBUS_PLAYER_PATH "/Player"
-#define VLC_DBUS_TRACKLIST_PATH "/TrackList"
+#define VLC_MPRIS_DBUS_SERVICE "org.mpris.vlc"
+#define MPRIS_DBUS_INTERFACE "org.freedesktop.MediaPlayer"
+#define MPRIS_DBUS_ROOT_PATH "/"
+#define MPRIS_DBUS_PLAYER_PATH "/Player"
+#define MPRIS_DBUS_TRACKLIST_PATH "/TrackList"
/* MACROS */
-/* DBus related */
#define DBUS_METHOD( method_function ) \
static DBusHandlerResult method_function \
- ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this )
+ ( DBusConnection *p_conn, DBusMessage *p_from, void *p_this )
#define DBUS_SIGNAL( signal_function ) \
static DBusHandlerResult signal_function \
return DBUS_HANDLER_RESULT_HANDLED
#define SIGNAL_INIT( signal ) \
- DBusMessage *p_msg = dbus_message_new_signal( VLC_DBUS_PLAYER_PATH, \
- VLC_DBUS_INTERFACE, 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; \
#define SIGNAL_SEND \
if( !dbus_connection_send( p_conn, p_msg, NULL ) ) \
- return DBUS_HANDLER_RESULT_NEED_MEMORY; \
+ return DBUS_HANDLER_RESULT_NEED_MEMORY; \
dbus_message_unref( p_msg ); \
dbus_connection_flush( p_conn ); \
return DBUS_HANDLER_RESULT_HANDLED
#define ADD_INT32( i ) DBUS_ADD( DBUS_TYPE_INT32, i )
#define ADD_BYTE( b ) DBUS_ADD( DBUS_TYPE_BYTE, b )
-/* VLC related */
-#define TEST_NEXT \
- p_tested_item = playlist_GetNextLeaf( p_playlist, \
- p_playlist->p_root_onelevel, p_tested_item, VLC_FALSE, VLC_FALSE );
-
/* XML data to answer org.freedesktop.DBus.Introspectable.Introspect requests */
const char* psz_introspection_xml_data_root =
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
-"<node>"
+"<node>\n"
+" <node name=\"Player\"/>\n"
+" <node name=\"TrackList\"/>\n"
" <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
" <method name=\"Introspect\">\n"
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
" <method name=\"Identity\">\n"
" <arg type=\"s\" direction=\"out\" />\n"
" </method>\n"
+" <method name=\"MprisVersion\">\n"
+" <arg type=\"(qq)\" direction=\"out\" />\n"
+" </method>\n"
+" <method name=\"Quit\">\n"
+" </method>\n"
" </interface>\n"
"</node>\n"
;
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
" </method>\n"
" </interface>\n"
-" <interface name=\"org.videolan.vlc\">\n"
+" <interface name=\"org.freedesktop.MediaPlayer\">\n"
" <method name=\"GetStatus\">\n"
-" <arg type=\"i\" direction=\"out\" />\n"
-" </method>\n"
-" <method name=\"Quit\">\n"
+" <arg type=\"(iiii)\" direction=\"out\" />\n"
" </method>\n"
" <method name=\"Prev\">\n"
" </method>\n"
" </method>\n"
" <method name=\"Pause\">\n"
" </method>\n"
+" <method name=\"Repeat\">\n"
+" <arg type=\"b\" direction=\"in\" />\n"
+" </method>\n"
" <method name=\"VolumeSet\">\n"
" <arg type=\"i\" direction=\"in\" />\n"
" </method>\n"
" <method name=\"GetMetadata\">\n"
" <arg type=\"a{sv}\" direction=\"out\" />\n"
" </method>\n"
+" <method name=\"GetCaps\">\n"
+" <arg type=\"i\" direction=\"out\" />\n"
+" </method>\n"
+" <signal name=\"TrackChange\">\n"
+" <arg type=\"a{sv}\"/>\n"
+" </signal>\n"
+" <signal name=\"StatusChange\">\n"
+" <arg type=\"(iiii)\"/>\n"
+" </signal>\n"
+" <signal name=\"CapsChange\">\n"
+" <arg type=\"i\"/>\n"
+" </signal>\n"
" </interface>\n"
"</node>\n"
;
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
" </method>\n"
" </interface>\n"
-" <interface name=\"org.videolan.vlc\">\n"
+" <interface name=\"org.freedesktop.MediaPlayer\">\n"
" <method name=\"AddTrack\">\n"
" <arg type=\"s\" direction=\"in\" />\n"
" <arg type=\"b\" direction=\"in\" />\n"
+" <arg type=\"i\" direction=\"out\" />\n"
" </method>\n"
" <method name=\"DelTrack\">\n"
" <arg type=\"i\" direction=\"in\" />\n"
" <method name=\"GetLength\">\n"
" <arg type=\"i\" direction=\"out\" />\n"
" </method>\n"
-" <method name=\"Loop\">\n"
+" <method name=\"SetLoop\">\n"
" <arg type=\"b\" direction=\"in\" />\n"
" </method>\n"
-" <method name=\"Repeat\">\n"
+" <method name=\"SetRandom\">\n"
" <arg type=\"b\" direction=\"in\" />\n"
" </method>\n"
+" <signal name=\"TrackListChange\">\n"
+" <arg type=\"i\" />\n"
+" </signal>\n"
" </interface>\n"
"</node>\n"
;
-#define VLC_DBUS_ROOT_PATH "/"
-#define VLC_DBUS_PLAYER_PATH "/Player"
-#define VLC_DBUS_TRACKLIST_PATH "/TrackList"
+#define MPRIS_DBUS_ROOT_PATH "/"
+#define MPRIS_DBUS_PLAYER_PATH "/Player"
+#define MPRIS_DBUS_TRACKLIST_PATH "/TrackList"
/* Handle messages reception */
DBUS_METHOD( handle_root );