[glib/gdbus-codegen] GDBusObjectManagerClient: Add a GDestroyNotify to the user_data
- From: David Zeuthen <davidz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/gdbus-codegen] GDBusObjectManagerClient: Add a GDestroyNotify to the user_data
- Date: Sat, 16 Apr 2011 19:25:26 +0000 (UTC)
commit affc6f747587f5b86d5ec34cf22e7f666d7d09a9
Author: David Zeuthen <davidz redhat com>
Date: Sat Apr 16 15:24:42 2011 -0400
GDBusObjectManagerClient: Add a GDestroyNotify to the user_data
For bindings, obviously.
Signed-off-by: David Zeuthen <davidz redhat com>
gio/gdbusobjectmanagerclient.c | 40 +++++++++++++++++++++++++++++++++++++++-
gio/gdbusobjectmanagerclient.h | 4 ++++
gio/tests/gdbus-test-codegen.c | 18 ++++++++++--------
3 files changed, 53 insertions(+), 9 deletions(-)
---
diff --git a/gio/gdbusobjectmanagerclient.c b/gio/gdbusobjectmanagerclient.c
index 74062e6..fe33d4b 100644
--- a/gio/gdbusobjectmanagerclient.c
+++ b/gio/gdbusobjectmanagerclient.c
@@ -142,6 +142,7 @@ struct _GDBusObjectManagerClientPrivate
GDBusProxyTypeFunc get_proxy_type_func;
gpointer get_proxy_type_user_data;
+ GDestroyNotify get_proxy_type_destroy_notify;
};
enum
@@ -154,7 +155,8 @@ enum
PROP_NAME,
PROP_NAME_OWNER,
PROP_GET_PROXY_TYPE_FUNC,
- PROP_GET_PROXY_TYPE_USER_DATA
+ PROP_GET_PROXY_TYPE_USER_DATA,
+ PROP_GET_PROXY_TYPE_DESTROY_NOTIFY
};
enum
@@ -208,6 +210,9 @@ g_dbus_object_manager_client_finalize (GObject *object)
g_free (manager->priv->name);
g_free (manager->priv->name_owner);
+ if (manager->priv->get_proxy_type_destroy_notify != NULL)
+ manager->priv->get_proxy_type_destroy_notify (manager->priv->get_proxy_type_user_data);
+
if (G_OBJECT_CLASS (g_dbus_object_manager_client_parent_class)->finalize != NULL)
G_OBJECT_CLASS (g_dbus_object_manager_client_parent_class)->finalize (object);
}
@@ -295,6 +300,10 @@ g_dbus_object_manager_client_set_property (GObject *_object,
manager->priv->get_proxy_type_user_data = g_value_get_pointer (value);
break;
+ case PROP_GET_PROXY_TYPE_DESTROY_NOTIFY:
+ manager->priv->get_proxy_type_destroy_notify = g_value_get_pointer (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (_object, prop_id, pspec);
break;
@@ -462,6 +471,23 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass)
G_PARAM_STATIC_STRINGS));
/**
+ * GDBusObjectManagerClient:get-proxy-type-destroy-notify:
+ *
+ * A #GDestroyNotify for the #gpointer user_data in #GDBusObjectManagerClient:get-proxy-type-user-data.
+ *
+ * Since: 2.30
+ */
+ g_object_class_install_property (gobject_class,
+ PROP_GET_PROXY_TYPE_DESTROY_NOTIFY,
+ g_param_spec_pointer ("get-proxy-type-destroy-notify",
+ "GDBusProxyTypeFunc user data free function",
+ "The GDBusProxyTypeFunc user data free function",
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
* GDBusObjectManagerClient::interface-proxy-signal:
* @manager: The #GDBusObjectManagerClient emitting the signal.
* @object_proxy: The #GDBusObjectProxy on which an interface is emitting a D-Bus signal.
@@ -559,6 +585,7 @@ g_dbus_object_manager_client_init (GDBusObjectManagerClient *manager)
* @object_path: The object path of the control object.
* @get_proxy_type_func: A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
* @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (allow-none): Free function for @get_proxy_type_user_data or %NULL.
* @cancellable: A #GCancellable or %NULL
* @error: Return location for error or %NULL.
*
@@ -581,6 +608,7 @@ g_dbus_object_manager_client_new_sync (GDBusConnection *connection
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GError **error)
{
@@ -601,6 +629,7 @@ g_dbus_object_manager_client_new_sync (GDBusConnection *connection
"object-path", object_path,
"get-proxy-type-func", get_proxy_type_func,
"get-proxy-type-user-data", get_proxy_type_user_data,
+ "get-proxy-type-destroy-notify", get_proxy_type_destroy_notify,
NULL);
if (initable != NULL)
return G_DBUS_OBJECT_MANAGER (initable);
@@ -616,6 +645,7 @@ g_dbus_object_manager_client_new_sync (GDBusConnection *connection
* @object_path: The object path of the control object.
* @get_proxy_type_func: A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
* @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (allow-none): Free function for @get_proxy_type_user_data or %NULL.
* @cancellable: A #GCancellable or %NULL
* @callback: A #GAsyncReadyCallback to call when the request is satisfied.
* @user_data: The data to pass to @callback.
@@ -638,6 +668,7 @@ g_dbus_object_manager_client_new (GDBusConnection *connection,
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -658,6 +689,7 @@ g_dbus_object_manager_client_new (GDBusConnection *connection,
"object-path", object_path,
"get-proxy-type-func", get_proxy_type_func,
"get-proxy-type-user-data", get_proxy_type_user_data,
+ "get-proxy-type-destroy-notify", get_proxy_type_destroy_notify,
NULL);
}
@@ -705,6 +737,7 @@ g_dbus_object_manager_client_new_finish (GAsyncResult *res,
* @object_path: The object path of the control object.
* @get_proxy_type_func: A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
* @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (allow-none): Free function for @get_proxy_type_user_data or %NULL.
* @cancellable: A #GCancellable or %NULL
* @error: Return location for error or %NULL.
*
@@ -728,6 +761,7 @@ g_dbus_object_manager_client_new_for_bus_sync (GBusType bu
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GError **error)
{
@@ -747,6 +781,7 @@ g_dbus_object_manager_client_new_for_bus_sync (GBusType bu
"object-path", object_path,
"get-proxy-type-func", get_proxy_type_func,
"get-proxy-type-user-data", get_proxy_type_user_data,
+ "get-proxy-type-destroy-notify", get_proxy_type_destroy_notify,
NULL);
if (initable != NULL)
return G_DBUS_OBJECT_MANAGER (initable);
@@ -762,6 +797,7 @@ g_dbus_object_manager_client_new_for_bus_sync (GBusType bu
* @object_path: The object path of the control object.
* @get_proxy_type_func: A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
* @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (allow-none): Free function for @get_proxy_type_user_data or %NULL.
* @cancellable: A #GCancellable or %NULL
* @callback: A #GAsyncReadyCallback to call when the request is satisfied.
* @user_data: The data to pass to @callback.
@@ -785,6 +821,7 @@ g_dbus_object_manager_client_new_for_bus (GBusType bus_typ
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -804,6 +841,7 @@ g_dbus_object_manager_client_new_for_bus (GBusType bus_typ
"object-path", object_path,
"get-proxy-type-func", get_proxy_type_func,
"get-proxy-type-user-data", get_proxy_type_user_data,
+ "get-proxy-type-destroy-notify", get_proxy_type_destroy_notify,
NULL);
}
diff --git a/gio/gdbusobjectmanagerclient.h b/gio/gdbusobjectmanagerclient.h
index dcc5cc9..ad41fee 100644
--- a/gio/gdbusobjectmanagerclient.h
+++ b/gio/gdbusobjectmanagerclient.h
@@ -91,6 +91,7 @@ void g_dbus_object_manager_client_new (G
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -102,6 +103,7 @@ GDBusObjectManager *g_dbus_object_manager_client_new_sync (G
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GError **error);
void g_dbus_object_manager_client_new_for_bus (GBusType bus_type,
@@ -110,6 +112,7 @@ void g_dbus_object_manager_client_new_for_bus (G
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -121,6 +124,7 @@ GDBusObjectManager *g_dbus_object_manager_client_new_for_bus_sync (G
const gchar *object_path,
GDBusProxyTypeFunc get_proxy_type_func,
gpointer get_proxy_type_user_data,
+ GDestroyNotify get_proxy_type_destroy_notify,
GCancellable *cancellable,
GError **error);
GDBusConnection *g_dbus_object_manager_client_get_connection (GDBusObjectManagerClient *manager);
diff --git a/gio/tests/gdbus-test-codegen.c b/gio/tests/gdbus-test-codegen.c
index a1b385e..f7e7de3 100644
--- a/gio/tests/gdbus-test-codegen.c
+++ b/gio/tests/gdbus-test-codegen.c
@@ -1783,6 +1783,7 @@ check_object_manager (void)
"/managed",
get_proxy_type,
GUINT_TO_POINTER (42),
+ NULL, /* GDestroyNotify */
NULL, /* GCancellable */
&error);
g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD);
@@ -1805,14 +1806,15 @@ check_object_manager (void)
/* Now try to create the the proxy manager again - this time it should work */
error = NULL;
g_dbus_object_manager_client_new (c,
- G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
- g_dbus_connection_get_unique_name (c),
- "/managed",
- get_proxy_type,
- GUINT_TO_POINTER (42),
- NULL, /* GCancellable */
- (GAsyncReadyCallback) om_pm_start_cb,
- loop);
+ G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
+ g_dbus_connection_get_unique_name (c),
+ "/managed",
+ get_proxy_type,
+ GUINT_TO_POINTER (42),
+ NULL, /* GDestroyNotify */
+ NULL, /* GCancellable */
+ (GAsyncReadyCallback) om_pm_start_cb,
+ loop);
g_main_loop_run (loop);
error = NULL;
pm = g_dbus_object_manager_client_new_finish (om_res, &error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]