Re: [PATCH 0/2] RFC: handle startup race for monitors config

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

 



On Thu, 2015-04-02 at 16:42 +0200, Marc-André Lureau wrote:
> 
> On Thu, Apr 2, 2015 at 4:36 PM, Jonathon Jongsma <jjongsma@xxxxxxxxxx>
> wrote:
>         That would be a pretty drastic change in behavior. So, no, I
>         have not
>         considered that. It would also open up a large can of worms.
>         For
>         example, what would happen if you re-configured the displays
>         from within
>         the guest control panel. What would you do then?
>         
> 
> 
> I would eventually follow guest configuration, but I wouldn't send
> back a new configuration (no auto-resize).
> 


So, I did a quick test where I used an un-modified spice-server and the
following diff to virt-viewer:

===================

diff --git a/src/virt-viewer-session.c b/src/virt-viewer-session.c
index 131a500..5f47d09 100644
--- a/src/virt-viewer-session.c
+++ b/src/virt-viewer-session.c
@@ -412,6 +412,13 @@ virt_viewer_session_on_monitor_geometry_changed(VirtViewerSession* self,
     if (!klass->apply_monitor_geometry)
         return;
 
+    /* don't send monitor resize if we're in auto-conf fullscreen mode...*/
+    if (virt_viewer_app_get_fullscreen(self->priv->app)) {
+        g_debug("%s: not sending new monitors config because app is in fullscreen mode", G_STRFUNC);
+        return;
+    }
+    g_debug("%s: sending", G_STRFUNC);
+
     /* find highest monitor ID so we can create the sparse array */
     for (l = self->priv->displays; l; l = l->next) {
         VirtViewerDisplay *d = VIRT_VIEWER_DISPLAY(l->data);

====================


This is basically what you suggest. While we're in auto-conf mode, it never
sends down monitor config changes, but it does respond to display updates from
the server. When the user exits fullscreen mode, it resumes auto-resize and
sends new monitor config messages to the server. It improved the situation, but
didn't fix it. Before applying this patch, when I started virt-viewer in
--full-screen mode, the extra display was left enabled about 25-50% of the
time. After this patch, it happens only about 10% of the time.

But it also seems to introduce a regression that I haven't investigated yet:
when things work properly (e.g. only a single fullscreen display is shown) and
I follow these steps:
 - exit fullscreen
 - enable a second display (View > Displays > Display 2)

The second window appears, but it simply displays "Waiting for display 2..."
forever. The display only shows starts working after you resize one of the
windows.


_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]