Re: [PATCH virt-viewer 4/4] window: keep window size when leaving auto-conf fullscreen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 03/26/2013 02:09 AM, Marc-André Lureau wrote:


----- Mensaje original -----
Hi,

On 03/25/2013 10:32 PM, Marc-André Lureau wrote:
On Mon, Mar 25, 2013 at 10:26 PM, Marc-André Lureau
<marcandre.lureau@xxxxxxxxx> wrote:
+    if (virt_viewer_app_get_fullscreen_auto_conf(priv->app)) {

Actually, I realize the bug is about all kind of fullscreen. My
reasoning was that auto-conf is a bit special because it tries it
best
to keep client monitor configuration, rather than obeying to window
manager constrains. But that distincition is a bit blurry nowadays.

So we can decide to use app_get_fullscreen() instead here.

I agree that the problem is with all kinds of fullscreen, but only
when we start fullscreen. so we've no priv->before_saved and then
we end up with the very small windows for all monitors.

It seems wrong to me to always try to keep the fullscreen size /
resolution when we leave fullscreen. I think restoring the size
and position from before going fullscreen is the right thing to
do. Except when there is no size / position to restore, and I
believe that in that case it does make sense to keep the window
sizes as they were in fullscreen mode.

So how about:

      if (priv->before_saved) {
          ...
      } else {
          virt_viewer_display_queue_resize(priv->display);
      }


That's ok, though we need to change the:

-    if (!priv->before_saved) {
+    if (gtk_widget_get_realized(priv->window)) {

Which seems a reasonable change.

But what then if enter_fullscreen is somehow execute twice?
Then the coordinates + size we get from the second run are
when we're already fullscreen. Which is what the
!priv->before_saved protects against.

So IMHO the new check should be:
+    if (!priv->before_saved && gtk_widget_get_realized(priv->window)) {

Also, I don't think we should set back priv->before_saved = FALSE, as it contains valid value from then on. And setting it back to FALSE might end up to queue_resize() if we call leave_fullscreen() twice for some reason.

leave_fullscreen is protected against being called twice, it starts with:

    if (!priv->fullscreen)
        return;

Where as enter_fullscreen has the before_fullscreen saving before
its similar getting called twice check, not sure why things are done
that way, but they are.

###

Thinking about this it is probably best to move the

    if (priv->fullscreen)
        return;

In enter_fullscreen to the top, and then go with your suggestion,
so make the check for setting before_fullscreen + before_saved:

    if (gtk_widget_get_realized(priv->window)) {

And removing the priv->before_saved = FALSE call.

Regards,

Hans

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list





[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux