From 4b14fcc9a159b9480867291769b2f92050f4555f Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Fri, 28 Dec 2012 14:51:00 +0200 Subject: gdbus: Introduce G_DBUS_SIGNAL_FLAG_EXPERIMENTAL This flag can be used to mark signals as experimental, marked signals are disabled by default and can be enabled by setting G_DBUS_FLAG_ENABLE_EXPERIMENTAL using g_dbus_set_flags. --- gdbus/object.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'gdbus/object.c') diff --git a/gdbus/object.c b/gdbus/object.c index 5fe4c7c4..a25615f8 100644 --- a/gdbus/object.c +++ b/gdbus/object.c @@ -164,6 +164,12 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface) for (signal = iface->signals; signal && signal->name; signal++) { gboolean deprecated = signal->flags & G_DBUS_SIGNAL_FLAG_DEPRECATED; + gboolean experimental = signal->flags & + G_DBUS_SIGNAL_FLAG_EXPERIMENTAL; + + if (!(global_flags & G_DBUS_FLAG_ENABLE_EXPERIMENTAL) && + experimental) + continue; if (!deprecated && !(signal->args && signal->args->name)) g_string_append_printf(gstr, @@ -1266,10 +1272,17 @@ static gboolean check_signal(DBusConnection *conn, const char *path, } for (signal = iface->signals; signal && signal->name; signal++) { - if (!strcmp(signal->name, name)) { - *args = signal->args; - return TRUE; + if (strcmp(signal->name, name) != 0) + continue; + + if (signal->flags & G_DBUS_SIGNAL_FLAG_EXPERIMENTAL) { + const char *env = g_getenv("GDBUS_EXPERIMENTAL"); + if (g_strcmp0(env, "1") != 0) + break; } + + *args = signal->args; + return TRUE; } error("No signal named %s on interface %s", name, interface); -- cgit v1.2.3