diff options
Diffstat (limited to 'firmware/target/hosted/sdl/button-sdl.c')
-rw-r--r-- | firmware/target/hosted/sdl/button-sdl.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c index cfe08de1d2..e9fc03792c 100644 --- a/firmware/target/hosted/sdl/button-sdl.c +++ b/firmware/target/hosted/sdl/button-sdl.c | |||
@@ -85,20 +85,21 @@ bool remote_button_hold(void) { | |||
85 | static void button_event(int key, bool pressed); | 85 | static void button_event(int key, bool pressed); |
86 | extern bool debug_wps; | 86 | extern bool debug_wps; |
87 | extern bool mapping; | 87 | extern bool mapping; |
88 | static void gui_message_loop(void) | 88 | |
89 | void gui_message_loop(void) | ||
89 | { | 90 | { |
90 | SDL_Event event; | 91 | SDL_Event event; |
91 | static int x,y,xybutton = 0; | 92 | static int x,y,xybutton = 0; |
92 | 93 | ||
93 | if (SDL_PollEvent(&event)) | 94 | while (SDL_WaitEvent(&event)) |
94 | { | 95 | { |
96 | sim_enter_irq_handler(); | ||
95 | switch(event.type) | 97 | switch(event.type) |
96 | { | 98 | { |
97 | case SDL_KEYDOWN: | 99 | case SDL_KEYDOWN: |
98 | button_event(event.key.keysym.sym, true); | ||
99 | break; | ||
100 | case SDL_KEYUP: | 100 | case SDL_KEYUP: |
101 | button_event(event.key.keysym.sym, false); | 101 | button_event(event.key.keysym.sym, event.type == SDL_KEYDOWN); |
102 | break; | ||
102 | case SDL_MOUSEBUTTONDOWN: | 103 | case SDL_MOUSEBUTTONDOWN: |
103 | switch ( event.button.button ) { | 104 | switch ( event.button.button ) { |
104 | #ifdef HAVE_SCROLLWHEEL | 105 | #ifdef HAVE_SCROLLWHEEL |
@@ -174,6 +175,7 @@ static void gui_message_loop(void) | |||
174 | 175 | ||
175 | case SDL_QUIT: | 176 | case SDL_QUIT: |
176 | { | 177 | { |
178 | sim_exit_irq_handler(); | ||
177 | exit(EXIT_SUCCESS); | 179 | exit(EXIT_SUCCESS); |
178 | break; | 180 | break; |
179 | } | 181 | } |
@@ -181,6 +183,7 @@ static void gui_message_loop(void) | |||
181 | /*printf("Unhandled event\n"); */ | 183 | /*printf("Unhandled event\n"); */ |
182 | break; | 184 | break; |
183 | } | 185 | } |
186 | sim_exit_irq_handler(); | ||
184 | } | 187 | } |
185 | } | 188 | } |
186 | 189 | ||
@@ -1502,7 +1505,6 @@ int button_read_device(void) | |||
1502 | return BUTTON_NONE; | 1505 | return BUTTON_NONE; |
1503 | else | 1506 | else |
1504 | #endif | 1507 | #endif |
1505 | gui_message_loop(); | ||
1506 | 1508 | ||
1507 | return btn; | 1509 | return btn; |
1508 | } | 1510 | } |