[Spice-commits] 2 commits - gtk/channel-base.c gtk/channel-cursor.c gtk/channel-display.c gtk/channel-inputs.c gtk/channel-main.c gtk/channel-playback.c gtk/channel-record.c gtk/channel-smartcard.c gtk/channel-usbredir.c gtk/spice-channel.c gtk/spice-channel-priv.h gtk/spice-session.c

Christophe Fergau teuf at kemper.freedesktop.org
Fri Sep 14 02:09:52 PDT 2012


 gtk/channel-base.c       |   17 +++---
 gtk/channel-cursor.c     |   10 ++--
 gtk/channel-display.c    |   32 ++++++------
 gtk/channel-inputs.c     |    6 +-
 gtk/channel-main.c       |   14 ++---
 gtk/channel-playback.c   |   14 ++---
 gtk/channel-record.c     |    4 -
 gtk/channel-smartcard.c  |    8 +--
 gtk/channel-usbredir.c   |   10 ++--
 gtk/spice-channel-priv.h |    3 +
 gtk/spice-channel.c      |  116 +++++++++++++++++++++++------------------------
 gtk/spice-session.c      |   18 +++----
 12 files changed, 128 insertions(+), 124 deletions(-)

New commits:
commit 78ad29f5d891d8a63420f2abce822fc71111bb34
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Thu Sep 13 17:58:56 2012 +0200

    cursor: don't access unitialized data when logging
    
    SpiceCursor::header is only valid when SPICE_CURSOR_FLAGS_NONE is
    not set in SpiceCursor::flags, so don't try to log info about
    the header before we have tested this flag.

diff --git a/gtk/channel-cursor.c b/gtk/channel-cursor.c
index 45e78c6..99e7a48 100644
--- a/gtk/channel-cursor.c
+++ b/gtk/channel-cursor.c
@@ -337,13 +337,15 @@ static display_cursor *set_cursor(SpiceChannel *channel, SpiceCursor *scursor)
     guint8 *rgba;
     guint8 val;
 
-    CHANNEL_DEBUG(channel, "%s: type %d, %" PRIx64 ", %dx%d, flags %d, size %d",
-            __FUNCTION__, hdr->type, hdr->unique, hdr->width, hdr->height,
-            scursor->flags, scursor->data_size);
+    CHANNEL_DEBUG(channel, "%s: flags %d, size %d", __FUNCTION__,
+                  scursor->flags, scursor->data_size);
 
     if (scursor->flags & SPICE_CURSOR_FLAGS_NONE)
         return NULL;
 
+    CHANNEL_DEBUG(channel, "%s: type %d, %" PRIx64 ", %dx%d", __FUNCTION__,
+                  hdr->type, hdr->unique, hdr->width, hdr->height);
+
     if (scursor->flags & SPICE_CURSOR_FLAGS_FROM_CACHE) {
         item = cache_find(&c->cursors, hdr->unique);
         g_return_val_if_fail(item != NULL, NULL);
commit 80470049224ebea60403dfb526feab7b5514d0d3
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Wed Sep 12 20:43:24 2012 +0200

    channel: Introduce CHANNEL_DEBUG for channel debug logs
    
    It automatically prepends the channel name to the log message
    for easier debugging.
    
    Fixes rhbz#822437

diff --git a/gtk/channel-base.c b/gtk/channel-base.c
index fa39761..a7e9580 100644
--- a/gtk/channel-base.c
+++ b/gtk/channel-base.c
@@ -53,7 +53,6 @@ void spice_channel_handle_ping(SpiceChannel *channel, SpiceMsgIn *in)
 G_GNUC_INTERNAL
 void spice_channel_handle_notify(SpiceChannel *channel, SpiceMsgIn *in)
 {
-    SpiceChannelPrivate *c = channel->priv;
     static const char* severity_strings[] = {"info", "warn", "error"};
     static const char* visibility_strings[] = {"!", "!!", "!!!"};
 
@@ -74,8 +73,8 @@ void spice_channel_handle_notify(SpiceChannel *channel, SpiceMsgIn *in)
         message_str = (char*)notify->message;
     }
 
-    SPICE_DEBUG("%s: channel %s -- %s%s #%u%s%.*s", __FUNCTION__,
-            c->name, severity, visibility, notify->what,
+    CHANNEL_DEBUG(channel, "%s -- %s%s #%u%s%.*s", __FUNCTION__,
+            severity, visibility, notify->what,
             message_str ? ": " : "", notify->message_len,
             message_str ? message_str : "");
 }
@@ -86,8 +85,8 @@ void spice_channel_handle_disconnect(SpiceChannel *channel, SpiceMsgIn *in)
 {
     SpiceMsgDisconnect *disconnect = spice_msg_in_parsed(in);
 
-    SPICE_DEBUG("%s: ts: %" PRIu64", reason: %u", __FUNCTION__,
-                disconnect->time_stamp, disconnect->reason);
+    CHANNEL_DEBUG(channel, "%s: ts: %" PRIu64", reason: %u", __FUNCTION__,
+                  disconnect->time_stamp, disconnect->reason);
 }
 
 typedef struct WaitForChannelData
@@ -126,11 +125,11 @@ void spice_channel_handle_wait_for_channels(SpiceChannel *channel, SpiceMsgIn *i
             .channel = channel
         };
 
-        SPICE_DEBUG("waiting for serial %" PRIu64 " (%d/%d)", data.wait->message_serial, i + 1, wfc->wait_count);
+        CHANNEL_DEBUG(channel, "waiting for serial %" PRIu64 " (%d/%d)", data.wait->message_serial, i + 1, wfc->wait_count);
         if (g_coroutine_condition_wait(&c->coroutine, wait_for_channel, &data))
-            SPICE_DEBUG("waiting for serial %"  PRIu64 ", done", data.wait->message_serial);
+            CHANNEL_DEBUG(channel, "waiting for serial %"  PRIu64 ", done", data.wait->message_serial);
         else
-            SPICE_DEBUG("waiting for serial %" PRIu64 ", cancelled", data.wait->message_serial);
+            CHANNEL_DEBUG(channel, "waiting for serial %" PRIu64 ", cancelled", data.wait->message_serial);
     }
 }
 
