#include "gdbuserror.h"
#include "gdbusprivate.h"
#include "gdbusconnection.h"
+#include "gio-marshal.h"
#include "glibintl.h"
GClosure *name_lost_closure;
} OwnNameData;
+static OwnNameData *
+own_name_data_new (GClosure *bus_acquired_closure,
+ GClosure *name_acquired_closure,
+ GClosure *name_lost_closure)
+{
+ OwnNameData *data;
+
+ data = g_new0 (OwnNameData, 1);
+
+ if (bus_acquired_closure != NULL)
+ {
+ data->bus_acquired_closure = g_closure_ref (bus_acquired_closure);
+ g_closure_sink (bus_acquired_closure);
+ if (G_CLOSURE_NEEDS_MARSHAL (bus_acquired_closure))
+ g_closure_set_marshal (bus_acquired_closure, _gio_marshal_VOID__STRING);
+ }
+
+ if (name_acquired_closure != NULL)
+ {
+ data->name_acquired_closure = g_closure_ref (name_acquired_closure);
+ g_closure_sink (name_acquired_closure);
+ if (G_CLOSURE_NEEDS_MARSHAL (name_acquired_closure))
+ g_closure_set_marshal (name_acquired_closure, _gio_marshal_VOID__STRING);
+ }
+
+ if (name_lost_closure != NULL)
+ {
+ data->name_lost_closure = g_closure_ref (name_lost_closure);
+ g_closure_sink (name_lost_closure);
+ if (G_CLOSURE_NEEDS_MARSHAL (name_lost_closure))
+ g_closure_set_marshal (name_lost_closure, _gio_marshal_VOID__STRING);
+ }
+
+ return data;
+}
+
static void
own_with_closures_on_bus_acquired (GDBusConnection *connection,
const gchar *name,
g_value_set_string (¶ms[1], name);
g_closure_invoke (data->bus_acquired_closure, NULL, 2, params, NULL);
+
+ g_value_unset (params + 0);
+ g_value_unset (params + 1);
}
static void
g_value_set_string (¶ms[1], name);
g_closure_invoke (data->name_acquired_closure, NULL, 2, params, NULL);
+
+ g_value_unset (params + 0);
+ g_value_unset (params + 1);
}
static void
g_value_set_string (¶ms[1], name);
g_closure_invoke (data->name_lost_closure, NULL, 2, params, NULL);
+
+ g_value_unset (params + 0);
+ g_value_unset (params + 1);
}
static void
GClosure *name_acquired_closure,
GClosure *name_lost_closure)
{
- OwnNameData *data;
-
- data = g_new0 (OwnNameData, 1);
-
- if (bus_acquired_closure != NULL)
- {
- data->bus_acquired_closure = g_closure_ref (bus_acquired_closure);
- g_closure_sink (bus_acquired_closure);
- }
-
- if (name_acquired_closure != NULL)
- {
- data->name_acquired_closure = g_closure_ref (name_acquired_closure);
- g_closure_sink (name_acquired_closure);
- }
-
- if (name_lost_closure != NULL)
- {
- data->name_lost_closure = g_closure_ref (name_lost_closure);
- g_closure_sink (name_lost_closure);
- }
-
return g_bus_own_name (bus_type,
name,
flags,
bus_acquired_closure != NULL ? own_with_closures_on_bus_acquired : NULL,
name_acquired_closure != NULL ? own_with_closures_on_name_acquired : NULL,
name_lost_closure != NULL ? own_with_closures_on_name_lost : NULL,
- data,
+ own_name_data_new (bus_acquired_closure,
+ name_acquired_closure,
+ name_lost_closure),
bus_own_name_free_func);
}
GClosure *name_acquired_closure,
GClosure *name_lost_closure)
{
- OwnNameData *data;
-
- data = g_new0 (OwnNameData, 1);
-
- if (name_acquired_closure != NULL)
- {
- data->name_acquired_closure = g_closure_ref (name_acquired_closure);
- g_closure_sink (name_acquired_closure);
- }
-
- if (name_lost_closure != NULL)
- {
- data->name_lost_closure = g_closure_ref (name_lost_closure);
- g_closure_sink (name_lost_closure);
- }
-
return g_bus_own_name_on_connection (connection,
name,
flags,
name_acquired_closure != NULL ? own_with_closures_on_name_acquired : NULL,
name_lost_closure != NULL ? own_with_closures_on_name_lost : NULL,
- data,
+ own_name_data_new (NULL,
+ name_acquired_closure,
+ name_lost_closure),
bus_own_name_free_func);
}
#include "gdbuserror.h"
#include "gdbusprivate.h"
#include "gdbusconnection.h"
+#include "gio-marshal.h"
#include "glibintl.h"
g_main_context_ref (client->main_context);
if (map_id_to_client == NULL)
- {
- map_id_to_client = g_hash_table_new (g_direct_hash, g_direct_equal);
- }
+ map_id_to_client = g_hash_table_new (g_direct_hash, g_direct_equal);
+
g_hash_table_insert (map_id_to_client,
GUINT_TO_POINTER (client->id),
client);
GClosure *name_vanished_closure;
} WatchNameData;
+static WatchNameData *
+watch_name_data_new (GClosure *name_appeared_closure,
+ GClosure *name_vanished_closure)
+{
+ WatchNameData *data;
+
+ data = g_new0 (WatchNameData, 1);
+
+ if (name_appeared_closure != NULL)
+ {
+ data->name_appeared_closure = g_closure_ref (name_appeared_closure);
+ g_closure_sink (name_appeared_closure);
+ if (G_CLOSURE_NEEDS_MARSHAL (name_appeared_closure))
+ g_closure_set_marshal (name_appeared_closure, _gio_marshal_VOID__STRING_STRING);
+ }
+
+ if (name_vanished_closure != NULL)
+ {
+ data->name_vanished_closure = g_closure_ref (name_vanished_closure);
+ g_closure_sink (name_vanished_closure);
+ if (G_CLOSURE_NEEDS_MARSHAL (name_vanished_closure))
+ g_closure_set_marshal (name_vanished_closure, _gio_marshal_VOID__STRING);
+ }
+
+ return data;
+}
+
static void
watch_with_closures_on_name_appeared (GDBusConnection *connection,
const gchar *name,
g_value_set_string (¶ms[2], name_owner);
g_closure_invoke (data->name_appeared_closure, NULL, 3, params, NULL);
+
+ g_value_unset (params + 0);
+ g_value_unset (params + 1);
+ g_value_unset (params + 2);
}
static void
g_value_set_string (¶ms[1], name);
g_closure_invoke (data->name_vanished_closure, NULL, 2, params, NULL);
+
+ g_value_unset (params + 0);
+ g_value_unset (params + 1);
}
static void
GClosure *name_appeared_closure,
GClosure *name_vanished_closure)
{
- WatchNameData *data;
-
- data = g_new0 (WatchNameData, 1);
-
- if (name_appeared_closure != NULL)
- {
- data->name_appeared_closure = g_closure_ref (name_appeared_closure);
- g_closure_sink (name_appeared_closure);
- }
-
- if (name_vanished_closure != NULL)
- {
- data->name_vanished_closure = g_closure_ref (name_vanished_closure);
- g_closure_sink (name_vanished_closure);
- }
-
return g_bus_watch_name (bus_type,
name,
flags,
name_appeared_closure != NULL ? watch_with_closures_on_name_appeared : NULL,
name_vanished_closure != NULL ? watch_with_closures_on_name_vanished : NULL,
- data,
+ watch_name_data_new (name_appeared_closure, name_vanished_closure),
bus_watch_name_free_func);
}
GClosure *name_appeared_closure,
GClosure *name_vanished_closure)
{
- WatchNameData *data;
-
- data = g_new0 (WatchNameData, 1);
-
- if (name_appeared_closure != NULL)
- {
- data->name_appeared_closure = g_closure_ref (name_appeared_closure);
- g_closure_sink (name_appeared_closure);
- }
-
- if (name_vanished_closure != NULL)
- {
- data->name_vanished_closure = g_closure_ref (name_vanished_closure);
- g_closure_sink (name_vanished_closure);
- }
-
return g_bus_watch_name_on_connection (connection,
name,
flags,
name_appeared_closure != NULL ? watch_with_closures_on_name_appeared : NULL,
name_vanished_closure != NULL ? watch_with_closures_on_name_vanished : NULL,
- data,
+ watch_name_data_new (name_appeared_closure, name_vanished_closure),
bus_watch_name_free_func);
}
VOID:BOXED,BOXED
VOID:VARIANT,BOXED
VOID:STRING,STRING,VARIANT
+VOID:STRING
+VOID:STRING,STRING
data.num_acquired = 0;
data.num_lost = 0;
data.expect_null_connection = FALSE;
- id = g_bus_own_name (G_BUS_TYPE_SESSION,
- name,
- G_BUS_NAME_OWNER_FLAGS_NONE,
- bus_acquired_handler,
- name_acquired_handler,
- name_lost_handler,
- &data,
- (GDestroyNotify) own_name_data_free_func);
+ id = g_bus_own_name_with_closures (G_BUS_TYPE_SESSION,
+ name,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ g_cclosure_new (G_CALLBACK (bus_acquired_handler),
+ &data,
+ NULL),
+ g_cclosure_new (G_CALLBACK (name_acquired_handler),
+ &data,
+ NULL),
+ g_cclosure_new (G_CALLBACK (name_lost_handler),
+ &data,
+ (GClosureNotify) own_name_data_free_func));
g_assert_cmpint (data.num_bus_acquired, ==, 0);
g_assert_cmpint (data.num_acquired, ==, 0);
g_assert_cmpint (data.num_lost, ==, 0);
WatchNameData data;
guint id;
guint owner_id;
+ GDBusConnection *connection;
/*
* First check that name_vanished_handler() is invoked if there is no bus.
g_main_loop_run (loop);
g_assert_cmpint (data.num_acquired, ==, 1);
g_assert_cmpint (data.num_lost, ==, 0);
+
+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+ g_assert (connection != NULL);
+
/* now watch the name */
data.num_appeared = 0;
data.num_vanished = 0;
- id = g_bus_watch_name (G_BUS_TYPE_SESSION,
- "org.gtk.GDBus.Name1",
- G_BUS_NAME_WATCHER_FLAGS_NONE,
- name_appeared_handler,
- name_vanished_handler,
- &data,
- (GDestroyNotify) watch_name_data_free_func);
+ id = g_bus_watch_name_on_connection (connection,
+ "org.gtk.GDBus.Name1",
+ G_BUS_NAME_WATCHER_FLAGS_NONE,
+ name_appeared_handler,
+ name_vanished_handler,
+ &data,
+ (GDestroyNotify) watch_name_data_free_func);
g_assert_cmpint (data.num_appeared, ==, 0);
g_assert_cmpint (data.num_vanished, ==, 0);
g_main_loop_run (loop);
g_bus_unwatch_name (id);
g_assert_cmpint (data.num_free_func, ==, 1);
+ g_object_unref (connection);
+
/* unown the name */
g_bus_unown_name (owner_id);
g_assert_cmpint (data.num_acquired, ==, 1);
data.num_appeared = 0;
data.num_vanished = 0;
data.num_free_func = 0;
- id = g_bus_watch_name (G_BUS_TYPE_SESSION,
- "org.gtk.GDBus.Name1",
- G_BUS_NAME_WATCHER_FLAGS_NONE,
- name_appeared_handler,
- name_vanished_handler,
- &data,
- (GDestroyNotify) watch_name_data_free_func);
+ id = g_bus_watch_name_with_closures (G_BUS_TYPE_SESSION,
+ "org.gtk.GDBus.Name1",
+ G_BUS_NAME_WATCHER_FLAGS_NONE,
+ g_cclosure_new (G_CALLBACK (name_appeared_handler),
+ &data,
+ NULL),
+ g_cclosure_new (G_CALLBACK (name_vanished_handler),
+ &data,
+ (GClosureNotify) watch_name_data_free_func));
g_assert_cmpint (data.num_appeared, ==, 0);
g_assert_cmpint (data.num_vanished, ==, 0);
g_main_loop_run (loop);