qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel]  [PATCH 1/2] SDL2: only show consoles by shortcuts and not hide.
@ 2016-08-23 20:36 Andrei Karas
  2016-09-07 11:27 ` Gerd Hoffmann
  0 siblings, 1 reply; 6+ messages in thread
From: Andrei Karas @ 2016-08-23 20:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

This fix issue with stuck keys in SDL2 if press one of shortcuts
for show/hide consoles.
For close any consoles except main window can be used default WM/DE
action for close window.

Signed-off-by: Andrei Karas <akaras@inbox.ru>
---
 ui/sdl2.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/ui/sdl2.c b/ui/sdl2.c
index 30d2a3c..4441e99 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -363,15 +363,17 @@ static void handle_keydown(SDL_Event *ev)
 
             win = ev->key.keysym.scancode - SDL_SCANCODE_1;
             if (win < sdl2_num_outputs) {
-                sdl2_console[win].hidden = !sdl2_console[win].hidden;
-                if (sdl2_console[win].real_window) {
-                    if (sdl2_console[win].hidden) {
-                        SDL_HideWindow(sdl2_console[win].real_window);
-                    } else {
-                        SDL_ShowWindow(sdl2_console[win].real_window);
+                if (sdl2_console[win].hidden == 1) {
+                    sdl2_console[win].hidden = !sdl2_console[win].hidden;
+                    if (sdl2_console[win].real_window) {
+                        if (sdl2_console[win].hidden) {
+                            SDL_HideWindow(sdl2_console[win].real_window);
+                        } else {
+                            SDL_ShowWindow(sdl2_console[win].real_window);
+                        }
                     }
+                    gui_keysym = 1;
                 }
-                gui_keysym = 1;
             }
             break;
         case SDL_SCANCODE_F:
@@ -566,9 +568,14 @@ static void handle_windowevent(SDL_Event *ev)
         update_displaychangelistener(&scon->dcl, 500);
         break;
     case SDL_WINDOWEVENT_CLOSE:
-        if (!no_quit) {
-            no_shutdown = 0;
-            qemu_system_shutdown_request();
+        if (scon->idx == 0) {
+            if (!no_quit) {
+                no_shutdown = 0;
+                qemu_system_shutdown_request();
+            }
+        } else {
+            scon->hidden = true;
+            SDL_HideWindow(scon->real_window);
         }
         break;
     case SDL_WINDOWEVENT_SHOWN:
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/2] SDL2: only show consoles by shortcuts and not hide.
@ 2016-08-23 20:28 Andrei Karas
  0 siblings, 0 replies; 6+ messages in thread
From: Andrei Karas @ 2016-08-23 20:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerd Hoffmann

This fix issue with stuck keys in SDL2 if press one of shortcuts
for show/hide consoles.
For close any consoles except main window can be used default WM/DE
action for close window.

Signed-off-by: Andrei Karas <akaras@inbox.ru>
---
 ui/sdl2.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/ui/sdl2.c b/ui/sdl2.c
index 30d2a3c..4441e99 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -363,15 +363,17 @@ static void handle_keydown(SDL_Event *ev)
 
             win = ev->key.keysym.scancode - SDL_SCANCODE_1;
             if (win < sdl2_num_outputs) {
-                sdl2_console[win].hidden = !sdl2_console[win].hidden;
-                if (sdl2_console[win].real_window) {
-                    if (sdl2_console[win].hidden) {
-                        SDL_HideWindow(sdl2_console[win].real_window);
-                    } else {
-                        SDL_ShowWindow(sdl2_console[win].real_window);
+                if (sdl2_console[win].hidden == 1) {
+                    sdl2_console[win].hidden = !sdl2_console[win].hidden;
+                    if (sdl2_console[win].real_window) {
+                        if (sdl2_console[win].hidden) {
+                            SDL_HideWindow(sdl2_console[win].real_window);
+                        } else {
+                            SDL_ShowWindow(sdl2_console[win].real_window);
+                        }
                     }
+                    gui_keysym = 1;
                 }
-                gui_keysym = 1;
             }
             break;
         case SDL_SCANCODE_F:
@@ -566,9 +568,14 @@ static void handle_windowevent(SDL_Event *ev)
         update_displaychangelistener(&scon->dcl, 500);
         break;
     case SDL_WINDOWEVENT_CLOSE:
-        if (!no_quit) {
-            no_shutdown = 0;
-            qemu_system_shutdown_request();
+        if (scon->idx == 0) {
+            if (!no_quit) {
+                no_shutdown = 0;
+                qemu_system_shutdown_request();
+            }
+        } else {
+            scon->hidden = true;
+            SDL_HideWindow(scon->real_window);
         }
         break;
     case SDL_WINDOWEVENT_SHOWN:
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-09-08 18:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-23 20:36 [Qemu-devel] [PATCH 1/2] SDL2: only show consoles by shortcuts and not hide Andrei Karas
2016-09-07 11:27 ` Gerd Hoffmann
2016-09-07 12:24   ` Andrei Karas
2016-09-08  6:10     ` Gerd Hoffmann
2016-09-08 18:50       ` Andrei Karas
  -- strict thread matches above, loose matches on Subject: below --
2016-08-23 20:28 Andrei Karas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).