diff options
Diffstat (limited to 'firmware/target/hosted')
-rw-r--r-- | firmware/target/hosted/maemo/maemo-thread.c | 6 | ||||
-rw-r--r-- | firmware/target/hosted/sdl/button-sdl.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/firmware/target/hosted/maemo/maemo-thread.c b/firmware/target/hosted/maemo/maemo-thread.c index f655ed597e..6593a9faa5 100644 --- a/firmware/target/hosted/maemo/maemo-thread.c +++ b/firmware/target/hosted/maemo/maemo-thread.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <libhal.h> | 23 | #include <libhal.h> |
24 | #include <libosso.h> | 24 | #include <libosso.h> |
25 | #include <SDL_thread.h> | 25 | #include <SDL_thread.h> |
26 | #include <SDL_events.h> | ||
26 | 27 | ||
27 | #include "config.h" | 28 | #include "config.h" |
28 | #include "system.h" | 29 | #include "system.h" |
@@ -213,6 +214,11 @@ void reset_poweroff_timer(void) | |||
213 | 214 | ||
214 | void shutdown_hw(void) | 215 | void shutdown_hw(void) |
215 | { | 216 | { |
217 | /* Shut down SDL event loop */ | ||
218 | SDL_Event event; | ||
219 | memset(&event, 0, sizeof(SDL_Event)); | ||
220 | event.type = SDL_USEREVENT; | ||
221 | SDL_PushEvent(&event); | ||
216 | } | 222 | } |
217 | 223 | ||
218 | void cancel_shutdown(void) | 224 | void cancel_shutdown(void) |
diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c index 25dad09341..9c8188a12f 100644 --- a/firmware/target/hosted/sdl/button-sdl.c +++ b/firmware/target/hosted/sdl/button-sdl.c | |||
@@ -261,7 +261,12 @@ static bool event_handler(SDL_Event *event) | |||
261 | break; | 261 | break; |
262 | } | 262 | } |
263 | case SDL_QUIT: | 263 | case SDL_QUIT: |
264 | /* Post SYS_POWEROFF event. Will post SDL_USEREVENT in shutdown_hw() if successful. */ | ||
265 | queue_broadcast(SYS_POWEROFF, 0); | ||
266 | break; | ||
267 | case SDL_USEREVENT: | ||
264 | return true; | 268 | return true; |
269 | break; | ||
265 | } | 270 | } |
266 | 271 | ||
267 | return false; | 272 | return false; |