vlc/vlc-2.0 | branch: master | Mirsal Ennaime <[email protected]> | 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 <[email protected]> > 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 ) ) _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