@@ -155,7 +154,7 @@ void spice_channel_handle_migrate(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceMsgMigrate *mig = spice_msg_in_parsed(in);
     SpiceChannelPrivate *c = channel->priv;
 
-    SPICE_DEBUG("%s: channel %s flags %u", __FUNCTION__, c->name, mig->flags);
+    CHANNEL_DEBUG(channel, "%s: flags %u", __FUNCTION__, mig->flags);
     if (mig->flags & SPICE_MIGRATE_NEED_FLUSH) {
         /* if peer version > 1: pushing the mark msg before all other messgages and sending it,
          * and only it */
diff --git a/gtk/channel-cursor.c b/gtk/channel-cursor.c
index 6766b40..45e78c6 100644
--- a/gtk/channel-cursor.c
+++ b/gtk/channel-cursor.c
@@ -337,7 +337,7 @@ static display_cursor *set_cursor(SpiceChannel *channel, SpiceCursor *scursor)
     guint8 *rgba;
     guint8 val;
 
-    SPICE_DEBUG("%s: type %d, %" PRIx64 ", %dx%d, flags %d, size %d",
+    CHANNEL_DEBUG(channel, "%s: type %d, %" PRIx64 ", %dx%d, flags %d, size %d",
             __FUNCTION__, hdr->type, hdr->unique, hdr->width, hdr->height,
             scursor->flags, scursor->data_size);
 
@@ -485,7 +485,7 @@ static void cursor_handle_reset(SpiceChannel *channel, SpiceMsgIn *in)
 {
     SpiceCursorChannelPrivate *c = SPICE_CURSOR_CHANNEL(channel)->priv;
 
-    SPICE_DEBUG("%s, init_done: %d", __FUNCTION__, c->init_done);
+    CHANNEL_DEBUG(channel, "%s, init_done: %d", __FUNCTION__, c->init_done);
 
     delete_cursor_all(channel);
     emit_main_context(channel, SPICE_CURSOR_RESET);
diff --git a/gtk/channel-display.c b/gtk/channel-display.c
index 326ad22..77959b9 100644
--- a/gtk/channel-display.c
+++ b/gtk/channel-display.c
@@ -410,7 +410,7 @@ gboolean spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
     primary->shmid = surface->shmid;
     primary->data = surface->data;
     primary->marked = c->mark;
-    SPICE_DEBUG("get primary %p", primary->data);
+    CHANNEL_DEBUG(channel, "get primary %p", primary->data);
 
     return TRUE;
 }
@@ -714,7 +714,7 @@ static int create_canvas(SpiceChannel *channel, display_surface *surface)
         if (primary) {
             if (primary->width == surface->width &&
                 primary->height == surface->height) {
-                SPICE_DEBUG("Reusing existing primary surface");
+                CHANNEL_DEBUG(channel, "Reusing existing primary surface");
                 return 0;
             }
 
@@ -724,7 +724,7 @@ static int create_canvas(SpiceChannel *channel, display_surface *surface)
             free(primary);
         }
 
-        SPICE_DEBUG("display: create primary canvas");
+        CHANNEL_DEBUG(channel, "Create primary canvas");
 #ifdef HAVE_SYS_SHM_H
         surface->shmid = shmget(IPC_PRIVATE, surface->size, IPC_CREAT | 0777);
         if (surface->shmid >= 0) {
@@ -842,7 +842,7 @@ static void clear_surfaces(SpiceChannel *channel, gboolean keep_primary)
         item = ring_next(&c->surfaces, item);
 
         if (keep_primary && surface->primary) {
-            SPICE_DEBUG("keeping exisiting primary surface, migration or reset");
+            CHANNEL_DEBUG(channel, "keeping exisiting primary surface, migration or reset");
             continue;
         }
 
@@ -876,8 +876,8 @@ static void spice_display_channel_up(SpiceChannel *channel)
                  "cache-size", &cache_size,
                  "glz-window-size", &glz_window_size,
                  NULL);
-    SPICE_DEBUG("%s: cache_size %d, glz_window_size %d (bytes)", __FUNCTION__,
-                cache_size, glz_window_size);
+    CHANNEL_DEBUG(channel, "%s: cache_size %d, glz_window_size %d (bytes)", __FUNCTION__,
+                  cache_size, glz_window_size);
     init.pixmap_cache_id = 1;
     init.glz_dictionary_id = 1;
     init.pixmap_cache_size = cache_size / 4; /* pixels */
@@ -925,7 +925,7 @@ static void display_handle_mark(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceDisplayChannelPrivate *c = SPICE_DISPLAY_CHANNEL(channel)->priv;
     display_surface *surface = find_surface(c, 0);
 
-    SPICE_DEBUG("%s", __FUNCTION__);
+    CHANNEL_DEBUG(channel, "%s", __FUNCTION__);
     g_return_if_fail(surface != NULL);
 #ifdef EXTRA_CHECKS
     g_warn_if_fail(c->mark == FALSE);
@@ -941,7 +941,7 @@ static void display_handle_reset(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceDisplayChannelPrivate *c = SPICE_DISPLAY_CHANNEL(channel)->priv;
     display_surface *surface = find_surface(c, 0);
 
-    SPICE_DEBUG("%s: TODO detach_from_screen", __FUNCTION__);
+    CHANNEL_DEBUG(channel, "%s: TODO detach_from_screen", __FUNCTION__);
 
     if (surface != NULL)
         surface->canvas->ops->clear(surface->canvas);
@@ -1037,7 +1037,7 @@ static void display_handle_stream_create(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceMsgDisplayStreamCreate *op = spice_msg_in_parsed(in);
     display_stream *st;
 
-    SPICE_DEBUG("%s: id %d", __FUNCTION__, op->id);
+    CHANNEL_DEBUG(channel, "%s: id %d", __FUNCTION__, op->id);
 
     if (op->id >= c->nstreams) {
         int n = c->nstreams;
@@ -1245,7 +1245,7 @@ static void display_handle_stream_data(SpiceChannel *channel, SpiceMsgIn *in)
     mmtime = spice_session_get_mm_time(spice_channel_get_session(channel));
 
     if (spice_msg_in_type(in) == SPICE_MSG_DISPLAY_STREAM_DATA_SIZED) {
-        SPICE_DEBUG("stream %d contains sized data", op->id);
+        CHANNEL_DEBUG(channel, "stream %d contains sized data", op->id);
     }
 
     if (op->multi_media_time == 0) {
@@ -1254,8 +1254,8 @@ static void display_handle_stream_data(SpiceChannel *channel, SpiceMsgIn *in)
     }
 
     if (op->multi_media_time < mmtime) {
-        SPICE_DEBUG("stream data too late by %u ms (ts: %u, mmtime: %u), dropin",
-                    mmtime - op->multi_media_time, op->multi_media_time, mmtime);
+        CHANNEL_DEBUG(channel, "stream data too late by %u ms (ts: %u, mmtime: %u), dropin",
+                      mmtime - op->multi_media_time, op->multi_media_time, mmtime);
         return;
     }
 
@@ -1334,7 +1334,7 @@ static void display_handle_stream_destroy(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceMsgDisplayStreamDestroy *op = spice_msg_in_parsed(in);
 
     g_return_if_fail(op != NULL);
-    SPICE_DEBUG("%s: id %d", __FUNCTION__, op->id);
+    CHANNEL_DEBUG(channel, "%s: id %d", __FUNCTION__, op->id);
     destroy_stream(channel, op->id);
 }
 
@@ -1492,7 +1492,7 @@ static void display_handle_surface_destroy(SpiceChannel *channel, SpiceMsgIn *in
     }
     if (surface->primary) {
         int id = spice_channel_get_channel_id(channel);
-        SPICE_DEBUG("%d: FIXME primary destroy, but is display really disabled?", id);
+        CHANNEL_DEBUG(channel, "%d: FIXME primary destroy, but is display really disabled?", id);
         /* this is done with a timeout in spicec as well, it's *ugly* */
         if (id != 0 && c->mark_false_event_id == 0) {
             c->mark_false_event_id = g_timeout_add_seconds(1, display_mark_false, channel);
@@ -1517,7 +1517,7 @@ static void display_handle_monitors_config(SpiceChannel *channel, SpiceMsgIn *in
     g_return_if_fail(config != NULL);
     g_return_if_fail(config->count > 0);
 
-    SPICE_DEBUG("monitors config: n: %d/%d", config->count, config->max_allowed);
+    CHANNEL_DEBUG(channel, "monitors config: n: %d/%d", config->count, config->max_allowed);
 
     c->monitors_max = config->max_allowed;
     if (CLAMP_CHECK(c->monitors_max, 1, MONITORS_MAX)) {
@@ -1535,7 +1535,7 @@ static void display_handle_monitors_config(SpiceChannel *channel, SpiceMsgIn *in
     for (i = 0; i < config->count; i++) {
         SpiceDisplayMonitorConfig *mc = &g_array_index(c->monitors, SpiceDisplayMonitorConfig, i);
         SpiceHead *head = &config->heads[i];
-        SPICE_DEBUG("monitor id: %u, surface id: %u, +%u+%u-%ux%u",
+        CHANNEL_DEBUG(channel, "monitor id: %u, surface id: %u, +%u+%u-%ux%u",
                     head->id, head->surface_id,
                     head->x, head->y, head->width, head->height);
         mc->id = head->id;
diff --git a/gtk/channel-inputs.c b/gtk/channel-inputs.c
index 0526738..c907948 100644
--- a/gtk/channel-inputs.c
+++ b/gtk/channel-inputs.c
@@ -197,7 +197,7 @@ static SpiceMsgOut* mouse_position(SpiceInputsChannel *channel)
     if (c->dpy == -1)
         return NULL;
 
-    /* SPICE_DEBUG("%s: +%d+%d", __FUNCTION__, c->x, c->y); */
+    /* CHANNEL_DEBUG(channel, "%s: +%d+%d", __FUNCTION__, c->x, c->y); */
     position.buttons_state = c->bs;
     position.x             = c->x;
     position.y             = c->y;
@@ -366,7 +366,7 @@ void spice_inputs_position(SpiceInputsChannel *channel, gint x, gint y,
     if (c->motion_count < SPICE_INPUT_MOTION_ACK_BUNCH * 2) {
         send_position(channel);
     } else {
-        SPICE_DEBUG("over SPICE_INPUT_MOTION_ACK_BUNCH * 2, dropping");
+        CHANNEL_DEBUG(channel, "over SPICE_INPUT_MOTION_ACK_BUNCH * 2, dropping");
     }
 }
 
@@ -545,7 +545,7 @@ void spice_inputs_key_press_and_release(SpiceInputsChannel *input_channel, guint
         *code = spice_make_scancode(scancode, TRUE);
         spice_msg_out_send(msg);
     } else {
-        SPICE_DEBUG("The server doesn't support atomic press and release");
+        CHANNEL_DEBUG(channel, "The server doesn't support atomic press and release");
         spice_inputs_key_press(input_channel, scancode);
         spice_inputs_key_release(input_channel, scancode);
     }
diff --git a/gtk/channel-main.c b/gtk/channel-main.c
index a413ec4..21428cf 100644
--- a/gtk/channel-main.c
+++ b/gtk/channel-main.c
@@ -963,10 +963,10 @@ gboolean spice_main_send_monitor_config(SpiceMainChannel *channel)
         mon->monitors[j].height = c->display[j].height;
         mon->monitors[j].x = c->display[j].x;
         mon->monitors[j].y = c->display[j].y;
-        SPICE_DEBUG("monitor config: #%d %dx%d+%d+%d @ %d bpp", j,
-                    mon->monitors[j].width, mon->monitors[j].height,
-                    mon->monitors[j].x, mon->monitors[j].y,
-                    mon->monitors[j].depth);
+        CHANNEL_DEBUG(channel, "monitor config: #%d %dx%d+%d+%d @ %d bpp", j,
+                      mon->monitors[j].width, mon->monitors[j].height,
+                      mon->monitors[j].x, mon->monitors[j].y,
+                      mon->monitors[j].depth);
         j++;
     }
 
@@ -1009,7 +1009,7 @@ static void agent_display_config(SpiceMainChannel *channel)
         config.depth = c->display_color_depth;
     }
 
-    SPICE_DEBUG("display_config: flags: %u, depth: %u", config.flags, config.depth);
+    CHANNEL_DEBUG(channel, "display_config: flags: %u, depth: %u", config.flags, config.depth);
 
     agent_msg_queue(channel, VD_AGENT_DISPLAY_CONFIG, sizeof(VDAgentDisplayConfig), &config);
 }
@@ -1064,7 +1064,7 @@ static void agent_clipboard_grab(SpiceMainChannel *channel, guint selection,
     if (HAS_CLIPBOARD_SELECTION(c))
         size += 4;
     else if (selection != VD_AGENT_CLIPBOARD_SELECTION_CLIPBOARD) {
-        SPICE_DEBUG("Ignoring clipboard grab");
+        CHANNEL_DEBUG(channel, "Ignoring clipboard grab");
         return;
     }
 
@@ -1104,7 +1104,7 @@ static void agent_clipboard_notify(SpiceMainChannel *channel, guint selection,
     if (HAS_CLIPBOARD_SELECTION(c))
         msgsize += 4;
     else if (selection != VD_AGENT_CLIPBOARD_SELECTION_CLIPBOARD) {
-        SPICE_DEBUG("Ignoring clipboard notify");
+        CHANNEL_DEBUG(channel, "Ignoring clipboard notify");
         return;
     }
 
diff --git a/gtk/channel-playback.c b/gtk/channel-playback.c
index 61501c8..2d542a7 100644
--- a/gtk/channel-playback.c
+++ b/gtk/channel-playback.c
@@ -345,8 +345,8 @@ static void playback_handle_data(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceMsgPlaybackPacket *packet = spice_msg_in_parsed(in);
 
 #ifdef DEBUG
-    SPICE_DEBUG("%s: time %d data %p size %d", __FUNCTION__,
-            packet->time, packet->data, packet->data_size);
+    CHANNEL_DEBUG(channel, "%s: time %d data %p size %d", __FUNCTION__,
+                  packet->time, packet->data, packet->data_size);
 #endif
 
     if (c->last_time > packet->time)
@@ -390,8 +390,8 @@ static void playback_handle_mode(SpiceChannel *channel, SpiceMsgIn *in)
     SpicePlaybackChannelPrivate *c = SPICE_PLAYBACK_CHANNEL(channel)->priv;
     SpiceMsgPlaybackMode *mode = spice_msg_in_parsed(in);
 
-    SPICE_DEBUG("%s: time %d mode %d data %p size %d", __FUNCTION__,
-            mode->time, mode->mode, mode->data, mode->data_size);
+    CHANNEL_DEBUG(channel, "%s: time %d mode %d data %p size %d", __FUNCTION__,
+                  mode->time, mode->mode, mode->data, mode->data_size);
 
     c->mode = mode->mode;
     switch (c->mode) {
@@ -411,8 +411,8 @@ static void playback_handle_start(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceMsgPlaybackStart *start = spice_msg_in_parsed(in);
     int celt_mode_err;
 
-    SPICE_DEBUG("%s: fmt %d channels %d freq %d time %d", __FUNCTION__,
-            start->format, start->channels, start->frequency, start->time);
+    CHANNEL_DEBUG(channel, "%s: fmt %d channels %d freq %d time %d", __FUNCTION__,
+                  start->format, start->channels, start->frequency, start->time);
 
     c->frame_count = 0;
     c->last_time = start->time;
@@ -509,7 +509,7 @@ void spice_playback_channel_set_delay(SpicePlaybackChannel *channel, guint32 del
 
     g_return_if_fail(SPICE_IS_PLAYBACK_CHANNEL(channel));
 
-    SPICE_DEBUG("playback set_delay %u ms", delay_ms);
+    CHANNEL_DEBUG(channel, "playback set_delay %u ms", delay_ms);
 
     c = channel->priv;
     spice_session_set_mm_time(spice_channel_get_session(SPICE_CHANNEL(channel)),
diff --git a/gtk/channel-record.c b/gtk/channel-record.c
index 0ae9e4c..98a36b6 100644
--- a/gtk/channel-record.c
+++ b/gtk/channel-record.c
@@ -443,8 +443,8 @@ static void record_handle_start(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceRecordChannelPrivate *c = SPICE_RECORD_CHANNEL(channel)->priv;
     SpiceMsgRecordStart *start = spice_msg_in_parsed(in);
 
-    SPICE_DEBUG("%s: fmt %d channels %d freq %d", __FUNCTION__,
-            start->format, start->channels, start->frequency);
+    CHANNEL_DEBUG(channel, "%s: fmt %d channels %d freq %d", __FUNCTION__,
+                  start->format, start->channels, start->frequency);
 
     c->frame_bytes = FRAME_SIZE * 16 * start->channels / 8;
 
diff --git a/gtk/channel-smartcard.c b/gtk/channel-smartcard.c
index 5dafd29..cbddc1c 100644
--- a/gtk/channel-smartcard.c
+++ b/gtk/channel-smartcard.c
@@ -327,8 +327,8 @@ static void smartcard_message_send(SpiceSmartcardChannel *channel,
     if (spice_channel_get_read_only(SPICE_CHANNEL(channel)))
         return;
 
-    SPICE_DEBUG("smartcard: send message %d, %s",
-                msg_type, queue ? "queued" : "now");
+    CHANNEL_DEBUG(channel, "send message %d, %s",
+                  msg_type, queue ? "queued" : "now");
     if (!queue) {
         spice_msg_out_send(msg_out);
         return;
@@ -501,11 +501,11 @@ static void handle_smartcard_msg(SpiceChannel *channel, SpiceMsgIn *in)
     VReader *reader;
 
     priv = SPICE_SMARTCARD_CHANNEL_GET_PRIVATE(channel);
-    SPICE_DEBUG("smartcard: handle msg %d", msg->type);
+    CHANNEL_DEBUG(channel, "handle msg %d", msg->type);
     switch (msg->type) {
         case VSC_Error:
             g_return_if_fail(priv->in_flight_message != NULL);
-            SPICE_DEBUG("smartcard: in flight %d", priv->in_flight_message->message_type);
+            CHANNEL_DEBUG(channel, "in flight %d", priv->in_flight_message->message_type);
             switch (priv->in_flight_message->message_type) {
                 case VSC_ReaderAdd:
                     g_return_if_fail(priv->pending_reader_additions != NULL);
diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c
index e7e5629..5f8fb16 100644
--- a/gtk/channel-usbredir.c
+++ b/gtk/channel-usbredir.c
@@ -304,7 +304,7 @@ void spice_usbredir_channel_connect_device_async(
     g_return_if_fail(SPICE_IS_USBREDIR_CHANNEL(channel));
     g_return_if_fail(device != NULL);
 
-    SPICE_DEBUG("connecting usb channel %p", channel);
+    CHANNEL_DEBUG(channel, "connecting usb channel %p", channel);
 
     result = g_simple_async_result_new(G_OBJECT(channel), callback, user_data,
                                  spice_usbredir_channel_connect_device_async);
@@ -373,7 +373,7 @@ void spice_usbredir_channel_disconnect_device(SpiceUsbredirChannel *channel)
 {
     SpiceUsbredirChannelPrivate *priv = channel->priv;
 
-    SPICE_DEBUG("disconnecting device from usb channel %p", channel);
+    CHANNEL_DEBUG(channel, "disconnecting device from usb channel %p", channel);
 
     switch (priv->state) {
     case STATE_DISCONNECTED:
@@ -447,7 +447,7 @@ static void usbredir_log(void *user_data, int level, const char *msg)
     SpiceUsbredirChannelPrivate *priv = channel->priv;
 
     if (priv->catch_error && level == usbredirparser_error) {
-        SPICE_DEBUG("%s", msg);
+        CHANNEL_DEBUG(channel, "%s", msg);
         /* Remove "usbredirhost: " prefix from usbredirhost messages */
         if (strncmp(msg, "usbredirhost: ", 14) == 0)
             g_set_error_literal(priv->catch_error, SPICE_CLIENT_ERROR,
@@ -464,7 +464,7 @@ static void usbredir_log(void *user_data, int level, const char *msg)
         case usbredirparser_warning:
             g_warning("%s", msg); break;
         default:
-            SPICE_DEBUG("%s", msg); break;
+            CHANNEL_DEBUG(channel, "%s", msg); break;
     }
 }
 
@@ -658,7 +658,7 @@ static void usbredir_handle_msg(SpiceChannel *c, SpiceMsgIn *in)
         }
         g_free(desc);
 
-        SPICE_DEBUG("%s", err->message);
+        CHANNEL_DEBUG(c, "%s", err->message);
 
         g_boxed_copy(spice_usb_device_get_type(), device);
         emit_main_context(channel, DEVICE_ERROR, device, err);
diff --git a/gtk/spice-channel-priv.h b/gtk/spice-channel-priv.h
index c01b3c4..a769ef8 100644
--- a/gtk/spice-channel-priv.h
+++ b/gtk/spice-channel-priv.h
@@ -41,6 +41,9 @@ G_BEGIN_DECLS
 
 #define MAX_SPICE_DATA_HEADER_SIZE sizeof(SpiceDataHeader)
 
+#define CHANNEL_DEBUG(channel, fmt, ...) \
+    SPICE_DEBUG("%s: " fmt, SPICE_CHANNEL(channel)->priv->name, ## __VA_ARGS__)
+
 struct _SpiceMsgOut {
     int                   refcount;
     SpiceChannel          *channel;
diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
index 7e23bfe..dee0fa3 100644
--- a/gtk/spice-channel.c
+++ b/gtk/spice-channel.c
@@ -123,7 +123,7 @@ static void spice_channel_constructed(GObject *gobject)
 
     snprintf(c->name, sizeof(c->name), "%s-%d:%d",
              desc ? desc : "unknown", c->channel_type, c->channel_id);
-    SPICE_DEBUG("%s: %s", c->name, __FUNCTION__);
+    CHANNEL_DEBUG(channel, "%s", __FUNCTION__);
 
     c->connection_id = spice_session_get_connection_id(c->session);
     spice_session_channel_new(c->session, channel);
@@ -138,7 +138,7 @@ static void spice_channel_dispose(GObject *gobject)
     SpiceChannel *channel = SPICE_CHANNEL(gobject);
     SpiceChannelPrivate *c = channel->priv;
 
-    SPICE_DEBUG("%s: %s %p", c->name, __FUNCTION__, gobject);
+    CHANNEL_DEBUG(channel, "%s %p", __FUNCTION__, gobject);
 
     if (c->session)
         spice_session_channel_destroy(c->session, channel);
@@ -160,7 +160,7 @@ static void spice_channel_finalize(GObject *gobject)
     SpiceChannel *channel = SPICE_CHANNEL(gobject);
     SpiceChannelPrivate *c = channel->priv;
 
-    SPICE_DEBUG("%s: %s %p", c->name, __FUNCTION__, gobject);
+    CHANNEL_DEBUG(channel, "%s %p", __FUNCTION__, gobject);
 
     g_idle_remove_by_data(gobject);
 
@@ -780,7 +780,7 @@ static void spice_channel_flush_wire(SpiceChannel *channel,
                 if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
                     cond = G_IO_OUT;
                 } else {
-                    SPICE_DEBUG("Send error %s", error->message);
+                    CHANNEL_DEBUG(channel, "Send error %s", error->message);
                 }
                 g_clear_error(&error);
                 ret = -1;
@@ -791,13 +791,13 @@ static void spice_channel_flush_wire(SpiceChannel *channel,
                 g_coroutine_socket_wait(&c->coroutine, c->sock, cond);
                 continue;
             } else {
-                SPICE_DEBUG("Closing the channel: spice_channel_flush %d", errno);
+                CHANNEL_DEBUG(channel, "Closing the channel: spice_channel_flush %d", errno);
                 c->has_error = TRUE;
                 return;
             }
         }
         if (ret == 0) {
-            SPICE_DEBUG("Closing the connection: spice_channel_flush");
+            CHANNEL_DEBUG(channel, "Closing the connection: spice_channel_flush");
             c->has_error = TRUE;
             return;
         }
@@ -825,7 +825,7 @@ static void spice_channel_flush_sasl(SpiceChannel *channel, const void *data, si
         return;
     }
 
-    //SPICE_DEBUG("Flush SASL %d: %p %d", len, output, outputlen);
+    //CHANNEL_DEBUG(channel, "Flush SASL %d: %p %d", len, output, outputlen);
     spice_channel_flush_wire(channel, output, outputlen);
 }
 #endif
@@ -907,7 +907,7 @@ reread:
             if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
                 cond = G_IO_IN;
             } else {
-                SPICE_DEBUG("Read error %s", error->message);
+                CHANNEL_DEBUG(channel, "Read error %s", error->message);
             }
             g_clear_error(&error);
             ret = -1;
@@ -924,7 +924,7 @@ reread:
         }
     }
     if (ret == 0) {
-        SPICE_DEBUG("Closing the connection: spice_channel_read() - ret=0");
+        CHANNEL_DEBUG(channel, "Closing the connection: spice_channel_read() - ret=0");
         c->has_error = TRUE;
         return 0;
     }
@@ -941,7 +941,7 @@ static int spice_channel_read_sasl(SpiceChannel *channel, void *data, size_t len
 {
     SpiceChannelPrivate *c = channel->priv;
 
-    /* SPICE_DEBUG("Read %lu SASL %p size %d offset %d", len, c->sasl_decoded, */
+    /* CHANNEL_DEBUG(channel, "Read %lu SASL %p size %d offset %d", len, c->sasl_decoded, */
     /*             c->sasl_decoded_length, c->sasl_decoded_offset); */
 
     if (c->sasl_decoded == NULL || c->sasl_decoded_length == 0) {
@@ -1007,7 +1007,7 @@ static int spice_channel_read(SpiceChannel *channel, void *data, size_t length)
         data = ((char*)data) + ret;
 #if DEBUG
         if (len > 0)
-            SPICE_DEBUG("still needs %" G_GSIZE_FORMAT, len);
+            CHANNEL_DEBUG(channel, "still needs %" G_GSIZE_FORMAT, len);
 #endif
     }
     c->total_read_bytes += length;
@@ -1065,14 +1065,14 @@ static void spice_channel_recv_auth(SpiceChannel *channel)
 
     rc = spice_channel_read(channel, &link_res, sizeof(link_res));
     if (rc != sizeof(link_res)) {
-        SPICE_DEBUG("incomplete auth reply (%d/%" G_GSIZE_FORMAT ")",
+        CHANNEL_DEBUG(channel, "incomplete auth reply (%d/%" G_GSIZE_FORMAT ")",
                     rc, sizeof(link_res));
         emit_main_context(channel, SPICE_CHANNEL_EVENT, SPICE_CHANNEL_ERROR_LINK);
         return;
     }
 
     if (link_res != SPICE_LINK_ERR_OK) {
-        SPICE_DEBUG("link result: reply %d", link_res);
+        CHANNEL_DEBUG(channel, "link result: reply %d", link_res);
         emit_main_context(channel, SPICE_CHANNEL_EVENT, SPICE_CHANNEL_ERROR_AUTH);
         return;
     }
@@ -1094,7 +1094,7 @@ void spice_channel_up(SpiceChannel *channel)
 {
     SpiceChannelPrivate *c = channel->priv;
 
-    SPICE_DEBUG("%s: channel up, state %d", c->name, c->state);
+    CHANNEL_DEBUG(channel, "channel up, state %d", c->state);
 
     if (SPICE_CHANNEL_GET_CLASS(channel)->channel_up)
         SPICE_CHANNEL_GET_CLASS(channel)->channel_up(channel);
@@ -1153,11 +1153,11 @@ static void spice_channel_send_link(SpiceChannel *channel)
         *(uint32_t *)p = g_array_index(c->caps, uint32_t, i);
         p += sizeof(uint32_t);
     }
-    SPICE_DEBUG("channel type %d id %d num common caps %d num caps %d",
-                c->link_msg.channel_type,
-                c->link_msg.channel_id,
-                c->link_msg.num_common_caps,
-                c->link_msg.num_channel_caps);
+    CHANNEL_DEBUG(channel, "channel type %d id %d num common caps %d num caps %d",
+                  c->link_msg.channel_type,
+                  c->link_msg.channel_id,
+                  c->link_msg.num_common_caps,
+                  c->link_msg.num_channel_caps);
     spice_channel_write(channel, buffer, p - buffer);
     free(buffer);
 }
@@ -1179,12 +1179,12 @@ static void spice_channel_recv_link_hdr(SpiceChannel *channel)
         goto error;
     }
 
-    SPICE_DEBUG("Peer version: %d:%d", c->peer_hdr.major_version, c->peer_hdr.minor_version);
+    CHANNEL_DEBUG(channel, "Peer version: %d:%d", c->peer_hdr.major_version, c->peer_hdr.minor_version);
     if (c->peer_hdr.major_version != c->link_hdr.major_version) {
         if (c->peer_hdr.major_version == 1) {
             /* enter spice 0.4 mode */
             g_object_set(c->session, "protocol", 1, NULL);
-            SPICE_DEBUG("%s: switching to protocol 1 (spice 0.4)", c->name);
+            CHANNEL_DEBUG(channel, "switching to protocol 1 (spice 0.4)");
             SPICE_CHANNEL_GET_CLASS(channel)->channel_disconnect(channel);
             spice_channel_connect(channel);
             return;
@@ -1260,7 +1260,7 @@ spice_channel_gather_sasl_credentials(SpiceChannel *channel,
         }
     }
 
-    SPICE_DEBUG("Filled SASL interact");
+    CHANNEL_DEBUG(channel, "Filled SASL interact");
 
     return TRUE;
 }
@@ -1334,7 +1334,7 @@ static gboolean spice_channel_perform_auth_sasl(SpiceChannel *channel)
 
     /* Sets up the SASL library as a whole */
     err = sasl_client_init(NULL);
-    SPICE_DEBUG("Client initialize SASL authentication %d", err);
+    CHANNEL_DEBUG(channel, "Client initialize SASL authentication %d", err);
     if (err != SASL_OK) {
         g_critical("failed to initialize SASL library: %d (%s)",
                    err, sasl_errstring(err, NULL, NULL));
@@ -1363,8 +1363,8 @@ static gboolean spice_channel_perform_auth_sasl(SpiceChannel *channel)
         (remoteAddr = addr_to_string(addr)) == NULL)
         goto error;
 
-    SPICE_DEBUG("Client SASL new host:'%s' local:'%s' remote:'%s'",
-                spice_session_get_host(c->session), localAddr, remoteAddr);
+    CHANNEL_DEBUG(channel, "Client SASL new host:'%s' local:'%s' remote:'%s'",
+                  spice_session_get_host(c->session), localAddr, remoteAddr);
 
     /* Setup a handle for being a client */
     err = sasl_client_new("spice",
@@ -1431,7 +1431,7 @@ static gboolean spice_channel_perform_auth_sasl(SpiceChannel *channel)
 
 restart:
     /* Start the auth negotiation on the client end first */
-    SPICE_DEBUG("Client start negotiation mechlist '%s'", mechlist);
+    CHANNEL_DEBUG(channel, "Client start negotiation mechlist '%s'", mechlist);
     err = sasl_client_start(saslconn,
                             mechlist,
                             &interact,
@@ -1449,14 +1449,14 @@ restart:
     /* Need to gather some credentials from the client */
     if (err == SASL_INTERACT) {
         if (!spice_channel_gather_sasl_credentials(channel, interact)) {
-            SPICE_DEBUG("Failed to collect auth credentials");
+            CHANNEL_DEBUG(channel, "Failed to collect auth credentials");
             goto error;
         }
         goto restart;
     }
 
-    SPICE_DEBUG("Server start negotiation with mech %s. Data %d bytes %p '%s'",
-                mechname, clientoutlen, clientout, clientout);
+    CHANNEL_DEBUG(channel, "Server start negotiation with mech %s. Data %d bytes %p '%s'",
+                  mechname, clientoutlen, clientout, clientout);
 
     if (clientoutlen > SASL_MAX_DATA_LEN) {
         g_critical("SASL negotiation data too long: %d bytes",
@@ -1482,7 +1482,7 @@ restart:
     if (c->has_error)
         goto error;
 
-    SPICE_DEBUG("Getting sever start negotiation reply");
+    CHANNEL_DEBUG(channel, "Getting sever start negotiation reply");
     /* Read the 'START' message reply from server */
     spice_channel_read(channel, &len, sizeof(len));
     if (c->has_error)
@@ -1506,7 +1506,7 @@ restart:
     if (c->has_error)
         goto error;
 
-    SPICE_DEBUG("Client start result complete: %d. Data %d bytes %p '%s'",
+    CHANNEL_DEBUG(channel, "Client start result complete: %d. Data %d bytes %p '%s'",
                 complete, len, serverin, serverin);
 
     /* Loop-the-loop...
@@ -1530,7 +1530,7 @@ restart:
         if (err == SASL_INTERACT) {
             if (!spice_channel_gather_sasl_credentials(channel,
                                                        interact)) {
-                SPICE_DEBUG("%s", "Failed to collect auth credentials");
+                CHANNEL_DEBUG(channel, "%s", "Failed to collect auth credentials");
                 goto error;
             }
             goto restep;
@@ -1541,7 +1541,7 @@ restart:
             serverin = NULL;
         }
 
-        SPICE_DEBUG("Client step result %d. Data %d bytes %p '%s'", err, clientoutlen, clientout, clientout);
+        CHANNEL_DEBUG(channel, "Client step result %d. Data %d bytes %p '%s'", err, clientoutlen, clientout, clientout);
 
         /* Previous server call showed completion & we're now locally complete too */
         if (complete && err == SASL_OK)
@@ -1562,7 +1562,7 @@ restart:
         if (c->has_error)
             goto error;
 
-        SPICE_DEBUG("Server step with %d bytes %p", clientoutlen, clientout);
+        CHANNEL_DEBUG(channel, "Server step with %d bytes %p", clientoutlen, clientout);
 
         spice_channel_read(channel, &len, sizeof(guint32));
         if (c->has_error)
@@ -1586,7 +1586,7 @@ restart:
         if (c->has_error)
             goto error;
 
-        SPICE_DEBUG("Client step result complete: %d. Data %d bytes %p '%s'",
+        CHANNEL_DEBUG(channel, "Client step result complete: %d. Data %d bytes %p '%s'",
                     complete, len, serverin, serverin);
 
         /* This server call shows complete, and earlier client step was OK */
@@ -1608,7 +1608,7 @@ restart:
             goto error;
         }
         ssf = *(const int *)val;
-        SPICE_DEBUG("SASL SSF value %d", ssf);
+        CHANNEL_DEBUG(channel, "SASL SSF value %d", ssf);
         if (ssf < 56) { /* 56 == DES level, good for Kerberos */
             g_critical("negotiation SSF %d was not strong enough", ssf);
             goto error;
@@ -1616,7 +1616,7 @@ restart:
     }
 
 complete:
-    SPICE_DEBUG("%s", "SASL authentication complete");
+    CHANNEL_DEBUG(channel, "%s", "SASL authentication complete");
     spice_channel_read(channel, &len, sizeof(len));
     if (len != SPICE_LINK_ERR_OK)
         emit_main_context(channel, SPICE_CHANNEL_EVENT, SPICE_CHANNEL_ERROR_AUTH);
@@ -1663,7 +1663,7 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel)
         break;
     case SPICE_LINK_ERR_NEED_SECURED:
         c->tls = true;
-        SPICE_DEBUG("%s: switching to tls", c->name);
+        CHANNEL_DEBUG(channel, "switching to tls");
         SPICE_CHANNEL_GET_CLASS(channel)->channel_disconnect(channel);
         spice_channel_connect(channel);
         return;
@@ -1674,7 +1674,7 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel)
     }
 
     num_caps = c->peer_msg->num_channel_caps + c->peer_msg->num_common_caps;
-    SPICE_DEBUG("%s: %s: %d caps", c->name, __FUNCTION__, num_caps);
+    CHANNEL_DEBUG(channel, "%s: %d caps", __FUNCTION__, num_caps);
 
     /* see original spice/client code: */
     /* g_return_if_fail(c->peer_msg + c->peer_msg->caps_offset * sizeof(uint32_t) > c->peer_msg + c->peer_hdr.size); */
@@ -1684,26 +1684,26 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel)
     g_array_set_size(c->remote_common_caps, c->peer_msg->num_common_caps);
     for (i = 0; i < c->peer_msg->num_common_caps; i++, caps++) {
         g_array_index(c->remote_common_caps, uint32_t, i) = *caps;
-        SPICE_DEBUG("got common caps %u:0x%X", i, *caps);
+        CHANNEL_DEBUG(channel, "got common caps %u:0x%X", i, *caps);
     }
 
     g_array_set_size(c->remote_caps, c->peer_msg->num_channel_caps);
     for (i = 0; i < c->peer_msg->num_channel_caps; i++, caps++) {
         g_array_index(c->remote_caps, uint32_t, i) = *caps;
-        SPICE_DEBUG("got channel caps %u:0x%X", i, *caps);
+        CHANNEL_DEBUG(channel, "got channel caps %u:0x%X", i, *caps);
     }
 
     c->state = SPICE_CHANNEL_STATE_AUTH;
     if (!spice_channel_test_common_capability(channel,
             SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION)) {
-        SPICE_DEBUG("Server supports spice ticket auth only");
+        CHANNEL_DEBUG(channel, "Server supports spice ticket auth only");
         spice_channel_send_spice_ticket(channel);
     } else {
         SpiceLinkAuthMechanism auth = { 0, };
 
 #if HAVE_SASL
         if (spice_channel_test_common_capability(channel, SPICE_COMMON_CAP_AUTH_SASL)) {
-            SPICE_DEBUG("Choosing SASL mechanism");
+            CHANNEL_DEBUG(channel, "Choosing SASL mechanism");
             auth.auth_mechanism = SPICE_COMMON_CAP_AUTH_SASL;
             spice_channel_write(channel, &auth, sizeof(auth));
             spice_channel_perform_auth_sasl(channel);
@@ -1720,7 +1720,7 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel)
     }
     c->use_mini_header = spice_channel_test_common_capability(channel,
                                                               SPICE_COMMON_CAP_MINI_HEADER);
-    SPICE_DEBUG("use mini header: %d", c->use_mini_header);
+    CHANNEL_DEBUG(channel, "use mini header: %d", c->use_mini_header);
     return;
 
 error:
@@ -1964,7 +1964,7 @@ void spice_channel_destroy(SpiceChannel *channel)
 {
     g_return_if_fail(channel != NULL);
 
-    SPICE_DEBUG("channel destroy");
+    CHANNEL_DEBUG(channel, "channel destroy");
     spice_channel_disconnect(channel, SPICE_CHANNEL_NONE);
     g_object_unref(channel);
 }
@@ -2018,7 +2018,7 @@ static gboolean wait_migration(gpointer data)
     SpiceChannelPrivate *c = channel->priv;
 
     if (c->state != SPICE_CHANNEL_STATE_MIGRATING) {
-        SPICE_DEBUG("unfreeze channel %s", c->name);
+        CHANNEL_DEBUG(channel, "unfreeze channel");
         return TRUE;
     }
 
@@ -2034,10 +2034,10 @@ static gboolean spice_channel_iterate(SpiceChannel *channel)
     do {
         if (c->state == SPICE_CHANNEL_STATE_MIGRATING &&
             !g_coroutine_condition_wait(&c->coroutine, wait_migration, channel))
-                SPICE_DEBUG("migration wait cancelled");
+                CHANNEL_DEBUG(channel, "migration wait cancelled");
 
         if (c->has_error) {
-            SPICE_DEBUG("channel has error, breaking loop");
+            CHANNEL_DEBUG(channel, "channel has error, breaking loop");
             return FALSE;
         }
 
@@ -2051,7 +2051,7 @@ static gboolean spice_channel_iterate(SpiceChannel *channel)
     } while (ret == 0); /* ret == 0 means no IO condition, but woken up */
 
     if (ret & (G_IO_ERR|G_IO_HUP)) {
-        SPICE_DEBUG("got socket error before read(): %d", ret);
+        CHANNEL_DEBUG(channel, "got socket error before read(): %d", ret);
         emit_main_context(channel, SPICE_CHANNEL_EVENT,
                           c->state == SPICE_CHANNEL_STATE_READY ?
                           SPICE_CHANNEL_ERROR_IO : SPICE_CHANNEL_ERROR_LINK);
@@ -2078,7 +2078,7 @@ static gboolean spice_channel_delayed_unref(gpointer data)
     SpiceChannelPrivate *c = channel->priv;
 
     g_return_val_if_fail(channel != NULL, FALSE);
-    SPICE_DEBUG("Delayed unref channel %s %p", c->name, channel);
+    CHANNEL_DEBUG(channel, "Delayed unref channel %p", channel);
 
     g_return_val_if_fail(c->coroutine.coroutine.exited == TRUE, FALSE);
 
@@ -2095,7 +2095,7 @@ static void *spice_channel_coroutine(void *data)
     guint verify;
     int rc, delay_val = 1;
 
-    SPICE_DEBUG("Started background coroutine %p for %s", &c->coroutine, c->name);
+    CHANNEL_DEBUG(channel, "Started background coroutine %p", &c->coroutine);
 
     if (spice_session_get_client_provided_socket(c->session)) {
         if (c->fd < 0) {
@@ -2105,7 +2105,7 @@ static void *spice_channel_coroutine(void *data)
         }
 
         if (!(c->sock = g_socket_new_from_fd(c->fd, NULL))) {
-                SPICE_DEBUG("Failed to open socket from fd %d", c->fd);
+                CHANNEL_DEBUG(channel, "Failed to open socket from fd %d", c->fd);
                 emit_main_context(channel, SPICE_CHANNEL_EVENT, SPICE_CHANNEL_ERROR_CONNECT);
                 goto cleanup;
         }
@@ -2119,11 +2119,11 @@ reconnect:
     c->sock = spice_session_channel_open_host(c->session, channel, c->tls);
     if (c->sock == NULL) {
         if (!c->tls) {
-            SPICE_DEBUG("connection failed, trying with TLS port");
+            CHANNEL_DEBUG(channel, "connection failed, trying with TLS port");
             c->tls = true; /* FIXME: does that really work with provided fd */
             goto reconnect;
         } else {
-            SPICE_DEBUG("Connect error");
+            CHANNEL_DEBUG(channel, "Connect error");
             emit_main_context(channel, SPICE_CHANNEL_EVENT, SPICE_CHANNEL_ERROR_CONNECT);
             goto cleanup;
         }
@@ -2145,7 +2145,7 @@ reconnect:
             const gchar *ca_file = spice_session_get_ca_file (c->session);
 
             g_warn_if_fail(ca_file != NULL);
-            SPICE_DEBUG("CA file: %s", ca_file);
+            CHANNEL_DEBUG(channel, "CA file: %s", ca_file);
             rc = SSL_CTX_load_verify_locations(c->ctx, ca_file, NULL);
 
             if (rc != 1) {
@@ -2234,7 +2234,7 @@ connected:
     }
 
 cleanup:
-    SPICE_DEBUG("Coroutine exit %s", c->name);
+    CHANNEL_DEBUG(channel, "Coroutine exit %s", c->name);
 
     SPICE_CHANNEL_GET_CLASS(channel)->channel_disconnect(channel);
 
@@ -2252,7 +2252,7 @@ static gboolean connect_delayed(gpointer data)
     SpiceChannelPrivate *c = channel->priv;
     struct coroutine *co;
 
-    SPICE_DEBUG("Open coroutine starting %p", channel);
+    CHANNEL_DEBUG(channel, "Open coroutine starting %p", channel);
     c->connect_delayed_id = 0;
 
     co = &c->coroutine.coroutine;
@@ -2447,7 +2447,7 @@ void spice_channel_disconnect(SpiceChannel *channel, SpiceChannelEvent reason)
 {
     SpiceChannelPrivate *c = SPICE_CHANNEL_GET_PRIVATE(channel);
 
-    SPICE_DEBUG("channel disconnect %d", reason);
+    CHANNEL_DEBUG(channel, "channel disconnect %d", reason);
     g_return_if_fail(c != NULL);
 
     if (c->state == SPICE_CHANNEL_STATE_UNCONNECTED)
diff --git a/gtk/spice-session.c b/gtk/spice-session.c
index b6c7642..5fbc1d2 100644
--- a/gtk/spice-session.c
+++ b/gtk/spice-session.c
@@ -1310,19 +1310,19 @@ void spice_session_channel_migrate(SpiceSession *session, SpiceChannel *channel)
 
     id = spice_channel_get_channel_id(channel);
     type = spice_channel_get_channel_type(channel);
-    SPICE_DEBUG("migrating channel id:%d type:%d", id, type);
+    CHANNEL_DEBUG(channel, "migrating channel id:%d type:%d", id, type);
 
     c = spice_session_lookup_channel(s->migration, id, type);
     g_return_if_fail(c != NULL);
 
     if (!g_queue_is_empty(&c->priv->xmit_queue) && s->full_migration) {
-        SPICE_DEBUG("mig channel xmit queue is not empty. type %s", c->priv->name);
+        CHANNEL_DEBUG(channel, "mig channel xmit queue is not empty. type %s", c->priv->name);
     }
     spice_channel_swap(channel, c, !s->full_migration);
     s->migration_left = g_list_remove(s->migration_left, channel);
 
     if (g_list_length(s->migration_left) == 0) {
-        SPICE_DEBUG("all channel migrated");
+        CHANNEL_DEBUG(channel, "all channel migrated");
         spice_session_disconnect(s->migration);
         g_object_unref(s->migration);
         s->migration = NULL;
@@ -1537,22 +1537,22 @@ static GSocket *channel_connect_socket(SpiceChannel *channel,
     if (!g_socket_connect(sock, sockaddr, NULL, error)) {
         if (*error && (*error)->code == G_IO_ERROR_PENDING) {
             g_clear_error(error);
-            SPICE_DEBUG("Socket pending");
+            CHANNEL_DEBUG(channel, "Socket pending");
             g_coroutine_socket_wait(&c->coroutine, sock, G_IO_OUT | G_IO_ERR | G_IO_HUP);
 
             if (!g_socket_check_connect_result(sock, error)) {
-                SPICE_DEBUG("Failed to connect %s", (*error)->message);
+                CHANNEL_DEBUG(channel, "Failed to connect %s", (*error)->message);
                 g_object_unref(sock);
                 return NULL;
             }
         } else {
-            SPICE_DEBUG("Socket error: %s", *error ? (*error)->message : "unknown");
+            CHANNEL_DEBUG(channel, "Socket error: %s", *error ? (*error)->message : "unknown");
             g_object_unref(sock);
             return NULL;
         }
     }
 
-    SPICE_DEBUG("Finally connected");
+    CHANNEL_DEBUG(channel, "Finally connected");
 
     return sock;
 }
@@ -1625,7 +1625,7 @@ void spice_session_channel_new(SpiceSession *session, SpiceChannel *channel)
         if (s->color_depth != 0)
             g_object_set(channel, "color-depth", s->color_depth, NULL);
 
-        SPICE_DEBUG("new main channel, switching");
+        CHANNEL_DEBUG(channel, "new main channel, switching");
         s->cmain = channel;
     }
 
@@ -1655,7 +1655,7 @@ void spice_session_channel_destroy(SpiceSession *session, SpiceChannel *channel)
     g_return_if_fail(ring != NULL);
 
     if (channel == s->cmain) {
-        SPICE_DEBUG("the session lost the main channel");
+        CHANNEL_DEBUG(channel, "the session lost the main channel");
         s->cmain = NULL;
     }
 


More information about the Spice-commits mailing list