summaryrefslogtreecommitdiff
path: root/gio/tests/gdbus-peer.c
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2015-03-16 15:22:03 -0400
committerDongHun Kwak <dh0128.kwak@samsung.com>2016-05-10 15:12:44 +0900
commit3ce04dc3c3b6ab72bfb4ae203ede959dccfb2e3e (patch)
tree0f558fa5c05e7bc8da8302b8d14918ac68c18d06 /gio/tests/gdbus-peer.c
parent76f77fe8c971acf087abf8b969800289717ee89a (diff)
downloadglib-3ce04dc3c3b6ab72bfb4ae203ede959dccfb2e3e.tar.gz
glib-3ce04dc3c3b6ab72bfb4ae203ede959dccfb2e3e.tar.bz2
glib-3ce04dc3c3b6ab72bfb4ae203ede959dccfb2e3e.zip
Imported Upstream version 2.48.0
Change-Id: Ie8c1fa7173d48588524ed4e85cffd9e9af340d97 Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'gio/tests/gdbus-peer.c')
-rw-r--r--gio/tests/gdbus-peer.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/gio/tests/gdbus-peer.c b/gio/tests/gdbus-peer.c
index 6c6f3b06b..841c40cda 100644
--- a/gio/tests/gdbus-peer.c
+++ b/gio/tests/gdbus-peer.c
@@ -298,7 +298,7 @@ on_new_connection (GDBusServer *server,
GError *error;
guint reg_id;
- //g_print ("Client connected.\n"
+ //g_printerr ("Client connected.\n"
// "Negotiated capabilities: unix-fd-passing=%d\n",
// g_dbus_connection_get_capabilities (connection) & G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING);
@@ -335,14 +335,34 @@ on_new_connection (GDBusServer *server,
return TRUE;
}
-static void
-create_service_loop (GMainContext *service_context)
+/* We don't tell the main thread about the new GDBusServer until it has
+ * had a chance to start listening. */
+static gboolean
+idle_in_service_loop (gpointer loop)
{
g_assert (service_loop == NULL);
g_mutex_lock (&service_loop_lock);
- service_loop = g_main_loop_new (service_context, FALSE);
+ service_loop = loop;
g_cond_broadcast (&service_loop_cond);
g_mutex_unlock (&service_loop_lock);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+run_service_loop (GMainContext *service_context)
+{
+ GMainLoop *loop;
+ GSource *source;
+
+ g_assert (service_loop == NULL);
+
+ loop = g_main_loop_new (service_context, FALSE);
+ source = g_idle_source_new ();
+ g_source_set_callback (source, idle_in_service_loop, loop, NULL);
+ g_source_attach (source, service_context);
+ g_source_unref (source);
+ g_main_loop_run (loop);
}
static void
@@ -417,8 +437,7 @@ service_thread_func (gpointer user_data)
g_dbus_server_start (server);
- create_service_loop (service_context);
- g_main_loop_run (service_loop);
+ run_service_loop (service_context);
g_main_context_pop_thread_default (service_context);
@@ -512,8 +531,7 @@ service_thread_func (gpointer data)
data);
g_socket_service_start (service);
- create_service_loop (service_context);
- g_main_loop_run (service_loop);
+ run_service_loop (service_context);
g_main_context_pop_thread_default (service_context);
@@ -817,8 +835,7 @@ test_peer (void)
&len2,
&error);
g_assert_no_error (error);
- g_assert_cmpint (len, ==, len2);
- g_assert (memcmp (buf, buf2, len) == 0);
+ g_assert_cmpmem (buf, len, buf2, len2);
g_free (buf2);
g_free (buf);
}
@@ -1212,8 +1229,7 @@ nonce_tcp_service_thread_func (gpointer user_data)
g_dbus_server_start (server);
- create_service_loop (service_context);
- g_main_loop_run (service_loop);
+ run_service_loop (service_context);
g_main_context_pop_thread_default (service_context);
@@ -1405,8 +1421,7 @@ tcp_anonymous_service_thread_func (gpointer user_data)
g_dbus_server_start (server);
- create_service_loop (service_context);
- g_main_loop_run (service_loop);
+ run_service_loop (service_context);
g_main_context_pop_thread_default (service_context);
@@ -1519,7 +1534,7 @@ codegen_on_new_connection (GDBusServer *server,
ExampleAnimal *animal = user_data;
GError *error = NULL;
- /* g_print ("Client connected.\n" */
+ /* g_printerr ("Client connected.\n" */
/* "Negotiated capabilities: unix-fd-passing=%d\n", */
/* g_dbus_connection_get_capabilities (connection) & G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING); */
@@ -1561,8 +1576,7 @@ codegen_service_thread_func (gpointer user_data)
G_CALLBACK (codegen_on_new_connection),
animal);
- create_service_loop (service_context);
- g_main_loop_run (service_loop);
+ run_service_loop (service_context);
g_object_unref (animal);