* [Qemu-devel] [PATCH v3 1/2] sdl: use ctrl-alt-g as grab hotkey
2018-01-15 15:48 [Qemu-devel] [PATCH v3 0/2] sdl: hotkey updates and cleanups Gerd Hoffmann
@ 2018-01-15 15:48 ` Gerd Hoffmann
2018-01-15 15:48 ` [Qemu-devel] [PATCH v3 2/2] sdl: reorganize -no-frame support Gerd Hoffmann
1 sibling, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2018-01-15 15:48 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Be consistent with gtk and cocoa.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
ui/sdl.c | 30 +++++++++++++-----------------
ui/sdl2.c | 27 +++++++++++----------------
2 files changed, 24 insertions(+), 33 deletions(-)
diff --git a/ui/sdl.c b/ui/sdl.c
index 7b71a9ac58..9c664c86a0 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -368,11 +368,11 @@ static void sdl_update_caption(void)
status = " [Stopped]";
else if (gui_grab) {
if (alt_grab)
- status = " - Press Ctrl-Alt-Shift to exit mouse grab";
+ status = " - Press Ctrl-Alt-Shift-G to exit mouse grab";
else if (ctrl_grab)
- status = " - Press Right-Ctrl to exit mouse grab";
+ status = " - Press Right-Ctrl-G to exit mouse grab";
else
- status = " - Press Ctrl-Alt to exit mouse grab";
+ status = " - Press Ctrl-Alt-G to exit mouse grab";
}
if (qemu_name) {
@@ -576,6 +576,16 @@ static void handle_keydown(SDL_Event *ev)
toggle_full_screen();
gui_keysym = 1;
break;
+ case 0x22: /* 'g' key */
+ if (!gui_grab) {
+ if (qemu_console_is_graphic(NULL)) {
+ sdl_grab_start();
+ }
+ } else if (!gui_fullscreen) {
+ sdl_grab_end();
+ }
+ gui_keysym = 1;
+ break;
case 0x16: /* 'u' key on US keyboard */
if (scaling_active) {
scaling_active = 0;
@@ -711,20 +721,6 @@ static void handle_keyup(SDL_Event *ev)
}
if (!mod_state && gui_key_modifier_pressed) {
gui_key_modifier_pressed = 0;
- if (gui_keysym == 0) {
- /* exit/enter grab if pressing Ctrl-Alt */
- if (!gui_grab) {
- if (qemu_console_is_graphic(NULL)) {
- sdl_grab_start();
- }
- } else if (!gui_fullscreen) {
- sdl_grab_end();
- }
- /* SDL does not send back all the modifiers key, so we must
- * correct it. */
- reset_keys();
- return;
- }
gui_keysym = 0;
}
if (qemu_console_is_graphic(NULL) && !gui_keysym) {
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 89c6a2633c..1db5dd6f5f 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -141,11 +141,11 @@ static void sdl_update_caption(struct sdl2_console *scon)
status = " [Stopped]";
} else if (gui_grab) {
if (alt_grab) {
- status = " - Press Ctrl-Alt-Shift to exit grab";
+ status = " - Press Ctrl-Alt-Shift-G to exit grab";
} else if (ctrl_grab) {
- status = " - Press Right-Ctrl to exit grab";
+ status = " - Press Right-Ctrl-G to exit grab";
} else {
- status = " - Press Ctrl-Alt to exit grab";
+ status = " - Press Ctrl-Alt-G to exit grab";
}
}
@@ -364,6 +364,14 @@ static void handle_keydown(SDL_Event *ev)
toggle_full_screen(scon);
gui_keysym = 1;
break;
+ case SDL_SCANCODE_G:
+ gui_keysym = 1;
+ if (!gui_grab) {
+ sdl_grab_start(scon);
+ } else if (!gui_fullscreen) {
+ sdl_grab_end(scon);
+ }
+ break;
case SDL_SCANCODE_U:
sdl2_window_destroy(scon);
sdl2_window_create(scon);
@@ -416,19 +424,6 @@ static void handle_keyup(SDL_Event *ev)
}
if (!mod_state && gui_key_modifier_pressed) {
gui_key_modifier_pressed = 0;
- if (gui_keysym == 0) {
- /* exit/enter grab if pressing Ctrl-Alt */
- if (!gui_grab) {
- sdl_grab_start(scon);
- } else if (!gui_fullscreen) {
- sdl_grab_end(scon);
- }
- /* SDL does not send back all the modifiers key, so we must
- * correct it. */
- sdl2_reset_keys(scon);
- return;
- }
- sdl2_reset_keys(scon);
gui_keysym = 0;
}
if (!gui_keysym) {
--
2.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH v3 2/2] sdl: reorganize -no-frame support
2018-01-15 15:48 [Qemu-devel] [PATCH v3 0/2] sdl: hotkey updates and cleanups Gerd Hoffmann
2018-01-15 15:48 ` [Qemu-devel] [PATCH v3 1/2] sdl: use ctrl-alt-g as grab hotkey Gerd Hoffmann
@ 2018-01-15 15:48 ` Gerd Hoffmann
1 sibling, 0 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2018-01-15 15:48 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann, Paolo Bonzini
Drop no_frame flag from sdl_display_init argument list, use a global
variable instead. This is temporary until -no-frame support is dropped
altogether when we remove sdl1 support.
Remove any traces of noframe from sdl2 code. It is just dead code as
sdl2 doesn't support the SDL_NOFRAME window flag any more.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
include/sysemu/sysemu.h | 1 +
include/ui/console.h | 5 ++---
ui/sdl.c | 9 +++------
ui/sdl2.c | 7 +------
vl.c | 4 ++--
5 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 31612caf10..1c925309e3 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -112,6 +112,7 @@ extern const char *keyboard_layout;
extern int win2k_install_hack;
extern int alt_grab;
extern int ctrl_grab;
+extern int no_frame;
extern int smp_cpus;
extern unsigned int max_cpus;
extern int cursor_hide;
diff --git a/include/ui/console.h b/include/ui/console.h
index 580dfc57ee..7b35778444 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -436,7 +436,7 @@ void surface_gl_setup_viewport(QemuGLShader *gls,
/* sdl.c */
#ifdef CONFIG_SDL
void sdl_display_early_init(int opengl);
-void sdl_display_init(DisplayState *ds, int full_screen, int no_frame);
+void sdl_display_init(DisplayState *ds, int full_screen);
#else
static inline void sdl_display_early_init(int opengl)
{
@@ -444,8 +444,7 @@ static inline void sdl_display_early_init(int opengl)
error_report("SDL support is disabled");
abort();
}
-static inline void sdl_display_init(DisplayState *ds, int full_screen,
- int no_frame)
+static inline void sdl_display_init(DisplayState *ds, int full_screen)
{
/* This must never be called if CONFIG_SDL is disabled */
error_report("SDL support is disabled");
diff --git a/ui/sdl.c b/ui/sdl.c
index 9c664c86a0..9baaef8108 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -48,7 +48,6 @@ static int gui_saved_width;
static int gui_saved_height;
static int gui_saved_grab;
static int gui_fullscreen;
-static int gui_noframe;
static int gui_key_modifier_pressed;
static int gui_keysym;
static int gui_grab_code = KMOD_LALT | KMOD_LCTRL;
@@ -114,8 +113,9 @@ static void do_sdl_resize(int width, int height, int bpp)
} else {
flags |= SDL_RESIZABLE;
}
- if (gui_noframe)
+ if (no_frame) {
flags |= SDL_NOFRAME;
+ }
tmp_screen = SDL_SetVideoMode(width, height, bpp, flags);
if (!real_screen) {
@@ -940,7 +940,7 @@ void sdl_display_early_init(int opengl)
}
}
-void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
+void sdl_display_init(DisplayState *ds, int full_screen)
{
int flags;
uint8_t data = 0;
@@ -959,9 +959,6 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
exit(1);
}
- if (no_frame)
- gui_noframe = 1;
-
if (!full_screen) {
setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 0);
}
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 1db5dd6f5f..812c315891 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -38,7 +38,6 @@ static int gui_grab; /* if true, all keyboard/mouse events are grabbed */
static int gui_saved_grab;
static int gui_fullscreen;
-static int gui_noframe;
static int gui_key_modifier_pressed;
static int gui_keysym;
static int gui_grab_code = KMOD_LALT | KMOD_LCTRL;
@@ -767,7 +766,7 @@ void sdl_display_early_init(int opengl)
}
}
-void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
+void sdl_display_init(DisplayState *ds, int full_screen)
{
int flags;
uint8_t data = 0;
@@ -775,10 +774,6 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
int i;
SDL_SysWMinfo info;
- if (no_frame) {
- gui_noframe = 1;
- }
-
#ifdef __linux__
/* on Linux, SDL may use fbcon|directfb|svgalib when run without
* accessible $DISPLAY to open X11 window. This is often the case
diff --git a/vl.c b/vl.c
index 444b7507da..49be579024 100644
--- a/vl.c
+++ b/vl.c
@@ -150,7 +150,7 @@ static int rtc_date_offset = -1; /* -1 means no change */
QEMUClockType rtc_clock;
int vga_interface_type = VGA_NONE;
static int full_screen = 0;
-static int no_frame = 0;
+int no_frame;
int no_quit = 0;
static bool grab_on_hover;
Chardev *serial_hds[MAX_SERIAL_PORTS];
@@ -4692,7 +4692,7 @@ int main(int argc, char **argv, char **envp)
curses_display_init(ds, full_screen);
break;
case DT_SDL:
- sdl_display_init(ds, full_screen, no_frame);
+ sdl_display_init(ds, full_screen);
break;
case DT_COCOA:
cocoa_display_init(ds, full_screen);
--
2.9.3
^ permalink raw reply related [flat|nested] 3+ messages in thread