[Spice-devel] [PATCH spice-gtk 3/3] main: Do not request to resize when have desired size
Pavel Grunt
pgrunt at redhat.com
Wed Jul 27 09:50:22 UTC 2016
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 at redhat.com> 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 at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/spice-devel
>
>
>
More information about the Spice-devel
mailing list