[glib] GDBusProxy: add flag to control autostarting at construction time
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] GDBusProxy: add flag to control autostarting at construction time
- Date: Fri, 4 Oct 2013 00:38:39 +0000 (UTC)
commit 32d2539295308711ec97b37feb104e1be04ba454
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Thu Oct 3 20:26:18 2013 +0200
GDBusProxy: add flag to control autostarting at construction time
Sometimes the application doesn't want to autostart a service
when it creates a proxy, but wants the service autostarted when
it makes the first method call. Allow that behavior with a new
flag.
https://bugzilla.gnome.org/show_bug.cgi?id=708828
gio/gdbusproxy.c | 15 ++++++++-------
gio/gioenums.h | 7 ++++++-
2 files changed, 14 insertions(+), 8 deletions(-)
---
diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c
index 60a8881..c870017 100644
--- a/gio/gdbusproxy.c
+++ b/gio/gdbusproxy.c
@@ -1725,7 +1725,8 @@ async_initable_init_second_async (GAsyncInitable *initable,
}
else
{
- if (proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START)
+ if ((proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START) ||
+ (proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION))
{
async_init_call_get_name_owner (data);
}
@@ -2039,9 +2040,9 @@ initable_iface_init (GInitableIface *initable_iface)
* to handle signals from the remote object.
*
* If @name is a well-known name and the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag isn't set and no name
- * owner currently exists, the message bus will be requested to launch
- * a name owner for the name.
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
+ * flags aren't set and no name owner currently exists, the message bus
+ * will be requested to launch a name owner for the name.
*
* This is a failable asynchronous constructor - when the proxy is
* ready, @callback will be invoked and you can use
@@ -2136,9 +2137,9 @@ g_dbus_proxy_new_finish (GAsyncResult *res,
* to handle signals from the remote object.
*
* If @name is a well-known name and the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag isn't set and no name
- * owner currently exists, the message bus will be requested to launch
- * a name owner for the name.
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
+ * flags aren't set and no name owner currently exists, the message bus
+ * will be requested to launch a name owner for the name.
*
* This is a synchronous failable constructor. See g_dbus_proxy_new()
* and g_dbus_proxy_new_finish() for the asynchronous version.
diff --git a/gio/gioenums.h b/gio/gioenums.h
index 4ce0855..c8c0e15 100644
--- a/gio/gioenums.h
+++ b/gio/gioenums.h
@@ -950,6 +950,10 @@ typedef enum
* then request the bus to launch an owner for the name if no-one owns the name. This flag can
* only be used in proxies for well-known names.
* @G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES: If set, the property value for any <emphasis>invalidated
property</emphasis> will be (asynchronously) retrieved upon receiving the <ulink
url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties">PropertiesChanged</ulink>
D-Bus signal and the property will not cause emission of the #GDBusProxy::g-properties-changed signal. When
the value is received the #GDBusProxy::g-properties-changed signal is emitted for the property along with the
retrieved value. Since 2.32.
+ * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION: If the proxy is for a well-known name,
+ * do not ask the bus to launch an owner during proxy initialization, but allow it to be
+ * autostarted by a method call. This flag is only meaningful in proxies for well-known names,
+ * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTOSTART is not also specified.
*
* Flags used when constructing an instance of a #GDBusProxy derived class.
*
@@ -961,7 +965,8 @@ typedef enum
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = (1<<0),
G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1),
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2),
- G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3)
+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3),
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION = (1<<4)
} GDBusProxyFlags;
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]