[vlc-commits] dbus: Move DBus property marshaling code to separate functions
Mirsal Ennaime
git at videolan.org
Sun Feb 5 15:34:24 CET 2012
vlc/vlc-2.0 | branch: master | Mirsal Ennaime <mirsal at videolan.org> | Thu Dec 29 14:27:45 2011 +0100| [2a079e5cd9d57fc58a139652870edf82a208b944] | committer: Jean-Baptiste Kempf
dbus: Move DBus property marshaling code to separate functions
(cherry picked from commit afbf044935584488d8a86233ab969574a7ec1c4c)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=2a079e5cd9d57fc58a139652870edf82a208b944
---
modules/control/dbus/dbus_root.c | 171 +++++++++++++++++++++++++++----------
1 files changed, 125 insertions(+), 46 deletions(-)
diff --git a/modules/control/dbus/dbus_root.c b/modules/control/dbus/dbus_root.c
index 52a22e9..1afe29e 100644
--- a/modules/control/dbus/dbus_root.c
+++ b/modules/control/dbus/dbus_root.c
@@ -2,8 +2,8 @@
* dbus-root.c : dbus control module (mpris v1.0) - root object
*****************************************************************************
* Copyright © 2006-2008 Rafaël Carré
- * Copyright © 2007-2010 Mirsal Ennaime
- * Copyright © 2009-2010 The VideoLAN team
+ * Copyright © 2007-2011 Mirsal Ennaime
+ * Copyright © 2009-2011 The VideoLAN team
* $Id$
*
* Authors: Mirsal Ennaime <mirsal at mirsal fr>
@@ -68,17 +68,25 @@ static const char const ppsz_supported_mime_types[][26] = {
"application/xspf+xml"
};
+static int
+MarshalIdentity( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+ VLC_UNUSED( p_intf );
+ const char *psz_id = _("VLC media player");
+
+ dbus_message_iter_append_basic( container, DBUS_TYPE_STRING, &psz_id );
+ return VLC_SUCCESS;
+}
+
DBUS_METHOD( Identity )
{
- VLC_UNUSED(p_this);
REPLY_INIT;
OUT_ARGUMENTS;
- const char *psz_identity = _("VLC media player");
-
DBusMessageIter v;
dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "s", &v );
- dbus_message_iter_append_basic( &v, DBUS_TYPE_STRING, &psz_identity );
+
+ MarshalIdentity( p_this, &v );
if( !dbus_message_iter_close_container( &args, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
@@ -86,17 +94,25 @@ DBUS_METHOD( Identity )
REPLY_SEND;
}
+static int
+MarshalCanQuit( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+ VLC_UNUSED( p_intf );
+ const dbus_bool_t b_ret = TRUE;
+
+ dbus_message_iter_append_basic( container, DBUS_TYPE_BOOLEAN, &b_ret );
+ return VLC_SUCCESS;
+}
+
DBUS_METHOD( CanQuit )
{
- VLC_UNUSED( p_this );
REPLY_INIT;
OUT_ARGUMENTS;
- const dbus_bool_t b_ret = TRUE;
-
DBusMessageIter v;
dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "b", &v );
- dbus_message_iter_append_basic( &v, DBUS_TYPE_BOOLEAN, &b_ret );
+
+ MarshalCanQuit( p_this, &v );
if( !dbus_message_iter_close_container( &args, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
@@ -104,17 +120,25 @@ DBUS_METHOD( CanQuit )
REPLY_SEND;
}
+static int
+MarshalCanRaise( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+ VLC_UNUSED( p_intf );
+ const dbus_bool_t b_ret = FALSE;
+
+ dbus_message_iter_append_basic( container, DBUS_TYPE_BOOLEAN, &b_ret );
+ return VLC_SUCCESS;
+}
+
DBUS_METHOD( CanRaise )
{
- VLC_UNUSED( p_this );
REPLY_INIT;
OUT_ARGUMENTS;
- const dbus_bool_t b_ret = FALSE;
-
DBusMessageIter v;
dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "b", &v );
- dbus_message_iter_append_basic( &v, DBUS_TYPE_BOOLEAN, &b_ret );
+
+ MarshalCanRaise( p_this, &v );
if( !dbus_message_iter_close_container( &args, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
@@ -122,17 +146,25 @@ DBUS_METHOD( CanRaise )
REPLY_SEND;
}
+static int
+MarshalHasTrackList( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+ VLC_UNUSED( p_intf );
+ const dbus_bool_t b_ret = FALSE;
+
+ dbus_message_iter_append_basic( container, DBUS_TYPE_BOOLEAN, &b_ret );
+ return VLC_SUCCESS;
+}
+
DBUS_METHOD( HasTrackList )
{
- VLC_UNUSED( p_this );
REPLY_INIT;
OUT_ARGUMENTS;
- const dbus_bool_t b_ret = FALSE;
-
DBusMessageIter v;
dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "b", &v );
- dbus_message_iter_append_basic( &v, DBUS_TYPE_BOOLEAN, &b_ret );
+
+ MarshalHasTrackList( p_this, &v );
if( !dbus_message_iter_close_container( &args, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
@@ -140,17 +172,25 @@ DBUS_METHOD( HasTrackList )
REPLY_SEND;
}
+static int
+MarshalDesktopEntry( intf_thread_t *p_intf, DBusMessageIter *container )
+{
+ VLC_UNUSED( p_intf );
+ const char* psz_ret = PACKAGE;
+
+ dbus_message_iter_append_basic( container, DBUS_TYPE_STRING, &psz_ret );
+ return VLC_SUCCESS;
+}
+
DBUS_METHOD( DesktopEntry )
{
- VLC_UNUSED( p_this );
REPLY_INIT;
OUT_ARGUMENTS;
- const char* psz_ret = PACKAGE;
-
DBusMessageIter v;
dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "s", &v );
- dbus_message_iter_append_basic( &v, DBUS_TYPE_STRING, &psz_ret );
+
+ MarshalDesktopEntry( p_this, &v );
if( !dbus_message_iter_close_container( &args, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
@@ -158,25 +198,44 @@ DBUS_METHOD( DesktopEntry )
REPLY_SEND;
}
-DBUS_METHOD( SupportedMimeTypes )
+static int
+MarshalSupportedMimeTypes( intf_thread_t *p_intf, DBusMessageIter *container )
{
- VLC_UNUSED( p_this );
- REPLY_INIT;
- OUT_ARGUMENTS;
+ VLC_UNUSED( p_intf );
+ DBusMessageIter ret;
- DBusMessageIter ret, v;
- dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "s", &v );
- size_t i_len = sizeof( ppsz_supported_mime_types ) / sizeof( char* );
+ size_t i_len = sizeof( ppsz_supported_mime_types ) /
+ sizeof( *ppsz_supported_mime_types );
- if( !dbus_message_iter_open_container( &v, DBUS_TYPE_ARRAY, "s", &ret ) )
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ if( !dbus_message_iter_open_container( container,
+ DBUS_TYPE_ARRAY, "s",
+ &ret ) )
+ return VLC_ENOMEM;
for( size_t i = 0; i < i_len; ++i )
+ {
+ const char* const psz_mime_type = ppsz_supported_mime_types[i];
+
if( !dbus_message_iter_append_basic( &ret, DBUS_TYPE_STRING,
- &ppsz_supported_mime_types[i] ) )
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ &psz_mime_type ) )
+ return VLC_ENOMEM;
+ }
+
+ if( !dbus_message_iter_close_container( container, &ret ) )
+ return VLC_ENOMEM;
+
+ return VLC_SUCCESS;
+}
+
+DBUS_METHOD( SupportedMimeTypes )
+{
+ REPLY_INIT;
+ OUT_ARGUMENTS;
+
+ DBusMessageIter v;
+ dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "as", &v );
- if( !dbus_message_iter_close_container( &v, &ret ) )
+ if( VLC_SUCCESS != MarshalSupportedMimeTypes( p_this, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
if( !dbus_message_iter_close_container( &args, &v ) )
@@ -185,25 +244,45 @@ DBUS_METHOD( SupportedMimeTypes )
REPLY_SEND;
}
-DBUS_METHOD( SupportedUriSchemes )
+static int
+MarshalSupportedUriSchemes( intf_thread_t *p_intf, DBusMessageIter *container )
{
- VLC_UNUSED( p_this );
- REPLY_INIT;
- OUT_ARGUMENTS;
+ VLC_UNUSED( p_intf );
+ DBusMessageIter ret;
- DBusMessageIter ret, v;
- dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "s", &v );
- size_t i_len = sizeof( ppsz_supported_uri_schemes ) / sizeof( char* );
+ size_t i_len = sizeof( ppsz_supported_uri_schemes ) /
+ sizeof( *ppsz_supported_uri_schemes );
- if( !dbus_message_iter_open_container( &v, DBUS_TYPE_ARRAY, "s", &ret ) )
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ if( !dbus_message_iter_open_container( container,
+ DBUS_TYPE_ARRAY, "s",
+ &ret ) )
+ return VLC_ENOMEM;
for( size_t i = 0; i < i_len; ++i )
+ {
+ const char* const psz_scheme = ppsz_supported_uri_schemes[i];
+
if( !dbus_message_iter_append_basic( &ret, DBUS_TYPE_STRING,
- &ppsz_supported_uri_schemes[i] ) )
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ &psz_scheme ) )
+ return VLC_ENOMEM;
+ }
+
+ if( !dbus_message_iter_close_container( container, &ret ) )
+ return VLC_ENOMEM;
+
+ return VLC_SUCCESS;
+}
+
+DBUS_METHOD( SupportedUriSchemes )
+{
+ VLC_UNUSED( p_this );
+ REPLY_INIT;
+ OUT_ARGUMENTS;
+
+ DBusMessageIter v;
+ dbus_message_iter_open_container( &args, DBUS_TYPE_VARIANT, "as", &v );
- if( !dbus_message_iter_close_container( &v, &ret ) )
+ if( VLC_SUCCESS != MarshalSupportedUriSchemes( p_this, &v ) )
return DBUS_HANDLER_RESULT_NEED_MEMORY;
if( !dbus_message_iter_close_container( &args, &v ) )
More information about the vlc-commits
mailing list