From 7a1aaaa1fa02679ecf335a19fffe3f55505921b5 Mon Sep 17 00:00:00 2001 From: Lukasz Skalski Date: Thu, 23 Apr 2015 13:53:20 +0000 Subject: [PATCH] [kdbus] Don't serialize message to a blob when we use kdbus transport --- gio/gdbusconnection.c | 59 ++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index 4b3f839..b9265c9 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -2128,34 +2128,39 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection, error)) goto out; - blob = g_dbus_message_to_blob (message, - &blob_size, - connection->capabilities, - error); - - if (blob == NULL) - goto out; - if (!(flags & G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL)) g_dbus_message_set_serial (message, ++connection->last_serial); serial_to_use = g_dbus_message_get_serial (message); - g_dbus_message_lock (message); - - switch (blob[0]) + /* + * serializes message to a blob + */ + if (connection->worker) { - case 'l': - ((guint32 *) blob)[2] = GUINT32_TO_LE (serial_to_use); - break; - case 'B': - ((guint32 *) blob)[2] = GUINT32_TO_BE (serial_to_use); - break; - default: - g_assert_not_reached (); - break; + blob = g_dbus_message_to_blob (message, + &blob_size, + connection->capabilities, + error); + if (blob == NULL) + goto out; + + switch (blob[0]) + { + case 'l': + ((guint32 *) blob)[2] = GUINT32_TO_LE (serial_to_use); + break; + case 'B': + ((guint32 *) blob)[2] = GUINT32_TO_BE (serial_to_use); + break; + default: + g_assert_not_reached (); + break; + } } + g_dbus_message_lock (message); + #if 0 g_printerr ("Writing message of %" G_GSIZE_FORMAT " bytes (serial %d) on %p:\n", blob_size, serial_to_use, connection); @@ -2178,18 +2183,18 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection, g_thread_self (), GUINT_TO_POINTER (serial_to_use)); + ret = TRUE; + if (connection->worker) - _g_dbus_worker_send_message (connection->worker, - message, - (gchar*) blob, - blob_size); + _g_dbus_worker_send_message (connection->worker, + message, + (gchar*) blob, + blob_size); else - g_kdbus_worker_send_message (connection->kdbus_worker, message, error); + ret = g_kdbus_worker_send_message (connection->kdbus_worker, message, error); blob = NULL; /* since _g_dbus_worker_send_message() steals the blob */ - ret = TRUE; - out: g_free (blob); -- 2.7.4