diff options
author | Murray Cumming <murrayc@murrayc.com> | 2011-03-25 10:29:03 +0100 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2011-03-25 10:29:03 +0100 |
commit | 19a97d1dec0068421d2c2a1478c53419d26a4132 (patch) | |
tree | 2a176941e1369d5401cd4b414d10a8d90abb29b0 /gio/src/dbusconnection.ccg | |
parent | 98f6dce0e2fb23221f1490fa5f4a13bd1c349145 (diff) | |
download | glibmm-19a97d1dec0068421d2c2a1478c53419d26a4132.tar.gz |
Gio::DBus: Use VariantContainerBase for tuple Variants.
* gio/src/dbusconnection.[hg|ccg]:
* gio/src/dbusproxy.ccg.[hg|ccg]: call_sync(), call(), call_finish():
Use VariantContainerBase, instead of VariantBase, for GVariants that are
documented as being tuples. Because the type is known we can also use
it as a simple return type instead of an output parameter.
* tools/m4/convert_gio.m4: Added a necessary conversion.
* examples/dbus/peer.cc:
* examples/dbus/userbus.cc: Adapted. These already correctly assumed that
the type should be VariantContainerBase.
Diffstat (limited to 'gio/src/dbusconnection.ccg')
-rw-r--r-- | gio/src/dbusconnection.ccg | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/gio/src/dbusconnection.ccg b/gio/src/dbusconnection.ccg index 631eb559..273647f7 100644 --- a/gio/src/dbusconnection.ccg +++ b/gio/src/dbusconnection.ccg @@ -42,7 +42,7 @@ static void DBusConnection_Signal_giomm_callback(GDBusConnection* connection, { (*the_slot)(Glib::wrap(connection, true), (sender_name ? sender_name : ""), (object_path ? object_path : ""), (interface_name ? interface_name : ""), - (signal_name ? signal_name : ""), Glib::VariantBase(parameters, true)); + (signal_name ? signal_name : ""), Glib::VariantContainerBase(parameters, true)); } catch(...) { @@ -652,7 +652,7 @@ void Connection::call( const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, - const Glib::VariantBase& parameters, + const Glib::VariantContainerBase& parameters, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const Glib::ustring& bus_name, @@ -678,7 +678,7 @@ void Connection::call( const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, - const Glib::VariantBase& parameters, + const Glib::VariantContainerBase& parameters, const SlotAsyncReady& slot, const Glib::ustring& bus_name, int timeout_msec, @@ -698,25 +698,11 @@ void Connection::call( &SignalProxy_async_callback, slot_copy); } -void Connection::call_finish( - Glib::VariantBase& output, - const Glib::RefPtr<AsyncResult>& res -) -{ - GError* gerror = 0; - GVariant* const gvariant = - g_dbus_connection_call_finish(gobj(), Glib::unwrap(res), &gerror); - if(gerror) - ::Glib::Error::throw_exception(gerror); - output.init(gvariant); // No need for extra ref. -} - -void Connection::call_sync( - Glib::VariantBase& output, +Glib::VariantContainerBase Connection::call_sync( const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, - const Glib::VariantBase& parameters, + const Glib::VariantContainerBase& parameters, const Glib::RefPtr<Cancellable>& cancellable, const Glib::ustring& bus_name, int timeout_msec, @@ -736,16 +722,15 @@ void Connection::call_sync( if(gerror) ::Glib::Error::throw_exception(gerror); - output.init(gvariant); // No need to take extra reference. + return Glib::VariantContainerBase(gvariant, false); //Dont' take an extra reference. } // Non-cancellable version. -void Connection::call_sync( - Glib::VariantBase& output, +Glib::VariantContainerBase Connection::call_sync( const Glib::ustring& object_path, const Glib::ustring& interface_name, const Glib::ustring& method_name, - const Glib::VariantBase& parameters, + const Glib::VariantContainerBase& parameters, const Glib::ustring& bus_name, int timeout_msec, CallFlags flags, @@ -763,7 +748,7 @@ void Connection::call_sync( if(gerror) ::Glib::Error::throw_exception(gerror); - output.init(gvariant); // No need to take extra reference. + return Glib::VariantContainerBase(gvariant, false); //Dont' take an extra reference. } void Connection::emit_signal( @@ -771,7 +756,7 @@ void Connection::emit_signal( const Glib::ustring& interface_name, const Glib::ustring& signal_name, const Glib::ustring& destination_bus_name, - const Glib::VariantBase& parameters + const Glib::VariantContainerBase& parameters ) { GError* gerror = 0; |