[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