diff options
Diffstat (limited to 'src/channel-main.c')
-rw-r--r-- | src/channel-main.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/channel-main.c b/src/channel-main.c index 84161cd..3bd5a02 100644 --- a/src/channel-main.c +++ b/src/channel-main.c @@ -1415,6 +1415,22 @@ static void agent_clipboard_release(SpiceMainChannel *channel, guint selection) agent_msg_queue(channel, VD_AGENT_CLIPBOARD_RELEASE, msgsize, msg); } +static gboolean any_display_has_dimensions(SpiceMainChannel *channel) +{ + SpiceMainChannelPrivate *c; + guint i; + + g_return_if_fail(SPICE_IS_MAIN_CHANNEL(channel)); + c = channel->priv; + + for (i = 0; i < MAX_DISPLAY; i++) { + if (c->display[i].width > 0 && c->display[i].height > 0) + return TRUE; + } + + return FALSE; +} + /* main context*/ static gboolean timer_set_display(gpointer data) { @@ -1427,6 +1443,11 @@ static gboolean timer_set_display(gpointer data) if (!c->agent_connected) return FALSE; + if (!any_display_has_dimensions(channel)) { + SPICE_DEBUG("Not sending monitors config, at least one monitor must have dimensions"); + return FALSE; + } + session = spice_channel_get_session(SPICE_CHANNEL(channel)); if (!spice_main_agent_test_capability(channel, VD_AGENT_CAP_SPARSE_MONITORS_CONFIG)) { |