summaryrefslogtreecommitdiffstats
path: root/firmware/target
diff options
context:
space:
mode:
authorThomas Jarosch <tomj@simonv.com>2011-02-15 19:43:04 +0000
committerThomas Jarosch <tomj@simonv.com>2011-02-15 19:43:04 +0000
commit258626f4550be2e586c9e5acf20cb71ee001a8e4 (patch)
tree24659c17ed31eac362056253392c960898540899 /firmware/target
parent1f85259ef15e51fa912324b635e2474aff4c0a0f (diff)
downloadrockbox-258626f4550be2e586c9e5acf20cb71ee001a8e4.tar.gz
rockbox-258626f4550be2e586c9e5acf20cb71ee001a8e4.zip
Fix the shutdown sequence for maemo, SDL and simulator builds
Do proper shutdown in RaaA builds like writeout of last.FM scrobbler file and other neat things. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29309 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/hosted/maemo/maemo-thread.c6
-rw-r--r--firmware/target/hosted/sdl/button-sdl.c5
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 @@
#include <libhal.h>
#include <libosso.h>
#include <SDL_thread.h>
+#include <SDL_events.h>
#include "config.h"
#include "system.h"
@@ -213,6 +214,11 @@ void reset_poweroff_timer(void)
void shutdown_hw(void)
{
+ /* Shut down SDL event loop */
+ SDL_Event event;
+ memset(&event, 0, sizeof(SDL_Event));
+ event.type = SDL_USEREVENT;
+ SDL_PushEvent(&event);
}
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)
break;
}
case SDL_QUIT:
+ /* Post SYS_POWEROFF event. Will post SDL_USEREVENT in shutdown_hw() if successful. */
+ queue_broadcast(SYS_POWEROFF, 0);
+ break;
+ case SDL_USEREVENT:
return true;
+ break;
}
return false;