summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/channel-main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gtk/channel-main.c b/gtk/channel-main.c
index d7830ae..0c15dfa 100644
--- a/gtk/channel-main.c
+++ b/gtk/channel-main.c
@@ -916,8 +916,6 @@ static void monitors_align(VDAgentMonConfig *monitors, int nmonitors)
*
* Returns: %TRUE on success.
**/
-/* any context: the message is not flushed immediately,
- you can wakeup() the channel coroutine or send_msg_queue() */
gboolean spice_main_send_monitor_config(SpiceMainChannel *channel)
{
SpiceMainChannelPrivate *c;
@@ -966,6 +964,12 @@ gboolean spice_main_send_monitor_config(SpiceMainChannel *channel)
agent_msg_queue(channel, VD_AGENT_MONITORS_CONFIG, size, mon);
free(mon);
+ spice_channel_wakeup(SPICE_CHANNEL(channel), FALSE);
+ if (c->timer_id != 0) {
+ g_source_remove(c->timer_id);
+ c->timer_id = 0;
+ }
+
return TRUE;
}
@@ -1862,7 +1866,6 @@ static gboolean timer_set_display(gpointer data)
c->timer_id = 0;
if (c->agent_connected)
spice_main_send_monitor_config(SPICE_MAIN_CHANNEL(channel));
- spice_channel_wakeup(channel, FALSE);
return false;
}