[virt-tools-list] [PATCH 2/2] Set Spice display to fullscreen if owning window is pending fullscreen
Marc-André Lureau
marcandre.lureau at gmail.com
Wed Oct 9 20:29:22 UTC 2013
To avoid introducing a new pending state, we could set
priv->fullscreen = TRUE;
before the delayed map-event, and in the handler, set it back to
FALSE. That really shouldn't be a problem, and since it's a
special/temporary case, I think that would be simpler.
On Wed, Oct 9, 2013 at 10:09 PM, Jonathon Jongsma <jjongsma at redhat.com> wrote:
> When you call virt_viewer_window_enter_fullscreen() on a hidden window, it
> doesn't actually change its fullscreen state. Instead, it sets up a map-event
> handler to enter fullscreen after it is shown. When _set_display() is called on
> a window that is pending fullscreen status, it initially sets the fullscreen
> state of the display to FALSE, which can cause an unwanted resize to be sent
> down to the guest.
> ---
> src/virt-viewer-window.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> index 0f62feb..7108aa0 100644
> --- a/src/virt-viewer-window.c
> +++ b/src/virt-viewer-window.c
> @@ -96,6 +96,7 @@ struct _VirtViewerWindowPrivate {
> GSList *accel_list;
> gboolean enable_mnemonics_save;
> gboolean grabbed;
> + gboolean fullscreen_pending;
> gint fullscreen_monitor;
> gboolean desktop_resize_pending;
> gboolean kiosk;
> @@ -294,6 +295,7 @@ virt_viewer_window_init (VirtViewerWindow *self)
> self->priv = GET_PRIVATE(self);
> priv = self->priv;
>
> + priv->fullscreen_pending = FALSE;
> priv->fullscreen_monitor = -1;
> priv->auto_resize = TRUE;
> g_value_init(&priv->accel_setting, G_TYPE_STRING);
> @@ -533,11 +535,13 @@ virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint monitor)
> priv->fullscreen_monitor = monitor;
>
> if (!gtk_widget_get_mapped(priv->window)) {
> + priv->fullscreen_pending = TRUE;
> g_signal_connect(priv->window, "map-event", G_CALLBACK(mapped), self);
> return;
> }
>
> priv->fullscreen = TRUE;
> + priv->fullscreen_pending = FALSE;
>
> gtk_check_menu_item_set_active(check, TRUE);
> gtk_widget_hide(menu);
> @@ -1232,7 +1236,7 @@ virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *displa
> virt_viewer_display_set_zoom_level(VIRT_VIEWER_DISPLAY(priv->display), priv->zoomlevel);
> virt_viewer_display_set_auto_resize(VIRT_VIEWER_DISPLAY(priv->display), priv->auto_resize);
> virt_viewer_display_set_monitor(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen_monitor);
> - virt_viewer_display_set_fullscreen(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen);
> + virt_viewer_display_set_fullscreen(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen_pending || priv->fullscreen);
>
> gtk_widget_show_all(GTK_WIDGET(display));
> gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL);
> --
> 1.8.3.1
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
--
Marc-André Lureau
More information about the virt-tools-list
mailing list