[vlc-devel] [PATCH 8/8] Add CanGoNext/Previous to D-Bus interface

Alex Merry dev at randomguy3.me.uk
Mon Jan 28 12:54:17 CET 2013


These are required by the spec.  We just set them to true, to match the
fact that the buttons on the main interface are never disabled.
---
 modules/control/dbus/dbus_player.c | 62 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/modules/control/dbus/dbus_player.c b/modules/control/dbus/dbus_player.c
index 23f1554..005110f 100644
--- a/modules/control/dbus/dbus_player.c
+++ b/modules/control/dbus/dbus_player.c
@@ -312,6 +312,64 @@ DBUS_METHOD( OpenUri )
 }
 
 static int
+MarshalCanGoNext( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+    VLC_UNUSED( p_intf );
+
+    dbus_bool_t b_can_go_next = TRUE;
+
+    dbus_message_iter_append_basic( container, DBUS_TYPE_BOOLEAN, &b_can_go_next );
+    return VLC_SUCCESS;
+}
+
+DBUS_METHOD( CanGoNext )
+{
+    REPLY_INIT;
+    OUT_ARGUMENTS;
+
+    DBusMessageIter v;
+
+    if( !dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "b", &v ) )
+        return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+    MarshalCanGoNext( p_this, &v );
+
+    if( !dbus_message_iter_close_container( &args, &v ) )
+        return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+    REPLY_SEND;
+}
+
+static int
+MarshalCanGoPrevious( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+    VLC_UNUSED( p_intf );
+
+    dbus_bool_t b_can_go_previous = TRUE;
+
+    dbus_message_iter_append_basic( container, DBUS_TYPE_BOOLEAN, &b_can_go_previous );
+    return VLC_SUCCESS;
+}
+
+DBUS_METHOD( CanGoPrevious )
+{
+    REPLY_INIT;
+    OUT_ARGUMENTS;
+
+    DBusMessageIter v;
+
+    if( !dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "b", &v ) )
+        return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+    MarshalCanGoPrevious( p_this, &v );
+
+    if( !dbus_message_iter_close_container( &args, &v ) )
+        return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+    REPLY_SEND;
+}
+
+static int
 MarshalCanPlay( intf_thread_t *p_intf, DBusMessageIter *container )
 {
     playlist_t *p_playlist = p_intf->p_sys->p_playlist;
@@ -824,6 +882,8 @@ DBUS_METHOD( GetProperty )
     PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "MaximumRate", MaximumRate )
     PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanControl", CanControl )
     PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanPlay", CanPlay )
+    PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanGoNext", CanGoNext )
+    PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanGoPrevious", CanGoPrevious )
     PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanPause", CanPause )
     PROPERTY_FUNC( DBUS_MPRIS_PLAYER_INTERFACE, "CanSeek", CanSeek )
     PROPERTY_MAPPING_END
@@ -905,6 +965,8 @@ DBUS_METHOD( GetAllProperties )
     ADD_PROPERTY ( MaximumRate,    "d"     );
     ADD_PROPERTY ( CanControl,     "b"     );
     ADD_PROPERTY ( CanPlay,        "b"     );
+    ADD_PROPERTY ( CanGoNext,      "b"     );
+    ADD_PROPERTY ( CanGoPrevious,  "b"     );
     ADD_PROPERTY ( CanPause,       "b"     );
     ADD_PROPERTY ( CanSeek,        "b"     );
 
-- 
1.8.1.1




More information about the vlc-devel mailing list