diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2018-12-22 22:16:32 -0500 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2018-12-23 18:01:54 -0500 |
commit | 75fe78c8029b26fbc14f13a71901f223ac214e34 (patch) | |
tree | 5c6d20120f5b7e205229e607a381d6f81609d326 /apps | |
parent | 7a718fc27dfea78bb212b4fd492334f4f142594e (diff) | |
download | rockbox-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.c | 19 | ||||
-rw-r--r-- | apps/recorder/recording.c | 5 |
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)) |