summaryrefslogtreecommitdiffstats
path: root/glib
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2005-10-18 04:38:05 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2005-10-18 04:38:05 +0000
commit2b9417707a6cac377e2caca047fde8169236d93e (patch)
tree9f7b49dd959a7502fc33a620f61a32f8c156c2dd /glib
parent0ae9f138ad4dfacbbd28abd39ce3dee66333539a (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.c17
-rw-r--r--glib/dbus-gvalue.c4
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