summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2018-12-22 22:16:32 -0500
committerSolomon Peachy <pizza@shaftnet.org>2018-12-23 18:01:54 -0500
commit75fe78c8029b26fbc14f13a71901f223ac214e34 (patch)
tree5c6d20120f5b7e205229e607a381d6f81609d326 /apps
parent7a718fc27dfea78bb212b4fd492334f4f142594e (diff)
downloadrockbox-75fe78c8029b26fbc14f13a71901f223ac214e34.tar.gz
rockbox-75fe78c8029b26fbc14f13a71901f223ac214e34.zip
Handle SYS_POWEROFF event in recorder and chessbox plugins
Credit to Igor Poretsky Change-Id: I151d3511b9cee269190d87df7fa7dd355aaafc9b
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/chessbox/chessbox.c19
-rw-r--r--apps/recorder/recording.c5
2 files changed, 21 insertions, 3 deletions
diff --git a/apps/plugins/chessbox/chessbox.c b/apps/plugins/chessbox/chessbox.c
index 7d42b72c1b..c7cd94c7e1 100644
--- a/apps/plugins/chessbox/chessbox.c
+++ b/apps/plugins/chessbox/chessbox.c
@@ -92,6 +92,9 @@ const char *level_string[] = { "Level 1: 60 moves / 5 min" ,
/* "While thinking" command */
int wt_command = COMMAND_NOP;
+/* System event id */
+static long cb_sysevent = 0;
+
/* ---- Get the board column and row (e2 f.e.) for a physical x y ---- */
static void xy2cr ( short x, short y, short *c, short *r ) {
if (computer == black ) {
@@ -189,12 +192,14 @@ static void cb_wt_callback ( void ) {
wt_command = COMMAND_NOP;
button = rb->button_get(false);
switch (button) {
+ case SYS_POWEROFF:
+ cb_sysevent = button;
#ifdef CB_RC_QUIT
case CB_RC_QUIT:
+#endif
wt_command = COMMAND_QUIT;
timeout = true;
break;
-#endif
case CB_MENU:
wt_command = COMMAND_MENU;
timeout = true;
@@ -531,11 +536,13 @@ static struct cb_command cb_get_viewer_command (void) {
while ( true ) {
button = rb->button_get(true);
switch (button) {
+ case SYS_POWEROFF:
+ cb_sysevent = button;
#ifdef CB_RC_QUIT
case CB_RC_QUIT:
+#endif
result.type = COMMAND_QUIT;
return result;
-#endif
#ifdef CB_RESTART
case CB_RESTART:
result.type = COMMAND_RESTART;
@@ -764,11 +771,13 @@ static struct cb_command cb_getcommand (void) {
while ( true ) {
button = rb->button_get(true);
switch (button) {
+ case SYS_POWEROFF:
+ cb_sysevent = button;
#ifdef CB_RC_QUIT
case CB_RC_QUIT:
+#endif
result.type = COMMAND_QUIT;
return result;
-#endif
#ifdef CB_RESTART
case CB_RESTART:
result.type = COMMAND_RESTART;
@@ -1058,6 +1067,7 @@ enum plugin_status plugin_start(const void* parameter) {
#if LCD_DEPTH > 1
rb->lcd_set_backdrop(NULL);
#endif
+ cb_sysevent = 0;
/* end of plugin init */
@@ -1070,5 +1080,8 @@ enum plugin_status plugin_start(const void* parameter) {
cb_play_game();
}
+ if (cb_sysevent)
+ rb->default_event_handler(cb_sysevent);
+
return PLUGIN_OK;
}
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index 0098fea007..0ab5654b10 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -1615,6 +1615,11 @@ bool recording_screen(bool no_source)
break;
#endif /* CONFIG_KEYPAD == RECORDER_PAD */
+ case SYS_POWEROFF:
+ default_event_handler(SYS_POWEROFF);
+ done = true;
+ break;
+
case SYS_USB_CONNECTED:
/* Only accept USB connection when not recording */
if(!(audio_stat & AUDIO_STATUS_RECORD))