<div dir="ltr">That's true, I'll fix it thanks :)</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 30, 2016 at 3:38 PM, Frediano Ziglio <span dir="ltr"><<a href="mailto:fziglio@redhat.com" target="_blank">fziglio@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">><br>
> This patch updates the display configurations only when needed.<br>
> Currently vdagent updates the display configurations almost on every<br>
> "VD_AGENT_MONITORS_CONFIG" request, this approach is redundant as some<br>
> "VD_AGENT_MONITORS_CONFIG" requests don't apply any change to the<br>
> display configurations.<br>
><br>
> A good example of why this is needed, is the 'resize-guest' feature of<br>
> the spice-widget which when enabled causes the client to send periodic<br>
> "VD_AGENT_MONITORS_CONFIG" requests in order to resize the guest even<br>
> when no change is required. Prior to this patch the screen would<br>
> periodically flicker when using Virt-manager or Spicy due to this issue.<br>
><br>
<br>
</span>Patch looks fine however I tried to use it with one monitor on and one<br>
off and is still virt-manager is still flickering every second<br>
<span class="HOEnZb"><font color="#888888"><br>
Frediano<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> Signed-off-by: Sameeh Jubran <<a href="mailto:sameeh@daynix.com">sameeh@daynix.com</a>><br>
> ---<br>
>  vdagent/vdagent.cpp | 20 +++++++++++++++-----<br>
>  1 file changed, 15 insertions(+), 5 deletions(-)<br>
><br>
> diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp<br>
> index b4a3426..9e16e1f 100644<br>
> --- a/vdagent/vdagent.cpp<br>
> +++ b/vdagent/vdagent.cpp<br>
> @@ -644,6 +644,7 @@ bool VDAgent::handle_mon_config(<wbr>VDAgentMonitorsConfig*<br>
> mon_config, uint32_t port<br>
>      VDAgentMessage* reply_msg;<br>
>      VDAgentReply* reply;<br>
>      size_t display_count;<br>
> +    bool update_displays(false);<br>
><br>
>      _updating_display_config = true;<br>
><br>
> @@ -656,23 +657,32 @@ bool VDAgent::handle_mon_config(<wbr>VDAgentMonitorsConfig*<br>
> mon_config, uint32_t port<br>
>          if (i >= mon_config->num_of_monitors) {<br>
>              vd_printf("%d. detached", i);<br>
>              mode->set_attached(false);<br>
> +            update_displays = true;<br>
>              continue;<br>
>          }<br>
>          VDAgentMonConfig* mon = &mon_config->monitors[i];<br>
>          vd_printf("%d. %u*%u*%u (%d,%d) %u", i, mon->width, mon->height,<br>
>          mon->depth, mon->x,<br>
>                    mon->y, !!(mon_config->flags &<br>
>                    VD_AGENT_CONFIG_MONITORS_FLAG_<wbr>USE_POS));<br>
> -        if (mon->height == 0 && mon->depth == 0) {<br>
> +        if (mon->height == 0 && mon->depth == 0 && mode->get_attached()) {<br>
>              vd_printf("%d. detaching", i);<br>
>              mode->set_attached(false);<br>
> +            update_displays = true;<br>
>              continue;<br>
>          }<br>
> -        mode->set_res(mon->width, mon->height, mon->depth);<br>
> -        if (mon_config->flags & VD_AGENT_CONFIG_MONITORS_FLAG_<wbr>USE_POS) {<br>
> +        if (mode->get_height() != mon->height || mode->get_width() !=<br>
> mon->width || mode->get_depth() != mon->depth) {<br>
> +            mode->set_res(mon->width, mon->height, mon->depth);<br>
> +            update_displays = true;<br>
> +        }<br>
> +        if (mon_config->flags & VD_AGENT_CONFIG_MONITORS_FLAG_<wbr>USE_POS &&<br>
> (mode->get_pos_x() != mon->x || mode->get_pos_y() != mon->y)) {<br>
>              mode->set_pos(mon->x, mon->y);<br>
> +            update_displays = true;<br>
> +        }<br>
> +        if (!mode->get_attached()) {<br>
> +            mode->set_attached(true);<br>
> +            update_displays = true;<br>
>          }<br>
> -        mode->set_attached(true);<br>
>      }<br>
> -    if (display_count) {<br>
> +    if (update_displays) {<br>
>          _desktop_layout->set_displays(<wbr>);<br>
>      }<br>
><br>
> --<br>
> 2.7.4<br>
><br>
><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="4" color="#0b5394" face="times new roman, serif">Respectfully,<br></font><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" color="#0b5394" face="times new roman, serif"><b><i>Sameeh Jubran</i></b></font></div><div style="font-size:12.8px;color:rgb(136,136,136)"><i style="color:rgb(7,55,99);font-family:"times new roman",serif;font-size:large"><span style="line-height:15px"><a href="https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a" title="View public profile" name="UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_UNIQUE_ID_SafeHtmlFilter_14e2c1de96f8c195_UNIQUE_ID_SafeHtmlFilter_SafeHtmlFilter_SafeHtmlFilter_webProfileURL" style="color:rgb(17,85,204);margin:0px;padding:0px;border-width:0px;outline:none;vertical-align:baseline;text-decoration:none" target="_blank">Linkedin</a></span></i><br></div><div style="font-size:12.8px;color:rgb(136,136,136)"><font size="4" face="times new roman, serif" color="#073763"><i>Junior Software Engineer @ <a href="http://www.daynix.com" target="_blank">Daynix</a>.</i></font></div></div></div></div></div></div></div>
</div>