[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/15] sdl: Restore scaling mode on return from full
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH 06/15] sdl: Restore scaling mode on return from full screen |
Date: |
Sat, 30 Jul 2011 11:39:09 +0200 |
From: Jan Kiszka <address@hidden>
Save the scaling mode and its geometry when going full screen, restore
it when returning to windowed mode.
CC: Stefano Stabellini <address@hidden>
Signed-off-by: Jan Kiszka <address@hidden>
---
ui/sdl.c | 48 +++++++++++++++++++++++++++++++++---------------
1 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/ui/sdl.c b/ui/sdl.c
index 4acfe81..e18c59a 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -39,6 +39,9 @@ static SDL_Surface *real_screen;
static SDL_Surface *guest_screen = NULL;
static int gui_grab; /* if true, all keyboard/mouse events are grabbed */
static int last_vm_running;
+static bool gui_saved_scaling;
+static int gui_saved_width;
+static int gui_saved_height;
static int gui_saved_grab;
static int gui_fullscreen;
static int gui_noframe;
@@ -526,16 +529,42 @@ static void sdl_send_mouse_event(int dx, int dy, int dz,
int x, int y, int state
kbd_mouse_event(dx, dy, dz, buttons);
}
+static void sdl_scale(DisplayState *ds, int width, int height)
+{
+ int bpp = real_screen->format->BitsPerPixel;
+
+ if (bpp != 16 && bpp != 32) {
+ bpp = 32;
+ }
+ do_sdl_resize(width, height, bpp);
+ scaling_active = 1;
+ if (!is_buffer_shared(ds->surface)) {
+ ds->surface = qemu_resize_displaysurface(ds, ds_get_width(ds),
+ ds_get_height(ds));
+ dpy_resize(ds);
+ }
+}
+
static void toggle_full_screen(DisplayState *ds)
{
gui_fullscreen = !gui_fullscreen;
- do_sdl_resize(ds_get_width(ds), ds_get_height(ds),
- ds_get_bits_per_pixel(ds));
if (gui_fullscreen) {
+ gui_saved_width = real_screen->w;
+ gui_saved_height = real_screen->h;
+ gui_saved_scaling = scaling_active;
+
+ do_sdl_resize(ds_get_width(ds), ds_get_height(ds),
+ ds_get_bits_per_pixel(ds));
scaling_active = 0;
+
gui_saved_grab = gui_grab;
sdl_grab_start();
} else {
+ if (gui_saved_scaling) {
+ sdl_scale(ds, gui_saved_width, gui_saved_height);
+ } else {
+ do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0);
+ }
if (!gui_saved_grab)
sdl_grab_end();
}
@@ -737,22 +766,11 @@ static void sdl_refresh(DisplayState *ds)
}
}
break;
- case SDL_VIDEORESIZE:
- {
- SDL_ResizeEvent *rev = &ev->resize;
- int bpp = real_screen->format->BitsPerPixel;
- if (bpp != 16 && bpp != 32)
- bpp = 32;
- do_sdl_resize(rev->w, rev->h, bpp);
- scaling_active = 1;
- if (!is_buffer_shared(ds->surface)) {
- ds->surface = qemu_resize_displaysurface(ds, ds_get_width(ds),
ds_get_height(ds));
- dpy_resize(ds);
- }
+ case SDL_VIDEORESIZE:
+ sdl_scale(ds, ev->resize.w, ev->resize.h);
vga_hw_invalidate();
vga_hw_update();
break;
- }
default:
break;
}
--
1.7.3.4
- [Qemu-devel] [PATCH 00/15] sdl: Usability improvements, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 10/15] sdl: Never release input while in full screen mode, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 04/15] sdl: Properly mark modifier+u as hotkey, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 07/15] sdl: Drop bogus gui_fullscreen_initial_grab, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 06/15] sdl: Restore scaling mode on return from full screen,
Jan Kiszka <=
- [Qemu-devel] [PATCH 09/15] sdl: Consistently avoid grabbing input for text consoles, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 13/15] sdl: Add zoom hot keys, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 15/15] sdl: Refactor sdl_send_mouse_event, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 14/15] sdl: Factor out event handlers from sdl_refresh, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 05/15] sdl: Fix full screen toggling from scaled mode, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 01/15] sdl: Fix termination in -no-shutdown mode, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 08/15] sdl: Initialize gui_fullscreen earlier during setup, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 03/15] sdl: Avoid redundant scaling deactivation, Jan Kiszka, 2011/07/30
- [Qemu-devel] [PATCH 11/15] sdl: Fix cursor handling when switching consoles in absolute mouse mode, Jan Kiszka, 2011/07/30