diff options
author | John (J5) Palmieri <johnp@redhat.com> | 2005-10-18 04:38:05 +0000 |
---|---|---|
committer | John (J5) Palmieri <johnp@redhat.com> | 2005-10-18 04:38:05 +0000 |
commit | 2b9417707a6cac377e2caca047fde8169236d93e (patch) | |
tree | 9f7b49dd959a7502fc33a620f61a32f8c156c2dd /glib | |
parent | 0ae9f138ad4dfacbbd28abd39ce3dee66333539a (diff) |
* glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble
and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
(gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble
* glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
when constructing struct signatures
* python/_dbus.py (Bus): handle private connections using the
private keyword in the constructor. defaults to private=False
(Bus::close): new method to close a connection to the bus
* python/dbus_bindings.pyx (Connection::close): renamed method
was previously called disconnect
(bus_get): now supports getting a private connection
* python/proxies.py (ProxyMethod::__call__): check if ignore_reply
keyword is set to True. if it is, execute the method without waiting
for a reply
(ProxyObject::_introspect_execute_queue): new method for executing
all the pending methods that were waiting for the introspect to
finish. this is called when introspect either succeeds or fails
(ProxyObject::_introspect_error_handler): call queued methods
Diffstat (limited to 'glib')
-rw-r--r-- | glib/dbus-gvalue-utils.c | 17 | ||||
-rw-r--r-- | glib/dbus-gvalue.c | 4 |
2 files changed, 20 insertions, 1 deletions
diff --git a/glib/dbus-gvalue-utils.c b/glib/dbus-gvalue-utils.c index c7b0d580..4956f222 100644 --- a/glib/dbus-gvalue-utils.c +++ b/glib/dbus-gvalue-utils.c @@ -299,6 +299,7 @@ hash_free_from_gtype (GType gtype, GDestroyNotify *func) case G_TYPE_UINT: *func = NULL; return TRUE; + case G_TYPE_DOUBLE: case G_TYPE_STRING: *func = g_free; return TRUE; @@ -308,6 +309,12 @@ hash_free_from_gtype (GType gtype, GDestroyNotify *func) *func = unset_and_free_g_value; return TRUE; } + else if (gtype == G_TYPE_VALUE_ARRAY) + { + *func = g_value_array_free; + return TRUE; + } + return FALSE; } } @@ -387,6 +394,9 @@ gvalue_from_hash_value (GValue *value, gpointer instance) case G_TYPE_UINT: g_value_set_uint (value, GPOINTER_TO_UINT (instance)); break; + case G_TYPE_DOUBLE: + g_value_set_double (value, *(gdouble *) instance); + break; case G_TYPE_STRING: g_value_set_static_string (value, instance); break; @@ -426,6 +436,13 @@ hash_value_from_gvalue (GValue *value) case G_TYPE_UINT: return GUINT_TO_POINTER (g_value_get_uint (value)); break; + case G_TYPE_DOUBLE: + { + gdouble *p = (gdouble *) g_malloc0 (sizeof (gdouble)); + *p = g_value_get_double (value); + return (gpointer) p; + } + break; case G_TYPE_STRING: return (gpointer) g_value_get_string (value); break; diff --git a/glib/dbus-gvalue.c b/glib/dbus-gvalue.c index 528f5033..2f6371e3 100644 --- a/glib/dbus-gvalue.c +++ b/glib/dbus-gvalue.c @@ -402,7 +402,7 @@ dbus_gvalue_to_signature (const GValue *val) array = g_value_get_boxed (val); - str = g_string_new (""); + str = g_string_new (DBUS_STRUCT_BEGIN_CHAR_AS_STRING); for (i = 0; i < array->n_values; i++) { char *sig; @@ -410,6 +410,8 @@ dbus_gvalue_to_signature (const GValue *val) g_string_append (str, sig); g_free (sig); } + g_string_append (str, DBUS_STRUCT_END_CHAR_AS_STRING); + return g_string_free (str, FALSE); } else |