Hi Marc-André, On Wed, 2016-07-27 at 13:16 +0400, Marc-André Lureau wrote: > Hi > > On Tue, Jul 26, 2016 at 7:55 PM, Pavel Grunt <pgrunt@xxxxxxxxxx> wrote: > > > > Check for current size of monitors stored in display channels and avoid > > sending request to resize if it matches new requested size. > > > > For the same reason as previous patch, I don't think that assumption > work as there might be pending configuration changes. > It is best to tell the server the config you want, in all cases, and it should > do his best to match it. However, if it doesn't match, the client > shouldn't go wild and request it again (the client should not send > back a different config as a result of display channel config change, > only on UI display resize or user request). Thanks for the suggestion, I would be happy with this change. Not sure how it will behave when user changes resolution in the guest (with/without scaling). Pavel > > > > > Related: https://bugs.freedesktop.org/show_bug.cgi?id=94950 > > --- > > src/channel-main.c | 21 +++++++++++++++++++++ > > 1 file changed, 21 insertions(+) > > > > diff --git a/src/channel-main.c b/src/channel-main.c > > index cf43649..ede3d87 100644 > > --- a/src/channel-main.c > > +++ b/src/channel-main.c > > @@ -1074,7 +1074,28 @@ gboolean > > spice_main_send_monitor_config(SpiceMainChannel *channel) > > > > if (spice_main_agent_test_capability(channel, > > VD_AGENT_CAP_SPARSE_MONITORS_CONFIG)) > > { > > + gboolean config_changed = FALSE; > > + const SpiceSession *session = > > spice_channel_get_session(SPICE_CHANNEL(channel)); > > monitors = SPICE_N_ELEMENTS(c->display); > > + for (i = 0; i < monitors; i++) { /* check whether the configuration > > has changed */ > > + SpiceDisplayConfig config; > > + if (spice_session_get_display_config(session, i, &config)) { > > + if (memcmp(&config, &c->display[i], > > sizeof(SpiceDisplayConfig)) != 0) { > > + config_changed = TRUE; > > + break; > > + } > > + } else { > > + if (c->display[i].display_state == DISPLAY_ENABLED) { > > + /* request to enable display i */ > > + config_changed = TRUE; > > + break; > > + } > > + } > > + } > > + if (!config_changed) { > > + SPICE_DEBUG("monitor configuration has not changed"); > > + return TRUE; > > + } > > } else { > > monitors = 0; > > for (i = 0; i < SPICE_N_ELEMENTS(c->display); i++) { > > -- > > 2.9.2 > > > > _______________________________________________ > > Spice-devel mailing list > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/spice-devel > > > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel