--- src/channel-main.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/channel-main.c b/src/channel-main.c index c55d097..4e8046e 100644 --- a/src/channel-main.c +++ b/src/channel-main.c @@ -74,6 +74,12 @@ typedef struct SpiceFileXferTask { GError *error; } SpiceFileXferTask; +typedef enum { + DISPLAY_UNDEFINED, + DISPLAY_DISABLED, + DISPLAY_ENABLED, +} SpiceDisplayState; + struct _SpiceMainChannelPrivate { enum SpiceMouseMode mouse_mode; bool agent_connected; @@ -98,8 +104,7 @@ struct _SpiceMainChannelPrivate { int y; int width; int height; - gboolean enabled; - gboolean enabled_set; + SpiceDisplayState display_state; } display[MAX_DISPLAY]; gint timer_id; GQueue *agent_msg_queue; @@ -1058,7 +1063,7 @@ gboolean spice_main_send_monitor_config(SpiceMainChannel *channel) } else { monitors = 0; for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) { - if (c->display[i].enabled) + if (c->display[i].display_state == DISPLAY_ENABLED) monitors += 1; } } @@ -1073,7 +1078,7 @@ gboolean spice_main_send_monitor_config(SpiceMainChannel *channel) j = 0; for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) { - if (!c->display[i].enabled) { + if (c->display[i].display_state != DISPLAY_ENABLED) { if (spice_main_agent_test_capability(channel, VD_AGENT_CAP_SPARSE_MONITORS_CONFIG)) j++; @@ -1426,7 +1431,7 @@ static gboolean timer_set_display(gpointer data) /* ensure we have an explicit monitor configuration at least for number of display channels */ for (i = 0; i < spice_session_get_n_display_channels(session); i++) - if (!c->display[i].enabled_set) { + if (c->display[i].display_state == DISPLAY_UNDEFINED) { SPICE_DEBUG("Not sending monitors config, missing monitors"); return FALSE; } @@ -2742,6 +2747,7 @@ void spice_main_clipboard_selection_request(SpiceMainChannel *channel, guint sel **/ void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled) { + SpiceDisplayState display_state = (enabled) ? DISPLAY_ENABLED : DISPLAY_DISABLED; g_return_if_fail(channel != NULL); g_return_if_fail(SPICE_IS_MAIN_CHANNEL(channel)); g_return_if_fail(id >= -1); @@ -2751,15 +2757,13 @@ void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean if (id == -1) { gint i; for (i = 0; i < G_N_ELEMENTS(c->display); i++) { - c->display[i].enabled = enabled; - c->display[i].enabled_set = TRUE; + c->display[i].display_state = display_state; } } else { g_return_if_fail(id < G_N_ELEMENTS(c->display)); - if (c->display[id].enabled == enabled) + if (c->display[id].display_state == display_state) return; - c->display[id].enabled = enabled; - c->display[id].enabled_set = TRUE; + c->display[id].display_state = display_state; } update_display_timer(channel, 1); -- 2.4.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel