diff options
author | Thomas Martitz <kugel@rockbox.org> | 2010-08-24 14:30:46 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2010-08-24 14:30:46 +0000 |
commit | cae4ae2c71ae10ff67d39a78a705136e740dc07e (patch) | |
tree | b5bb5e1879493f67d7c7ad977fba90eb49b743d7 | |
parent | 3478bc5d6dc0a081c3aeb4f501c8b4cb4f53a78d (diff) | |
download | rockbox-cae4ae2c71ae10ff67d39a78a705136e740dc07e.tar.gz rockbox-cae4ae2c71ae10ff67d39a78a705136e740dc07e.zip |
Second try: Introduce plugin_crt0.c that every plugin links.
It handles exit() properly, calling the handler also when the plugin returns
normally (also make exit() more standard compliant while at it).
It also holds PLUGIN_HEADER, so that it doesn't need to be in each plugin anymore.
To work better together with callbacks passed to rb->default_event_handler_ex() introduce exit_on_usb() which will call the exit handler before showing the usb screen and exit() after it.
In most cases rb->default_event_handler_ex() was passed a callback which was manually called at all other return points. This can now be done via atexit().
In future plugin_crt0.c could also handle clearing bss, initializing iram and more.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27873 a1c6a512-1295-4272-9138-f99709370657
142 files changed, 372 insertions, 341 deletions
diff --git a/apps/plugin.h b/apps/plugin.h index 624b7039b8..17c36fa8b1 100644 --- a/apps/plugin.h +++ b/apps/plugin.h | |||
@@ -147,17 +147,21 @@ void* plugin_get_buffer(size_t *buffer_size); | |||
147 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ | 147 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ |
148 | 148 | ||
149 | /* increase this every time the api struct changes */ | 149 | /* increase this every time the api struct changes */ |
150 | #define PLUGIN_API_VERSION 190 | 150 | #define PLUGIN_API_VERSION 191 |
151 | 151 | ||
152 | /* update this to latest version if a change to the api struct breaks | 152 | /* update this to latest version if a change to the api struct breaks |
153 | backwards compatibility (and please take the opportunity to sort in any | 153 | backwards compatibility (and please take the opportunity to sort in any |
154 | new function which are "waiting" at the end of the function table) */ | 154 | new function which are "waiting" at the end of the function table) */ |
155 | #define PLUGIN_MIN_API_VERSION 190 | 155 | #define PLUGIN_MIN_API_VERSION 191 |
156 | 156 | ||
157 | /* plugin return codes */ | 157 | /* plugin return codes */ |
158 | /* internal returns start at 0x100 to make exit(1..255) work */ | ||
159 | #define INTERNAL_PLUGIN_RETVAL_START 0x100 | ||
158 | enum plugin_status { | 160 | enum plugin_status { |
159 | PLUGIN_OK = 0, | 161 | PLUGIN_OK = 0, /* PLUGIN_OK == EXIT_SUCCESS */ |
160 | PLUGIN_USB_CONNECTED, | 162 | /* 1...255 reserved for exit() */ |
163 | PLUGIN_USB_CONNECTED = INTERNAL_PLUGIN_RETVAL_START, | ||
164 | PLUGIN_POWEROFF, | ||
161 | PLUGIN_GOTO_WPS, | 165 | PLUGIN_GOTO_WPS, |
162 | PLUGIN_ERROR = -1, | 166 | PLUGIN_ERROR = -1, |
163 | }; | 167 | }; |
@@ -912,14 +916,14 @@ extern unsigned char plugin_end_addr[]; | |||
912 | const struct plugin_header __header \ | 916 | const struct plugin_header __header \ |
913 | __attribute__ ((section (".header")))= { \ | 917 | __attribute__ ((section (".header")))= { \ |
914 | PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \ | 918 | PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \ |
915 | plugin_start_addr, plugin_end_addr, plugin_start, &rb }; | 919 | plugin_start_addr, plugin_end_addr, plugin__start, &rb }; |
916 | #else /* PLATFORM_HOSTED */ | 920 | #else /* PLATFORM_HOSTED */ |
917 | #define PLUGIN_HEADER \ | 921 | #define PLUGIN_HEADER \ |
918 | const struct plugin_api *rb DATA_ATTR; \ | 922 | const struct plugin_api *rb DATA_ATTR; \ |
919 | const struct plugin_header __header \ | 923 | const struct plugin_header __header \ |
920 | __attribute__((visibility("default"))) = { \ | 924 | __attribute__((visibility("default"))) = { \ |
921 | PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \ | 925 | PLUGIN_MAGIC, TARGET_ID, PLUGIN_API_VERSION, \ |
922 | NULL, NULL, plugin_start, &rb }; | 926 | NULL, NULL, plugin__start, &rb }; |
923 | #endif /* CONFIG_PLATFORM */ | 927 | #endif /* CONFIG_PLATFORM */ |
924 | 928 | ||
925 | #ifdef PLUGIN_USE_IRAM | 929 | #ifdef PLUGIN_USE_IRAM |
@@ -954,7 +958,7 @@ void plugin_tsr(bool (*exit_callback)(bool reenter)); | |||
954 | 958 | ||
955 | /* defined by the plugin */ | 959 | /* defined by the plugin */ |
956 | extern const struct plugin_api *rb; | 960 | extern const struct plugin_api *rb; |
957 | enum plugin_status plugin_start(const void* parameter) | 961 | enum plugin_status plugin__start(const void* parameter) |
958 | NO_PROF_ATTR; | 962 | NO_PROF_ATTR; |
959 | 963 | ||
960 | #endif /* __PCTOOL__ */ | 964 | #endif /* __PCTOOL__ */ |
diff --git a/apps/plugins/alarmclock.c b/apps/plugins/alarmclock.c index a22a2f29a5..3ccb0c3ebd 100644 --- a/apps/plugins/alarmclock.c +++ b/apps/plugins/alarmclock.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/pluginlib_actions.h" | 23 | #include "lib/pluginlib_actions.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | const struct button_mapping *plugin_contexts[] = { pla_main_ctx }; | 27 | const struct button_mapping *plugin_contexts[] = { pla_main_ctx }; |
28 | 28 | ||
diff --git a/apps/plugins/alpine_cdc.c b/apps/plugins/alpine_cdc.c index 9357b2e5ab..f6b236895d 100644 --- a/apps/plugins/alpine_cdc.c +++ b/apps/plugins/alpine_cdc.c | |||
@@ -36,7 +36,7 @@ | |||
36 | /* Only build for (correct) target */ | 36 | /* Only build for (correct) target */ |
37 | #if CONFIG_CPU==SH7034 && !(CONFIG_STORAGE & STORAGE_MMC) | 37 | #if CONFIG_CPU==SH7034 && !(CONFIG_STORAGE & STORAGE_MMC) |
38 | 38 | ||
39 | PLUGIN_HEADER | 39 | |
40 | 40 | ||
41 | #ifdef HAVE_LCD_CHARCELLS /* player model */ | 41 | #ifdef HAVE_LCD_CHARCELLS /* player model */ |
42 | #define LINES 2 | 42 | #define LINES 2 |
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c index e6efd38d96..bb0e4f594b 100644 --- a/apps/plugins/battery_bench.c +++ b/apps/plugins/battery_bench.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #include "version.h" | 23 | #include "version.h" |
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define BATTERY_LOG "/battery_bench.txt" | 27 | #define BATTERY_LOG "/battery_bench.txt" |
28 | #define BUF_SIZE 16000 | 28 | #define BUF_SIZE 16000 |
diff --git a/apps/plugins/beatbox/beatbox.c b/apps/plugins/beatbox/beatbox.c index a51f738cd2..9cb7dd4465 100644 --- a/apps/plugins/beatbox/beatbox.c +++ b/apps/plugins/beatbox/beatbox.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "midi/sequencer.h" | 26 | #include "midi/sequencer.h" |
27 | #include "midi/midifile.h" | 27 | #include "midi/midifile.h" |
28 | 28 | ||
29 | PLUGIN_HEADER | 29 | |
30 | PLUGIN_IRAM_DECLARE | 30 | PLUGIN_IRAM_DECLARE |
31 | 31 | ||
32 | /* variable button definitions */ | 32 | /* variable button definitions */ |
diff --git a/apps/plugins/bench_mem_jpeg.c b/apps/plugins/bench_mem_jpeg.c index 5169286fe3..4e24f2a405 100644 --- a/apps/plugins/bench_mem_jpeg.c +++ b/apps/plugins/bench_mem_jpeg.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/jpeg_mem.h" | 25 | #include "lib/jpeg_mem.h" |
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | /* a null output plugin to save memory and better isolate decode cost */ | 28 | /* a null output plugin to save memory and better isolate decode cost */ |
29 | static unsigned int get_size_null(struct bitmap *bm) | 29 | static unsigned int get_size_null(struct bitmap *bm) |
diff --git a/apps/plugins/bench_scaler.c b/apps/plugins/bench_scaler.c index 246271dcc8..5db2987ec7 100644 --- a/apps/plugins/bench_scaler.c +++ b/apps/plugins/bench_scaler.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/jpeg_mem.h" | 25 | #include "lib/jpeg_mem.h" |
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | static unsigned char output; | 28 | static unsigned char output; |
29 | static int output_y = 0; | 29 | static int output_y = 0; |
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c index 7b3dbef805..8b28b815b8 100644 --- a/apps/plugins/blackjack.c +++ b/apps/plugins/blackjack.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "lib/highscore.h" | 26 | #include "lib/highscore.h" |
27 | #include "lib/playback_control.h" | 27 | #include "lib/playback_control.h" |
28 | 28 | ||
29 | PLUGIN_HEADER | 29 | |
30 | 30 | ||
31 | /* save files */ | 31 | /* save files */ |
32 | #define SCORE_FILE PLUGIN_GAMES_DIR "/blackjack.score" | 32 | #define SCORE_FILE PLUGIN_GAMES_DIR "/blackjack.score" |
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c index f193818850..1ee5b1eaeb 100644 --- a/apps/plugins/bounce.c +++ b/apps/plugins/bounce.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "time.h" | 22 | #include "time.h" |
23 | #include "lib/fixedpoint.h" | 23 | #include "lib/fixedpoint.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define SS_TITLE "Bouncer" | 27 | #define SS_TITLE "Bouncer" |
28 | 28 | ||
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index 98de3d439f..50ceaa7557 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #include "pluginbitmaps/brickmania_break.h" | 41 | #include "pluginbitmaps/brickmania_break.h" |
42 | #endif | 42 | #endif |
43 | 43 | ||
44 | PLUGIN_HEADER | 44 | |
45 | 45 | ||
46 | 46 | ||
47 | /* | 47 | /* |
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c index f169a2ef45..320fd3e4c6 100644 --- a/apps/plugins/bubbles.c +++ b/apps/plugins/bubbles.c | |||
@@ -31,8 +31,6 @@ | |||
31 | #include "lib/playback_control.h" | 31 | #include "lib/playback_control.h" |
32 | #include "lib/highscore.h" | 32 | #include "lib/highscore.h" |
33 | 33 | ||
34 | PLUGIN_HEADER | ||
35 | |||
36 | /* files */ | 34 | /* files */ |
37 | #define SCORE_FILE PLUGIN_GAMES_DIR "/bubbles.score" | 35 | #define SCORE_FILE PLUGIN_GAMES_DIR "/bubbles.score" |
38 | #define SAVE_FILE PLUGIN_GAMES_DIR "/bubbles.save" | 36 | #define SAVE_FILE PLUGIN_GAMES_DIR "/bubbles.save" |
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c index 95b35e903c..8068b9c4f3 100644 --- a/apps/plugins/calculator.c +++ b/apps/plugins/calculator.c | |||
@@ -78,7 +78,7 @@ F3: equal to "=" | |||
78 | #ifdef HAVE_LCD_BITMAP | 78 | #ifdef HAVE_LCD_BITMAP |
79 | #include "math.h" | 79 | #include "math.h" |
80 | 80 | ||
81 | PLUGIN_HEADER | 81 | |
82 | 82 | ||
83 | 83 | ||
84 | #define M_TWOPI (M_PI * 2.0) | 84 | #define M_TWOPI (M_PI * 2.0) |
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index 13abdfc29a..32d4501920 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "lib/playback_control.h" | 25 | #include "lib/playback_control.h" |
26 | #include "lib/configfile.h" | 26 | #include "lib/configfile.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | #if CONFIG_KEYPAD == RECORDER_PAD | 30 | #if CONFIG_KEYPAD == RECORDER_PAD |
31 | #define CALENDAR_QUIT BUTTON_OFF | 31 | #define CALENDAR_QUIT BUTTON_OFF |
diff --git a/apps/plugins/chessbox.c b/apps/plugins/chessbox.c index a6db7ba949..14d2936848 100644 --- a/apps/plugins/chessbox.c +++ b/apps/plugins/chessbox.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "lib/overlay.h" | 25 | #include "lib/overlay.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* this is the plugin entry point */ | 29 | /* this is the plugin entry point */ |
30 | enum plugin_status plugin_start(const void* parameter) | 30 | enum plugin_status plugin_start(const void* parameter) |
diff --git a/apps/plugins/chessbox/chessbox.c b/apps/plugins/chessbox/chessbox.c index 45f052d30a..4e298a8214 100644 --- a/apps/plugins/chessbox/chessbox.c +++ b/apps/plugins/chessbox/chessbox.c | |||
@@ -49,7 +49,7 @@ struct cb_command { | |||
49 | extern const fb_data chessbox_pieces[]; | 49 | extern const fb_data chessbox_pieces[]; |
50 | 50 | ||
51 | 51 | ||
52 | PLUGIN_HEADER | 52 | |
53 | 53 | ||
54 | /* Tile size defined by the assigned bitmap */ | 54 | /* Tile size defined by the assigned bitmap */ |
55 | #include "pluginbitmaps/chessbox_pieces.h" | 55 | #include "pluginbitmaps/chessbox_pieces.h" |
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c index 3afa705bf1..0ddfcb59fc 100644 --- a/apps/plugins/chessclock.c +++ b/apps/plugins/chessclock.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c index f60bdb36c0..cca6229a3f 100644 --- a/apps/plugins/chip8.c +++ b/apps/plugins/chip8.c | |||
@@ -21,7 +21,7 @@ | |||
21 | ****************************************************************************/ | 21 | ****************************************************************************/ |
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #define EXTERN static | 26 | #define EXTERN static |
27 | #define STATIC static | 27 | #define STATIC static |
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c index 67cb9ee760..86f1bfba5d 100644 --- a/apps/plugins/chopper.c +++ b/apps/plugins/chopper.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "lib/helper.h" | 26 | #include "lib/helper.h" |
27 | #include "lib/playback_control.h" | 27 | #include "lib/playback_control.h" |
28 | 28 | ||
29 | PLUGIN_HEADER | 29 | |
30 | 30 | ||
31 | /* | 31 | /* |
32 | Still To do: | 32 | Still To do: |
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c index 0735656839..0bdf693f54 100644 --- a/apps/plugins/clix.c +++ b/apps/plugins/clix.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | #include "lib/display_text.h" | 23 | #include "lib/display_text.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #if (CONFIG_KEYPAD == SANSA_E200_PAD) | 27 | #if (CONFIG_KEYPAD == SANSA_E200_PAD) |
28 | #define CLIX_BUTTON_QUIT BUTTON_POWER | 28 | #define CLIX_BUTTON_QUIT BUTTON_POWER |
diff --git a/apps/plugins/clock/clock.c b/apps/plugins/clock/clock.c index f06f3e15e4..8a1a55e17f 100644 --- a/apps/plugins/clock/clock.c +++ b/apps/plugins/clock/clock.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "time.h" | 23 | #include "time.h" |
24 | #include "lib/pluginlib_actions.h" | 24 | #include "lib/pluginlib_actions.h" |
25 | #include "lib/pluginlib_exit.h" | ||
25 | #include "lib/xlcd.h" | 26 | #include "lib/xlcd.h" |
26 | 27 | ||
27 | #include "clock.h" | 28 | #include "clock.h" |
@@ -30,7 +31,7 @@ | |||
30 | #include "clock_menu.h" | 31 | #include "clock_menu.h" |
31 | #include "clock_settings.h" | 32 | #include "clock_settings.h" |
32 | 33 | ||
33 | PLUGIN_HEADER | 34 | |
34 | 35 | ||
35 | /* Keymaps */ | 36 | /* Keymaps */ |
36 | const struct button_mapping* plugin_contexts[]={ | 37 | const struct button_mapping* plugin_contexts[]={ |
@@ -56,9 +57,8 @@ const struct button_mapping* plugin_contexts[]={ | |||
56 | /************************** | 57 | /************************** |
57 | * Cleanup on plugin return | 58 | * Cleanup on plugin return |
58 | *************************/ | 59 | *************************/ |
59 | void cleanup(void *parameter) | 60 | void cleanup(void) |
60 | { | 61 | { |
61 | (void)parameter; | ||
62 | clock_draw_restore_colors(); | 62 | clock_draw_restore_colors(); |
63 | if(clock_settings.general.save_settings == 1) | 63 | if(clock_settings.general.save_settings == 1) |
64 | save_settings(); | 64 | save_settings(); |
@@ -115,6 +115,7 @@ enum plugin_status plugin_start(const void* parameter){ | |||
115 | struct counter counter; | 115 | struct counter counter; |
116 | bool exit_clock = false; | 116 | bool exit_clock = false; |
117 | (void)parameter; | 117 | (void)parameter; |
118 | atexit(cleanup); | ||
118 | 119 | ||
119 | #if LCD_DEPTH > 1 | 120 | #if LCD_DEPTH > 1 |
120 | rb->lcd_set_backdrop(NULL); | 121 | rb->lcd_set_backdrop(NULL); |
@@ -174,9 +175,7 @@ enum plugin_status plugin_start(const void* parameter){ | |||
174 | exit_clock=main_menu(); | 175 | exit_clock=main_menu(); |
175 | break; | 176 | break; |
176 | default: | 177 | default: |
177 | if(rb->default_event_handler_ex(button, cleanup, NULL) | 178 | exit_on_usb(button); |
178 | == SYS_USB_CONNECTED) | ||
179 | return PLUGIN_USB_CONNECTED; | ||
180 | if(time.second != last_second){ | 179 | if(time.second != last_second){ |
181 | last_second=time.second; | 180 | last_second=time.second; |
182 | redraw=true; | 181 | redraw=true; |
@@ -193,6 +192,5 @@ enum plugin_status plugin_start(const void* parameter){ | |||
193 | } | 192 | } |
194 | } | 193 | } |
195 | 194 | ||
196 | cleanup(NULL); | ||
197 | return PLUGIN_OK; | 195 | return PLUGIN_OK; |
198 | } | 196 | } |
diff --git a/apps/plugins/codebuster.c b/apps/plugins/codebuster.c index 810bd0c570..1169f265c3 100644 --- a/apps/plugins/codebuster.c +++ b/apps/plugins/codebuster.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "lib/playback_control.h" | 24 | #include "lib/playback_control.h" |
25 | #include "lib/pluginlib_actions.h" | 25 | #include "lib/pluginlib_actions.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* Limits */ | 29 | /* Limits */ |
30 | #define MAX_PIECES_COUNT 5 | 30 | #define MAX_PIECES_COUNT 5 |
diff --git a/apps/plugins/credits.c b/apps/plugins/credits.c index 0251849c11..a05b44c20d 100644 --- a/apps/plugins/credits.c +++ b/apps/plugins/credits.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/helper.h" | 22 | #include "lib/helper.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | static const char* const credits[] = { | 26 | static const char* const credits[] = { |
27 | #include "credits.raw" /* generated list of names from docs/CREDITS */ | 27 | #include "credits.raw" /* generated list of names from docs/CREDITS */ |
diff --git a/apps/plugins/crypt_firmware.c b/apps/plugins/crypt_firmware.c index 051a3d1bd9..f9bdd4d031 100644 --- a/apps/plugins/crypt_firmware.c +++ b/apps/plugins/crypt_firmware.c | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | #include "plugin.h" | 38 | #include "plugin.h" |
39 | 39 | ||
40 | PLUGIN_HEADER | 40 | |
41 | 41 | ||
42 | static void aes_encrypt(void* data, uint32_t size) | 42 | static void aes_encrypt(void* data, uint32_t size) |
43 | { | 43 | { |
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c index 2b1e00d690..7dec822d56 100644 --- a/apps/plugins/cube.c +++ b/apps/plugins/cube.c | |||
@@ -22,6 +22,7 @@ | |||
22 | ***************************************************************************/ | 22 | ***************************************************************************/ |
23 | #include "plugin.h" | 23 | #include "plugin.h" |
24 | #include "lib/playergfx.h" | 24 | #include "lib/playergfx.h" |
25 | #include "lib/pluginlib_exit.h" | ||
25 | #if LCD_DEPTH > 1 | 26 | #if LCD_DEPTH > 1 |
26 | #include "lib/mylcd.h" /* MYLCD_CFG_RB_XLCD or MYLCD_CFG_PGFX */ | 27 | #include "lib/mylcd.h" /* MYLCD_CFG_RB_XLCD or MYLCD_CFG_PGFX */ |
27 | #include "lib/grey.h" | 28 | #include "lib/grey.h" |
@@ -32,8 +33,6 @@ | |||
32 | #include "lib/xlcd.h" | 33 | #include "lib/xlcd.h" |
33 | #include "lib/fixedpoint.h" | 34 | #include "lib/fixedpoint.h" |
34 | 35 | ||
35 | PLUGIN_HEADER | ||
36 | |||
37 | /* Loops that the values are displayed */ | 36 | /* Loops that the values are displayed */ |
38 | #define DISP_TIME 30 | 37 | #define DISP_TIME 30 |
39 | 38 | ||
@@ -611,10 +610,8 @@ static void cube_draw(void) | |||
611 | } | 610 | } |
612 | } | 611 | } |
613 | 612 | ||
614 | void cleanup(void *parameter) | 613 | void cleanup(void) |
615 | { | 614 | { |
616 | (void)parameter; | ||
617 | |||
618 | #ifdef USEGSLIB | 615 | #ifdef USEGSLIB |
619 | grey_release(); | 616 | grey_release(); |
620 | #elif defined HAVE_LCD_CHARCELLS | 617 | #elif defined HAVE_LCD_CHARCELLS |
@@ -638,7 +635,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
638 | bool highspeed = false; | 635 | bool highspeed = false; |
639 | bool paused = false; | 636 | bool paused = false; |
640 | bool redraw = true; | 637 | bool redraw = true; |
641 | bool exit = false; | 638 | bool quit = false; |
642 | 639 | ||
643 | (void)(parameter); | 640 | (void)(parameter); |
644 | 641 | ||
@@ -651,6 +648,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
651 | rb->splash(HZ, "Couldn't init greyscale display"); | 648 | rb->splash(HZ, "Couldn't init greyscale display"); |
652 | return PLUGIN_ERROR; | 649 | return PLUGIN_ERROR; |
653 | } | 650 | } |
651 | |||
654 | /* init lcd_ function pointers */ | 652 | /* init lcd_ function pointers */ |
655 | lcdfuncs.update = rb->lcd_update; | 653 | lcdfuncs.update = rb->lcd_update; |
656 | lcdfuncs.clear_display = rb->lcd_clear_display; | 654 | lcdfuncs.clear_display = rb->lcd_clear_display; |
@@ -673,7 +671,8 @@ enum plugin_status plugin_start(const void* parameter) | |||
673 | pgfx_display(0, 0); | 671 | pgfx_display(0, 0); |
674 | #endif | 672 | #endif |
675 | 673 | ||
676 | while(!exit) | 674 | atexit(cleanup); |
675 | while(!quit) | ||
677 | { | 676 | { |
678 | if (redraw) | 677 | if (redraw) |
679 | { | 678 | { |
@@ -830,24 +829,17 @@ enum plugin_status plugin_start(const void* parameter) | |||
830 | case CUBE_RC_QUIT: | 829 | case CUBE_RC_QUIT: |
831 | #endif | 830 | #endif |
832 | case CUBE_QUIT: | 831 | case CUBE_QUIT: |
833 | exit = true; | 832 | exit(EXIT_SUCCESS); |
834 | break; | 833 | break; |
835 | 834 | ||
836 | default: | 835 | default: |
837 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 836 | exit_on_usb(button); |
838 | == SYS_USB_CONNECTED) | ||
839 | return PLUGIN_USB_CONNECTED; | ||
840 | break; | 837 | break; |
841 | } | 838 | } |
842 | if (button != BUTTON_NONE) | 839 | if (button != BUTTON_NONE) |
843 | lastbutton = button; | 840 | lastbutton = button; |
844 | } | 841 | } |
845 | 842 | ||
846 | #ifdef USEGSLIB | ||
847 | grey_release(); | ||
848 | #elif defined(HAVE_LCD_CHARCELLS) | ||
849 | pgfx_release(); | ||
850 | #endif | ||
851 | return PLUGIN_OK; | 843 | return PLUGIN_OK; |
852 | } | 844 | } |
853 | 845 | ||
diff --git a/apps/plugins/demystify.c b/apps/plugins/demystify.c index 468f1806ce..6a8f1eb0c1 100644 --- a/apps/plugins/demystify.c +++ b/apps/plugins/demystify.c | |||
@@ -22,11 +22,12 @@ | |||
22 | ****************************************************************************/ | 22 | ****************************************************************************/ |
23 | 23 | ||
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/pluginlib_exit.h" | ||
25 | 26 | ||
26 | #ifdef HAVE_LCD_BITMAP | 27 | #ifdef HAVE_LCD_BITMAP |
27 | #include "lib/pluginlib_actions.h" | 28 | #include "lib/pluginlib_actions.h" |
28 | #include "lib/helper.h" | 29 | #include "lib/helper.h" |
29 | PLUGIN_HEADER | 30 | |
30 | 31 | ||
31 | #define DEFAULT_WAIT_TIME 3 | 32 | #define DEFAULT_WAIT_TIME 3 |
32 | #define DEFAULT_NB_POLYGONS 7 | 33 | #define DEFAULT_NB_POLYGONS 7 |
@@ -259,10 +260,8 @@ void polygons_draw(struct polygon_fifo * polygons, struct screen * display) | |||
259 | } | 260 | } |
260 | } | 261 | } |
261 | 262 | ||
262 | void cleanup(void *parameter) | 263 | void cleanup(void) |
263 | { | 264 | { |
264 | (void)parameter; | ||
265 | |||
266 | backlight_use_settings(); | 265 | backlight_use_settings(); |
267 | #ifdef HAVE_REMOTE_LCD | 266 | #ifdef HAVE_REMOTE_LCD |
268 | remote_backlight_use_settings(); | 267 | remote_backlight_use_settings(); |
@@ -394,7 +393,6 @@ int plugin_main(void) | |||
394 | switch(action) | 393 | switch(action) |
395 | { | 394 | { |
396 | case DEMYSTIFY_QUIT: | 395 | case DEMYSTIFY_QUIT: |
397 | cleanup(NULL); | ||
398 | return PLUGIN_OK; | 396 | return PLUGIN_OK; |
399 | 397 | ||
400 | case DEMYSTIFY_ADD_POLYGON: | 398 | case DEMYSTIFY_ADD_POLYGON: |
@@ -421,9 +419,7 @@ int plugin_main(void) | |||
421 | break; | 419 | break; |
422 | 420 | ||
423 | default: | 421 | default: |
424 | if (rb->default_event_handler_ex(action, cleanup, NULL) | 422 | exit_on_usb(action); |
425 | == SYS_USB_CONNECTED) | ||
426 | return PLUGIN_USB_CONNECTED; | ||
427 | break; | 423 | break; |
428 | } | 424 | } |
429 | } | 425 | } |
@@ -436,6 +432,8 @@ enum plugin_status plugin_start(const void* parameter) | |||
436 | int ret; | 432 | int ret; |
437 | 433 | ||
438 | (void)parameter; | 434 | (void)parameter; |
435 | atexit(cleanup); | ||
436 | |||
439 | #if LCD_DEPTH > 1 | 437 | #if LCD_DEPTH > 1 |
440 | rb->lcd_set_backdrop(NULL); | 438 | rb->lcd_set_backdrop(NULL); |
441 | #endif | 439 | #endif |
diff --git a/apps/plugins/dice.c b/apps/plugins/dice.c index 7bd51122ee..7acb2e79ca 100644 --- a/apps/plugins/dice.c +++ b/apps/plugins/dice.c | |||
@@ -45,7 +45,7 @@ struct dices | |||
45 | }; | 45 | }; |
46 | 46 | ||
47 | #define PRINT_BUFFER_LENGTH MAX_DICES*4 | 47 | #define PRINT_BUFFER_LENGTH MAX_DICES*4 |
48 | PLUGIN_HEADER | 48 | |
49 | 49 | ||
50 | static struct dices dice; | 50 | static struct dices dice; |
51 | static int sides_index; | 51 | static int sides_index; |
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c index 13fe8e3cc6..a9c481742d 100644 --- a/apps/plugins/dict.c +++ b/apps/plugins/dict.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/simple_viewer.h" | 23 | #include "lib/simple_viewer.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define MIN_DESC_BUF_SIZE 0x400 /* arbitrary minimum size for description */ | 27 | #define MIN_DESC_BUF_SIZE 0x400 /* arbitrary minimum size for description */ |
28 | 28 | ||
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c index 8d8515e27b..d83ecf4312 100644 --- a/apps/plugins/disktidy.c +++ b/apps/plugins/disktidy.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "errno.h" | 22 | #include "errno.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* function return values */ | 26 | /* function return values */ |
27 | enum tidy_return | 27 | enum tidy_return |
diff --git a/apps/plugins/doom/rockdoom.c b/apps/plugins/doom/rockdoom.c index 042212812a..324cb24d51 100644 --- a/apps/plugins/doom/rockdoom.c +++ b/apps/plugins/doom/rockdoom.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #include "st_stuff.h" | 41 | #include "st_stuff.h" |
42 | #include "lib/helper.h" | 42 | #include "lib/helper.h" |
43 | 43 | ||
44 | PLUGIN_HEADER | 44 | |
45 | PLUGIN_IRAM_DECLARE | 45 | PLUGIN_IRAM_DECLARE |
46 | 46 | ||
47 | extern boolean timingdemo, singledemo, demoplayback, fastdemo; // killough | 47 | extern boolean timingdemo, singledemo, demoplayback, fastdemo; // killough |
diff --git a/apps/plugins/euroconverter.c b/apps/plugins/euroconverter.c index f85ee798c4..24cebe69d1 100644 --- a/apps/plugins/euroconverter.c +++ b/apps/plugins/euroconverter.c | |||
@@ -45,7 +45,7 @@ To do: | |||
45 | - The Irish currency needs 6 digits after the . to have sufficient precision on big number | 45 | - The Irish currency needs 6 digits after the . to have sufficient precision on big number |
46 | */ | 46 | */ |
47 | 47 | ||
48 | PLUGIN_HEADER | 48 | |
49 | 49 | ||
50 | /* Name and path of the config file*/ | 50 | /* Name and path of the config file*/ |
51 | static const char cfg_filename[] = "euroconverter.cfg"; | 51 | static const char cfg_filename[] = "euroconverter.cfg"; |
@@ -387,10 +387,8 @@ static int euro_menu(void) | |||
387 | 387 | ||
388 | 388 | ||
389 | /* Call when the program end */ | 389 | /* Call when the program end */ |
390 | static void euro_exit(void *parameter) | 390 | static void euro_exit(void) |
391 | { | 391 | { |
392 | (void)parameter; | ||
393 | |||
394 | //Restore the old pattern (i don't find another way to do this. An idea?) | 392 | //Restore the old pattern (i don't find another way to do this. An idea?) |
395 | rb->lcd_unlock_pattern(heuro); | 393 | rb->lcd_unlock_pattern(heuro); |
396 | rb->lcd_unlock_pattern(hhome); | 394 | rb->lcd_unlock_pattern(hhome); |
@@ -411,6 +409,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
411 | /* if you don't use the parameter, you can do like | 409 | /* if you don't use the parameter, you can do like |
412 | this to avoid the compiler warning about it */ | 410 | this to avoid the compiler warning about it */ |
413 | (void)parameter; | 411 | (void)parameter; |
412 | atexit(euro_exit); | ||
414 | 413 | ||
415 | /*Get the pattern handle*/ | 414 | /*Get the pattern handle*/ |
416 | heuro=rb->lcd_get_locked_pattern(); | 415 | heuro=rb->lcd_get_locked_pattern(); |
@@ -587,9 +586,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
587 | break; | 586 | break; |
588 | 587 | ||
589 | default: | 588 | default: |
590 | if (rb->default_event_handler_ex(button, euro_exit, NULL) | 589 | exit_on_usb(button); |
591 | == SYS_USB_CONNECTED) | ||
592 | return PLUGIN_USB_CONNECTED; | ||
593 | break; | 590 | break; |
594 | } | 591 | } |
595 | /*Display*/ | 592 | /*Display*/ |
@@ -599,7 +596,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
599 | e=mydiv(h,currency[country]); | 596 | e=mydiv(h,currency[country]); |
600 | display(e,h,pos); | 597 | display(e,h,pos); |
601 | } | 598 | } |
602 | euro_exit(NULL); | ||
603 | return PLUGIN_OK; | 599 | return PLUGIN_OK; |
604 | } | 600 | } |
605 | 601 | ||
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c index e352c1c041..a9724196ac 100644 --- a/apps/plugins/fft/fft.c +++ b/apps/plugins/fft/fft.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #endif | 29 | #endif |
30 | #include "lib/mylcd.h" | 30 | #include "lib/mylcd.h" |
31 | 31 | ||
32 | PLUGIN_HEADER | 32 | |
33 | 33 | ||
34 | #ifndef HAVE_LCD_COLOR | 34 | #ifndef HAVE_LCD_COLOR |
35 | GREY_INFO_STRUCT | 35 | GREY_INFO_STRUCT |
diff --git a/apps/plugins/fire.c b/apps/plugins/fire.c index e1362dc900..268a934692 100644 --- a/apps/plugins/fire.c +++ b/apps/plugins/fire.c | |||
@@ -41,8 +41,6 @@ | |||
41 | #define FIRE_XPOS 0 | 41 | #define FIRE_XPOS 0 |
42 | #endif | 42 | #endif |
43 | 43 | ||
44 | PLUGIN_HEADER | ||
45 | |||
46 | #ifndef HAVE_LCD_COLOR | 44 | #ifndef HAVE_LCD_COLOR |
47 | GREY_INFO_STRUCT | 45 | GREY_INFO_STRUCT |
48 | static unsigned char draw_buffer[FIRE_WIDTH]; | 46 | static unsigned char draw_buffer[FIRE_WIDTH]; |
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c index 1ad5f9a2ca..1954f19cac 100644 --- a/apps/plugins/fireworks.c +++ b/apps/plugins/fireworks.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/helper.h" | 22 | #include "lib/helper.h" |
23 | #include "lib/playback_control.h" | 23 | #include "lib/playback_control.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | /*** | 27 | /*** |
28 | * FIREWORKS.C by ZAKK ROBERTS | 28 | * FIREWORKS.C by ZAKK ROBERTS |
diff --git a/apps/plugins/firmware_flash.c b/apps/plugins/firmware_flash.c index 317bc92f04..02c4098ec1 100644 --- a/apps/plugins/firmware_flash.c +++ b/apps/plugins/firmware_flash.c | |||
@@ -77,7 +77,7 @@ | |||
77 | #error this platform is not (yet) flashable | 77 | #error this platform is not (yet) flashable |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | PLUGIN_HEADER | 80 | |
81 | 81 | ||
82 | #if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */ | 82 | #if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */ |
83 | #define KEY1 BUTTON_LEFT | 83 | #define KEY1 BUTTON_LEFT |
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c index d4c5702bc0..44ad011a64 100644 --- a/apps/plugins/flipit.c +++ b/apps/plugins/flipit.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | /* variable button definitions */ | 25 | /* variable button definitions */ |
26 | #if CONFIG_KEYPAD == RECORDER_PAD | 26 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/fractals/fractal.c b/apps/plugins/fractals/fractal.c index 971ae506ca..179bc3e562 100644 --- a/apps/plugins/fractals/fractal.c +++ b/apps/plugins/fractals/fractal.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "fractal_rect.h" | 29 | #include "fractal_rect.h" |
30 | #include "fractal_sets.h" | 30 | #include "fractal_sets.h" |
31 | #include "mandelbrot_set.h" | 31 | #include "mandelbrot_set.h" |
32 | #include "lib/pluginlib_exit.h" | ||
32 | 33 | ||
33 | #ifdef USEGSLIB | 34 | #ifdef USEGSLIB |
34 | GREY_INFO_STRUCT | 35 | GREY_INFO_STRUCT |
@@ -41,7 +42,7 @@ static size_t gbuf_size = 0; | |||
41 | #define REDRAW_FULL 2 | 42 | #define REDRAW_FULL 2 |
42 | #define REDRAW_FULL_OVERLAY 3 | 43 | #define REDRAW_FULL_OVERLAY 3 |
43 | 44 | ||
44 | PLUGIN_HEADER | 45 | |
45 | 46 | ||
46 | /* returns 1 if a button has been pressed, 0 otherwise */ | 47 | /* returns 1 if a button has been pressed, 0 otherwise */ |
47 | static int button_yield(void *ctx) | 48 | static int button_yield(void *ctx) |
@@ -85,9 +86,8 @@ static int button_yield(void *ctx) | |||
85 | } | 86 | } |
86 | } | 87 | } |
87 | 88 | ||
88 | static void cleanup(void *parameter) | 89 | static void cleanup(void) |
89 | { | 90 | { |
90 | (void)parameter; | ||
91 | #ifdef USEGSLIB | 91 | #ifdef USEGSLIB |
92 | grey_release(); | 92 | grey_release(); |
93 | #endif | 93 | #endif |
@@ -109,11 +109,13 @@ enum plugin_status plugin_start(const void* parameter) | |||
109 | if (!grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL)) | 109 | if (!grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL)) |
110 | { | 110 | { |
111 | rb->splash(HZ, "Couldn't init greyscale display"); | 111 | rb->splash(HZ, "Couldn't init greyscale display"); |
112 | return 0; | 112 | return PLUGIN_ERROR; |
113 | } | 113 | } |
114 | grey_show(true); /* switch on greyscale overlay */ | 114 | grey_show(true); /* switch on greyscale overlay */ |
115 | #endif | 115 | #endif |
116 | 116 | ||
117 | /* release greylib on exit */ | ||
118 | atexit(cleanup); | ||
117 | #if LCD_DEPTH > 1 | 119 | #if LCD_DEPTH > 1 |
118 | rb->lcd_set_backdrop(NULL); | 120 | rb->lcd_set_backdrop(NULL); |
119 | #endif | 121 | #endif |
@@ -161,9 +163,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
161 | case FRACTAL_RC_QUIT: | 163 | case FRACTAL_RC_QUIT: |
162 | #endif | 164 | #endif |
163 | case FRACTAL_QUIT: | 165 | case FRACTAL_QUIT: |
164 | #ifdef USEGSLIB | ||
165 | grey_release(); | ||
166 | #endif | ||
167 | return PLUGIN_OK; | 166 | return PLUGIN_OK; |
168 | 167 | ||
169 | case FRACTAL_ZOOM_OUT: | 168 | case FRACTAL_ZOOM_OUT: |
@@ -246,18 +245,13 @@ enum plugin_status plugin_start(const void* parameter) | |||
246 | break; | 245 | break; |
247 | 246 | ||
248 | default: | 247 | default: |
249 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 248 | exit_on_usb(button); |
250 | == SYS_USB_CONNECTED) | ||
251 | return PLUGIN_USB_CONNECTED; | ||
252 | break; | 249 | break; |
253 | } | 250 | } |
254 | 251 | ||
255 | if (button != BUTTON_NONE) | 252 | if (button != BUTTON_NONE) |
256 | lastbutton = button; | 253 | lastbutton = button; |
257 | } | 254 | } |
258 | #ifdef USEGSLIB | ||
259 | grey_release(); | ||
260 | #endif | ||
261 | return PLUGIN_OK; | 255 | return PLUGIN_OK; |
262 | } | 256 | } |
263 | 257 | ||
diff --git a/apps/plugins/frotz/frotz.c b/apps/plugins/frotz/frotz.c index aff91002ef..23da650706 100644 --- a/apps/plugins/frotz/frotz.c +++ b/apps/plugins/frotz/frotz.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "lib/pluginlib_exit.h" | 23 | #include "lib/pluginlib_exit.h" |
24 | #include "lib/pluginlib_actions.h" | 24 | #include "lib/pluginlib_actions.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | extern int frotz_main(void); | 28 | extern int frotz_main(void); |
29 | extern bool hot_key_quit(void); | 29 | extern bool hot_key_quit(void); |
@@ -41,7 +41,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
41 | int i; | 41 | int i; |
42 | char* ext; | 42 | char* ext; |
43 | 43 | ||
44 | PLUGINLIB_EXIT_INIT_ATEXIT(atexit_cleanup); | 44 | atexit(atexit_cleanup); |
45 | 45 | ||
46 | if (!parameter) | 46 | if (!parameter) |
47 | return PLUGIN_ERROR; | 47 | return PLUGIN_ERROR; |
diff --git a/apps/plugins/goban.c b/apps/plugins/goban.c index 7bb6744dde..1a121202c6 100644 --- a/apps/plugins/goban.c +++ b/apps/plugins/goban.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "lib/overlay.h" | 25 | #include "lib/overlay.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | enum plugin_status plugin_start(const void* parameter) | 29 | enum plugin_status plugin_start(const void* parameter) |
30 | { | 30 | { |
diff --git a/apps/plugins/goban/goban.c b/apps/plugins/goban/goban.c index 4e20e71a37..b2306c00a8 100644 --- a/apps/plugins/goban/goban.c +++ b/apps/plugins/goban/goban.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "lib/playback_control.h" | 23 | #include "lib/playback_control.h" |
24 | #include "lib/configfile.h" | 24 | #include "lib/configfile.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | #include "goban.h" | 28 | #include "goban.h" |
29 | #include "game.h" | 29 | #include "game.h" |
diff --git a/apps/plugins/greyscale.c b/apps/plugins/greyscale.c index 73dd98b216..33254439b6 100644 --- a/apps/plugins/greyscale.c +++ b/apps/plugins/greyscale.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) | 27 | #if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) |
28 | #include "lib/grey.h" | 28 | #include "lib/grey.h" |
29 | 29 | ||
30 | PLUGIN_HEADER | 30 | |
31 | 31 | ||
32 | /* variable button definitions */ | 32 | /* variable button definitions */ |
33 | #if CONFIG_KEYPAD == RECORDER_PAD | 33 | #if CONFIG_KEYPAD == RECORDER_PAD |
@@ -316,9 +316,7 @@ int main(void) | |||
316 | 316 | ||
317 | button = rb->button_get(true); | 317 | button = rb->button_get(true); |
318 | 318 | ||
319 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 319 | exit_on_usb(button); |
320 | == SYS_USB_CONNECTED) | ||
321 | return PLUGIN_USB_CONNECTED; | ||
322 | 320 | ||
323 | if (button & GREYSCALE_SHIFT) | 321 | if (button & GREYSCALE_SHIFT) |
324 | { | 322 | { |
@@ -369,8 +367,6 @@ int main(void) | |||
369 | case GREYSCALE_RC_OFF: | 367 | case GREYSCALE_RC_OFF: |
370 | #endif | 368 | #endif |
371 | case GREYSCALE_OFF: | 369 | case GREYSCALE_OFF: |
372 | |||
373 | cleanup(NULL); | ||
374 | return PLUGIN_OK; | 370 | return PLUGIN_OK; |
375 | } | 371 | } |
376 | } | 372 | } |
@@ -382,6 +378,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
382 | { | 378 | { |
383 | (void)parameter; | 379 | (void)parameter; |
384 | 380 | ||
381 | atexit(cleanup); | ||
385 | return main(); | 382 | return main(); |
386 | } | 383 | } |
387 | 384 | ||
diff --git a/apps/plugins/helloworld.c b/apps/plugins/helloworld.c index e582eb77b3..f1093f0a8b 100644 --- a/apps/plugins/helloworld.c +++ b/apps/plugins/helloworld.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | /* This macros must always be included. Should be placed at the top by | 25 | /* This macros must always be included. Should be placed at the top by |
26 | convention, although the actual position doesn't matter */ | 26 | convention, although the actual position doesn't matter */ |
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* this is the plugin entry point */ | 29 | /* this is the plugin entry point */ |
30 | enum plugin_status plugin_start(const void* parameter) | 30 | enum plugin_status plugin_start(const void* parameter) |
diff --git a/apps/plugins/imageviewer/imageviewer.c b/apps/plugins/imageviewer/imageviewer.c index 0fd25e7b29..e581407290 100644 --- a/apps/plugins/imageviewer/imageviewer.c +++ b/apps/plugins/imageviewer/imageviewer.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <lib/configfile.h> | 25 | #include <lib/configfile.h> |
26 | #include "imageviewer.h" | 26 | #include "imageviewer.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | #ifdef USEGSLIB | 30 | #ifdef USEGSLIB |
31 | GREY_INFO_STRUCT | 31 | GREY_INFO_STRUCT |
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index 851487cf9a..ea4a0a28e5 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c | |||
@@ -61,7 +61,7 @@ | |||
61 | #define FIRE_WIDTH BMPWIDTH_invadrox_fire | 61 | #define FIRE_WIDTH BMPWIDTH_invadrox_fire |
62 | #define FIRE_HEIGHT BMPHEIGHT_invadrox_fire | 62 | #define FIRE_HEIGHT BMPHEIGHT_invadrox_fire |
63 | 63 | ||
64 | PLUGIN_HEADER | 64 | |
65 | 65 | ||
66 | /* Original graphics is only 1bpp so it should be portable | 66 | /* Original graphics is only 1bpp so it should be portable |
67 | * to most targets. But for now, only support the simple ones. | 67 | * to most targets. But for now, only support the simple ones. |
diff --git a/apps/plugins/iriver_flash.c b/apps/plugins/iriver_flash.c index 24542a9398..a1ce22c83f 100644 --- a/apps/plugins/iriver_flash.c +++ b/apps/plugins/iriver_flash.c | |||
@@ -35,7 +35,7 @@ ssize_t audiobuf_size; | |||
35 | 35 | ||
36 | #ifdef PLATFORM_ID | 36 | #ifdef PLATFORM_ID |
37 | 37 | ||
38 | PLUGIN_HEADER | 38 | |
39 | 39 | ||
40 | #if CONFIG_KEYPAD == IRIVER_H100_PAD | 40 | #if CONFIG_KEYPAD == IRIVER_H100_PAD |
41 | #define KEY1 BUTTON_OFF | 41 | #define KEY1 BUTTON_OFF |
diff --git a/apps/plugins/iriverify.c b/apps/plugins/iriverify.c index 4e8ca5b420..1109cde179 100644 --- a/apps/plugins/iriverify.c +++ b/apps/plugins/iriverify.c | |||
@@ -25,7 +25,7 @@ | |||
25 | ****************************************************************************/ | 25 | ****************************************************************************/ |
26 | #include "plugin.h" | 26 | #include "plugin.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | ssize_t buf_size; | 30 | ssize_t buf_size; |
31 | static char *filename; | 31 | static char *filename; |
diff --git a/apps/plugins/jackpot.c b/apps/plugins/jackpot.c index 56c2910b70..abf1cf8fb2 100644 --- a/apps/plugins/jackpot.c +++ b/apps/plugins/jackpot.c | |||
@@ -22,8 +22,9 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/pluginlib_actions.h" | 23 | #include "lib/pluginlib_actions.h" |
24 | #include "lib/picture.h" | 24 | #include "lib/picture.h" |
25 | #include "lib/pluginlib_exit.h" | ||
26 | |||
25 | 27 | ||
26 | PLUGIN_HEADER | ||
27 | 28 | ||
28 | const struct button_mapping* plugin_contexts[]={pla_main_ctx}; | 29 | const struct button_mapping* plugin_contexts[]={pla_main_ctx}; |
29 | #define NB_PICTURES 9 | 30 | #define NB_PICTURES 9 |
@@ -109,9 +110,8 @@ void patterns_deinit(struct screen* display) | |||
109 | #endif /* HAVE_LCD_CHARCELLS */ | 110 | #endif /* HAVE_LCD_CHARCELLS */ |
110 | 111 | ||
111 | /*Call when the program exit*/ | 112 | /*Call when the program exit*/ |
112 | void jackpot_exit(void *parameter) | 113 | void jackpot_exit(void) |
113 | { | 114 | { |
114 | (void)parameter; | ||
115 | #ifdef HAVE_LCD_CHARCELLS | 115 | #ifdef HAVE_LCD_CHARCELLS |
116 | patterns_deinit(rb->screens[SCREEN_MAIN]); | 116 | patterns_deinit(rb->screens[SCREEN_MAIN]); |
117 | #endif /* HAVE_LCD_CHARCELLS */ | 117 | #endif /* HAVE_LCD_CHARCELLS */ |
@@ -298,6 +298,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
298 | int action, i; | 298 | int action, i; |
299 | struct jackpot game; | 299 | struct jackpot game; |
300 | (void)parameter; | 300 | (void)parameter; |
301 | atexit(jackpot_exit); | ||
301 | rb->srand(*rb->current_tick); | 302 | rb->srand(*rb->current_tick); |
302 | #ifdef HAVE_LCD_CHARCELLS | 303 | #ifdef HAVE_LCD_CHARCELLS |
303 | patterns_init(rb->screens[SCREEN_MAIN]); | 304 | patterns_init(rb->screens[SCREEN_MAIN]); |
@@ -323,12 +324,9 @@ enum plugin_status plugin_start(const void* parameter) | |||
323 | break; | 324 | break; |
324 | 325 | ||
325 | default: | 326 | default: |
326 | if (rb->default_event_handler_ex(action, jackpot_exit, NULL) | 327 | exit_on_usb(action); |
327 | == SYS_USB_CONNECTED) | ||
328 | return PLUGIN_USB_CONNECTED; | ||
329 | break; | 328 | break; |
330 | } | 329 | } |
331 | } | 330 | } |
332 | jackpot_exit(NULL); | ||
333 | return PLUGIN_OK; | 331 | return PLUGIN_OK; |
334 | } | 332 | } |
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index c2340aa557..fdf4ff70e5 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c | |||
@@ -29,7 +29,7 @@ | |||
29 | 29 | ||
30 | #ifdef HAVE_LCD_BITMAP | 30 | #ifdef HAVE_LCD_BITMAP |
31 | 31 | ||
32 | PLUGIN_HEADER | 32 | |
33 | 33 | ||
34 | /* button definitions */ | 34 | /* button definitions */ |
35 | #if CONFIG_KEYPAD == RECORDER_PAD | 35 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/keybox.c b/apps/plugins/keybox.c index a241e40440..8ac4064996 100644 --- a/apps/plugins/keybox.c +++ b/apps/plugins/keybox.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | #include "lib/md5.h" | 23 | #include "lib/md5.h" |
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #define KEYBOX_FILE PLUGIN_APPS_DIR "/keybox.dat" | 26 | #define KEYBOX_FILE PLUGIN_APPS_DIR "/keybox.dat" |
27 | #define BLOCK_SIZE 8 | 27 | #define BLOCK_SIZE 8 |
diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c index 8c2dff5254..0074933fd8 100644 --- a/apps/plugins/lamp.c +++ b/apps/plugins/lamp.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "plugin.h" | 25 | #include "plugin.h" |
26 | #include "lib/helper.h" | 26 | #include "lib/helper.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | /* variable button definitions - only targets with a colour display */ | 30 | /* variable button definitions - only targets with a colour display */ |
31 | #if defined(HAVE_LCD_COLOR) | 31 | #if defined(HAVE_LCD_COLOR) |
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES index 1db9896065..6f17c70b90 100644 --- a/apps/plugins/lib/SOURCES +++ b/apps/plugins/lib/SOURCES | |||
@@ -2,7 +2,6 @@ gcc-support.c | |||
2 | pluginlib_actions.c | 2 | pluginlib_actions.c |
3 | helper.c | 3 | helper.c |
4 | md5.c | 4 | md5.c |
5 | pluginlib_exit.c | ||
6 | jhash.c | 5 | jhash.c |
7 | configfile.c | 6 | configfile.c |
8 | fixedpoint.c | 7 | fixedpoint.c |
diff --git a/apps/plugins/lib/pluginlib_exit.c b/apps/plugins/lib/pluginlib_exit.c deleted file mode 100644 index 82ae11aca0..0000000000 --- a/apps/plugins/lib/pluginlib_exit.c +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2009 by Maurus Cuelenaere | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include "pluginlib_exit.h" | ||
23 | |||
24 | jmp_buf __exit_env DATA_ATTR; | ||
25 | |||
diff --git a/apps/plugins/lib/pluginlib_exit.h b/apps/plugins/lib/pluginlib_exit.h index 8c7f0c437f..411d0751d1 100644 --- a/apps/plugins/lib/pluginlib_exit.h +++ b/apps/plugins/lib/pluginlib_exit.h | |||
@@ -22,31 +22,33 @@ | |||
22 | #ifndef __PLUGINLIB_EXIT_H__ | 22 | #ifndef __PLUGINLIB_EXIT_H__ |
23 | #define __PLUGINLIB_EXIT_H__ | 23 | #define __PLUGINLIB_EXIT_H__ |
24 | 24 | ||
25 | #include "config.h" | 25 | /* make sure we are in sync with the real definitions, especially on |
26 | #include <setjmp.h> | 26 | * hosted systems */ |
27 | #include <stdlib.h> | ||
28 | #include "gcc_extensions.h" | ||
27 | 29 | ||
28 | #define _PLUGINLIB_EXIT_INIT(atexit) switch(setjmp(__exit_env)) \ | 30 | /* these are actually implemented in plugin_crt0.c which all plugins link */ |
29 | { \ | 31 | extern int atexit(void (*func)(void)); |
30 | case 1: \ | 32 | extern void exit(int status) NORETURN_ATTR; |
31 | atexit \ | 33 | /* these don't call the exit handlers */ |
32 | return PLUGIN_OK; \ | 34 | extern void _exit(int status) NORETURN_ATTR; |
33 | case 2: \ | 35 | /* C99 version */ |
34 | atexit \ | 36 | #define _Exit _exit |
35 | return PLUGIN_ERROR; \ | ||
36 | case 0: \ | ||
37 | default: \ | ||
38 | break; \ | ||
39 | } | ||
40 | 37 | ||
41 | /* Either PLUGINLIB_EXIT_INIT or PLUGINLIB_EXIT_INIT_ATEXIT needs to be placed | 38 | #ifndef EXIT_SUCCESS |
42 | * as the first line in plugin_start. The _ATEXIT version will call the named | 39 | #define EXIT_SUCCESS 0 |
43 | * no-argument function when exit() is called before exiting the plugin, to | 40 | #define EXIT_FAILURE 1 |
44 | * allow for cleanup. | 41 | #endif |
45 | */ | ||
46 | #define PLUGINLIB_EXIT_INIT _PLUGINLIB_EXIT_INIT() | ||
47 | #define PLUGINLIB_EXIT_INIT_ATEXIT(atexit) _PLUGINLIB_EXIT_INIT(atexit();) | ||
48 | 42 | ||
49 | extern jmp_buf __exit_env; | 43 | /** |
50 | #define exit(status) longjmp(__exit_env, status != 0 ? 2 : 1) | 44 | * helper function to handle USB connected events coming from |
45 | * button_get() | ||
46 | * | ||
47 | * it will exit the plugin if usb is detected, but it will call the atexit func | ||
48 | * before actually showing the usb screen | ||
49 | * | ||
50 | * it additionally handles power off as well, with the same behavior | ||
51 | */ | ||
52 | extern void exit_on_usb(int button); | ||
51 | 53 | ||
52 | #endif /* __PLUGINLIB_EXIT_H__ */ | 54 | #endif /* __PLUGINLIB_EXIT_H__ */ |
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c index db692840ba..43a7c3fd46 100644 --- a/apps/plugins/logo.c +++ b/apps/plugins/logo.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/playergfx.h" | 22 | #include "lib/playergfx.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #ifdef HAVE_LCD_BITMAP | 26 | #ifdef HAVE_LCD_BITMAP |
27 | #define DISPLAY_WIDTH LCD_WIDTH | 27 | #define DISPLAY_WIDTH LCD_WIDTH |
diff --git a/apps/plugins/lrcplayer.c b/apps/plugins/lrcplayer.c index 43f3b8e359..9f43849d5b 100644 --- a/apps/plugins/lrcplayer.c +++ b/apps/plugins/lrcplayer.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "lib/helper.h" | 24 | #include "lib/helper.h" |
25 | #include <ctype.h> | 25 | #include <ctype.h> |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | #define MAX_LINE_LEN 256 | 29 | #define MAX_LINE_LEN 256 |
30 | #define LRC_BUFFER_SIZE 0x3000 /* 12 kiB */ | 30 | #define LRC_BUFFER_SIZE 0x3000 /* 12 kiB */ |
diff --git a/apps/plugins/lua/rocklua.c b/apps/plugins/lua/rocklua.c index b92c274fb0..00bfd8e43e 100644 --- a/apps/plugins/lua/rocklua.c +++ b/apps/plugins/lua/rocklua.c | |||
@@ -20,7 +20,6 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/pluginlib_exit.h" | ||
24 | #include "lua.h" | 23 | #include "lua.h" |
25 | #include "lauxlib.h" | 24 | #include "lauxlib.h" |
26 | #include "lualib.h" | 25 | #include "lualib.h" |
@@ -28,7 +27,7 @@ | |||
28 | #include "rockmalloc.h" | 27 | #include "rockmalloc.h" |
29 | #include "luadir.h" | 28 | #include "luadir.h" |
30 | 29 | ||
31 | PLUGIN_HEADER | 30 | |
32 | 31 | ||
33 | static const luaL_Reg lualibs[] = { | 32 | static const luaL_Reg lualibs[] = { |
34 | {"", luaopen_base}, | 33 | {"", luaopen_base}, |
@@ -148,8 +147,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
148 | const char* filename; | 147 | const char* filename; |
149 | int status; | 148 | int status; |
150 | 149 | ||
151 | PLUGINLIB_EXIT_INIT | ||
152 | |||
153 | if (parameter == NULL) | 150 | if (parameter == NULL) |
154 | { | 151 | { |
155 | rb->splash(HZ, "Play a .lua file!"); | 152 | rb->splash(HZ, "Play a .lua file!"); |
diff --git a/apps/plugins/matrix.c b/apps/plugins/matrix.c index 5a13b3aa38..d3429699af 100644 --- a/apps/plugins/matrix.c +++ b/apps/plugins/matrix.c | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | 35 | ||
36 | #include "plugin.h" | 36 | #include "plugin.h" |
37 | PLUGIN_HEADER | 37 | |
38 | 38 | ||
39 | /* Images */ | 39 | /* Images */ |
40 | #include "pluginbitmaps/matrix_bold.h" | 40 | #include "pluginbitmaps/matrix_bold.h" |
diff --git a/apps/plugins/maze.c b/apps/plugins/maze.c index 465dfa9e84..231b602911 100644 --- a/apps/plugins/maze.c +++ b/apps/plugins/maze.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include "plugin.h" | 33 | #include "plugin.h" |
34 | #include "lib/helper.h" | 34 | #include "lib/helper.h" |
35 | 35 | ||
36 | PLUGIN_HEADER | 36 | |
37 | 37 | ||
38 | /* key assignments */ | 38 | /* key assignments */ |
39 | 39 | ||
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c index f4b76df374..bb93825453 100644 --- a/apps/plugins/mazezam.c +++ b/apps/plugins/mazezam.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "lib/playback_control.h" | 25 | #include "lib/playback_control.h" |
26 | 26 | ||
27 | /* Include standard plugin macro */ | 27 | /* Include standard plugin macro */ |
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | #if (CONFIG_KEYPAD == IPOD_3G_PAD) | 30 | #if (CONFIG_KEYPAD == IPOD_3G_PAD) |
31 | # define MAZEZAM_MENU BUTTON_MENU | 31 | # define MAZEZAM_MENU BUTTON_MENU |
diff --git a/apps/plugins/md5sum.c b/apps/plugins/md5sum.c index 9dd8f5a8a7..fe1c65efb0 100644 --- a/apps/plugins/md5sum.c +++ b/apps/plugins/md5sum.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/md5.h" | 23 | #include "lib/md5.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define BUFFERSIZE 16384 | 27 | #define BUFFERSIZE 16384 |
28 | 28 | ||
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c index 37a7329b22..b38f0bbf2c 100644 --- a/apps/plugins/metronome.c +++ b/apps/plugins/metronome.c | |||
@@ -20,8 +20,9 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/pluginlib_actions.h" | 22 | #include "lib/pluginlib_actions.h" |
23 | #include "lib/pluginlib_exit.h" | ||
24 | |||
23 | 25 | ||
24 | PLUGIN_HEADER | ||
25 | 26 | ||
26 | #if CONFIG_CODEC != SWCODEC | 27 | #if CONFIG_CODEC != SWCODEC |
27 | /* tick sound from a metronome */ | 28 | /* tick sound from a metronome */ |
@@ -846,13 +847,14 @@ void timer_callback(void) | |||
846 | } | 847 | } |
847 | } | 848 | } |
848 | 849 | ||
849 | void cleanup(void *parameter) | 850 | void cleanup(void) |
850 | { | 851 | { |
851 | (void)parameter; | ||
852 | |||
853 | rb->timer_unregister(); | 852 | rb->timer_unregister(); |
854 | MET_PLAY_STOP; /* stop audio ISR */ | 853 | MET_PLAY_STOP; /* stop audio ISR */ |
855 | rb->led(0); | 854 | rb->led(0); |
855 | #if CONFIG_CODEC == SWCODEC | ||
856 | rb->pcm_set_frequency(HW_SAMPR_DEFAULT); | ||
857 | #endif | ||
856 | } | 858 | } |
857 | 859 | ||
858 | void tap(void) | 860 | void tap(void) |
@@ -885,9 +887,9 @@ enum plugin_status plugin_start(const void* parameter) | |||
885 | { | 887 | { |
886 | int button; | 888 | int button; |
887 | static int last_button = BUTTON_NONE; | 889 | static int last_button = BUTTON_NONE; |
888 | enum plugin_status status; | ||
889 | 890 | ||
890 | (void)parameter; | 891 | (void)parameter; |
892 | atexit(cleanup); | ||
891 | 893 | ||
892 | if (MET_IS_PLAYING) | 894 | if (MET_IS_PLAYING) |
893 | MET_PLAY_STOP; /* stop audio IS */ | 895 | MET_PLAY_STOP; /* stop audio IS */ |
@@ -927,9 +929,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
927 | 929 | ||
928 | case METRONOME_QUIT: | 930 | case METRONOME_QUIT: |
929 | /* get out of here */ | 931 | /* get out of here */ |
930 | cleanup(NULL); | 932 | return PLUGIN_OK; |
931 | status = PLUGIN_OK; | ||
932 | goto metronome_exit; | ||
933 | 933 | ||
934 | case METRONOME_PAUSE: | 934 | case METRONOME_PAUSE: |
935 | if(!sound_paused) | 935 | if(!sound_paused) |
@@ -981,12 +981,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
981 | #endif | 981 | #endif |
982 | 982 | ||
983 | default: | 983 | default: |
984 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 984 | exit_on_usb(button); |
985 | == SYS_USB_CONNECTED) | ||
986 | { | ||
987 | status = PLUGIN_USB_CONNECTED; | ||
988 | goto metronome_exit; | ||
989 | } | ||
990 | reset_tap = false; | 985 | reset_tap = false; |
991 | break; | 986 | break; |
992 | 987 | ||
@@ -998,11 +993,5 @@ enum plugin_status plugin_start(const void* parameter) | |||
998 | } | 993 | } |
999 | rb->yield(); | 994 | rb->yield(); |
1000 | } | 995 | } |
1001 | |||
1002 | metronome_exit: | ||
1003 | #if CONFIG_CODEC == SWCODEC | ||
1004 | rb->pcm_set_frequency(HW_SAMPR_DEFAULT); | ||
1005 | #endif | ||
1006 | return status; | ||
1007 | } | 996 | } |
1008 | 997 | ||
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c index d9e215158e..442a747d89 100644 --- a/apps/plugins/midi/midiplay.c +++ b/apps/plugins/midi/midiplay.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "sequencer.h" | 25 | #include "sequencer.h" |
26 | #include "midifile.h" | 26 | #include "midifile.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | PLUGIN_IRAM_DECLARE | 29 | PLUGIN_IRAM_DECLARE |
30 | 30 | ||
31 | /* variable button definitions */ | 31 | /* variable button definitions */ |
@@ -450,7 +450,6 @@ static int midimain(const void * filename) | |||
450 | enum plugin_status plugin_start(const void* parameter) | 450 | enum plugin_status plugin_start(const void* parameter) |
451 | { | 451 | { |
452 | int retval; | 452 | int retval; |
453 | PLUGINLIB_EXIT_INIT; | ||
454 | 453 | ||
455 | PLUGIN_IRAM_INIT(rb) | 454 | PLUGIN_IRAM_INIT(rb) |
456 | 455 | ||
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c index 58e56de159..5793ddedf8 100644 --- a/apps/plugins/minesweeper.c +++ b/apps/plugins/minesweeper.c | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #include "lib/playback_control.h" | 26 | #include "lib/playback_control.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | /* what the minesweeper() function can return */ | 30 | /* what the minesweeper() function can return */ |
31 | enum minesweeper_status { | 31 | enum minesweeper_status { |
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c index 43efc27d77..42c9254259 100644 --- a/apps/plugins/mosaique.c +++ b/apps/plugins/mosaique.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/playergfx.h" | 22 | #include "lib/playergfx.h" |
23 | #include "lib/mylcd.h" | 23 | #include "lib/mylcd.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #ifdef HAVE_LCD_BITMAP | 27 | #ifdef HAVE_LCD_BITMAP |
28 | #define GFX_X (LCD_WIDTH/2-1) | 28 | #define GFX_X (LCD_WIDTH/2-1) |
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c index da749b82c9..06d28a344a 100644 --- a/apps/plugins/mp3_encoder.c +++ b/apps/plugins/mp3_encoder.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <inttypes.h> | 14 | #include <inttypes.h> |
15 | #include "plugin.h" | 15 | #include "plugin.h" |
16 | 16 | ||
17 | PLUGIN_HEADER | 17 | |
18 | PLUGIN_IRAM_DECLARE | 18 | PLUGIN_IRAM_DECLARE |
19 | 19 | ||
20 | #define SAMP_PER_FRAME 1152 | 20 | #define SAMP_PER_FRAME 1152 |
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c index 961214f407..8142c6f43e 100644 --- a/apps/plugins/mpegplayer/mpegplayer.c +++ b/apps/plugins/mpegplayer/mpegplayer.c | |||
@@ -108,7 +108,7 @@ | |||
108 | #include "stream_thread.h" | 108 | #include "stream_thread.h" |
109 | #include "stream_mgr.h" | 109 | #include "stream_mgr.h" |
110 | 110 | ||
111 | PLUGIN_HEADER | 111 | |
112 | PLUGIN_IRAM_DECLARE | 112 | PLUGIN_IRAM_DECLARE |
113 | 113 | ||
114 | /* button definitions */ | 114 | /* button definitions */ |
diff --git a/apps/plugins/nim.c b/apps/plugins/nim.c index 460e2751e9..3301277410 100644 --- a/apps/plugins/nim.c +++ b/apps/plugins/nim.c | |||
@@ -48,7 +48,7 @@ V1.2 : 2003-07-30 | |||
48 | take a match. Later you are obliged to take at least one.) | 48 | take a match. Later you are obliged to take at least one.) |
49 | */ | 49 | */ |
50 | 50 | ||
51 | PLUGIN_HEADER | 51 | |
52 | 52 | ||
53 | /*Pattern for the game*/ | 53 | /*Pattern for the game*/ |
54 | static unsigned char smile[]={0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x0E}; /* :-) */ | 54 | static unsigned char smile[]={0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x0E}; /* :-) */ |
@@ -144,6 +144,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
144 | int x,v,min; | 144 | int x,v,min; |
145 | bool ok; | 145 | bool ok; |
146 | bool go; | 146 | bool go; |
147 | atexit(nim_exit); | ||
147 | 148 | ||
148 | /* if you don't use the parameter, you can do like | 149 | /* if you don't use the parameter, you can do like |
149 | this to avoid the compiler warning about it */ | 150 | this to avoid the compiler warning about it */ |
@@ -193,7 +194,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
193 | { | 194 | { |
194 | case BUTTON_STOP|BUTTON_REL: | 195 | case BUTTON_STOP|BUTTON_REL: |
195 | go = true; | 196 | go = true; |
196 | nim_exit(NULL); | ||
197 | return PLUGIN_OK; | 197 | return PLUGIN_OK; |
198 | break; | 198 | break; |
199 | 199 | ||
@@ -214,9 +214,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
214 | break; | 214 | break; |
215 | 215 | ||
216 | default: | 216 | default: |
217 | if (rb->default_event_handler_ex(button, nim_exit, | 217 | exit_on_usb(button); |
218 | NULL) == SYS_USB_CONNECTED) | ||
219 | return PLUGIN_USB_CONNECTED; | ||
220 | break; | 218 | break; |
221 | } | 219 | } |
222 | display_first_line(x); | 220 | display_first_line(x); |
@@ -291,7 +289,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
291 | min=1; | 289 | min=1; |
292 | } | 290 | } |
293 | } | 291 | } |
294 | nim_exit(NULL); | ||
295 | return PLUGIN_OK; | 292 | return PLUGIN_OK; |
296 | } | 293 | } |
297 | #endif | 294 | #endif |
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index 4195d96d5f..e9c21ff119 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c | |||
@@ -23,12 +23,13 @@ | |||
23 | 23 | ||
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/helper.h" | 25 | #include "lib/helper.h" |
26 | #include "lib/pluginlib_exit.h" | ||
26 | 27 | ||
27 | #ifdef HAVE_LCD_BITMAP | 28 | #ifdef HAVE_LCD_BITMAP |
28 | #include "lib/xlcd.h" | 29 | #include "lib/xlcd.h" |
29 | #include "lib/configfile.h" | 30 | #include "lib/configfile.h" |
30 | 31 | ||
31 | PLUGIN_HEADER | 32 | |
32 | 33 | ||
33 | /* variable button definitions */ | 34 | /* variable button definitions */ |
34 | #if CONFIG_KEYPAD == RECORDER_PAD | 35 | #if CONFIG_KEYPAD == RECORDER_PAD |
@@ -751,9 +752,8 @@ void anim_vertical(int cur_left, int cur_right) | |||
751 | last_pos = cur_y; | 752 | last_pos = cur_y; |
752 | } | 753 | } |
753 | 754 | ||
754 | void cleanup(void *parameter) | 755 | void cleanup(void) |
755 | { | 756 | { |
756 | (void)parameter; | ||
757 | #if LCD_DEPTH > 1 | 757 | #if LCD_DEPTH > 1 |
758 | rb->lcd_set_foreground(LCD_DEFAULT_FG); | 758 | rb->lcd_set_foreground(LCD_DEFAULT_FG); |
759 | rb->lcd_set_background(LCD_DEFAULT_BG); | 759 | rb->lcd_set_background(LCD_DEFAULT_BG); |
@@ -772,6 +772,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
772 | 772 | ||
773 | (void)parameter; | 773 | (void)parameter; |
774 | 774 | ||
775 | atexit(cleanup); | ||
775 | configfile_load(cfg_filename, disk_config, | 776 | configfile_load(cfg_filename, disk_config, |
776 | sizeof(disk_config) / sizeof(disk_config[0]), | 777 | sizeof(disk_config) / sizeof(disk_config[0]), |
777 | CFGFILE_MINVERSION); | 778 | CFGFILE_MINVERSION); |
@@ -892,9 +893,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
892 | break; | 893 | break; |
893 | 894 | ||
894 | default: | 895 | default: |
895 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 896 | exit_on_usb(button); |
896 | == SYS_USB_CONNECTED) | ||
897 | return PLUGIN_USB_CONNECTED; | ||
898 | break; | 897 | break; |
899 | } | 898 | } |
900 | if (button != BUTTON_NONE) | 899 | if (button != BUTTON_NONE) |
@@ -908,7 +907,6 @@ enum plugin_status plugin_start(const void* parameter) | |||
908 | displaymsg = true; | 907 | displaymsg = true; |
909 | } | 908 | } |
910 | } | 909 | } |
911 | cleanup(NULL); | ||
912 | if (rb->memcmp(&osc, &osc_disk, sizeof(osc))) /* save settings if changed */ | 910 | if (rb->memcmp(&osc, &osc_disk, sizeof(osc))) /* save settings if changed */ |
913 | { | 911 | { |
914 | rb->memcpy(&osc_disk, &osc, sizeof(osc)); | 912 | rb->memcpy(&osc_disk, &osc, sizeof(osc)); |
diff --git a/apps/plugins/pacbox/pacbox.c b/apps/plugins/pacbox/pacbox.c index 7f40822e0d..db25b1c0f1 100644 --- a/apps/plugins/pacbox/pacbox.c +++ b/apps/plugins/pacbox/pacbox.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include "lib/configfile.h" | 32 | #include "lib/configfile.h" |
33 | #include "lib/playback_control.h" | 33 | #include "lib/playback_control.h" |
34 | 34 | ||
35 | PLUGIN_HEADER | 35 | |
36 | PLUGIN_IRAM_DECLARE | 36 | PLUGIN_IRAM_DECLARE |
37 | 37 | ||
38 | struct pacman_settings { | 38 | struct pacman_settings { |
diff --git a/apps/plugins/pdbox/pdbox.c b/apps/plugins/pdbox/pdbox.c index 4fa6978417..7f4a7ac6dc 100644 --- a/apps/plugins/pdbox/pdbox.c +++ b/apps/plugins/pdbox/pdbox.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include "PDa/src/s_stuff.h" | 28 | #include "PDa/src/s_stuff.h" |
29 | 29 | ||
30 | /* Welcome to the PDBox plugin */ | 30 | /* Welcome to the PDBox plugin */ |
31 | PLUGIN_HEADER | 31 | |
32 | PLUGIN_IRAM_DECLARE | 32 | PLUGIN_IRAM_DECLARE |
33 | 33 | ||
34 | /* Name of the file to open. */ | 34 | /* Name of the file to open. */ |
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c index a429b00166..a953c6804b 100644 --- a/apps/plugins/pegbox.c +++ b/apps/plugins/pegbox.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "pluginbitmaps/pegbox_header.h" | 26 | #include "pluginbitmaps/pegbox_header.h" |
27 | #include "pluginbitmaps/pegbox_pieces.h" | 27 | #include "pluginbitmaps/pegbox_pieces.h" |
28 | 28 | ||
29 | PLUGIN_HEADER | 29 | |
30 | 30 | ||
31 | #define CONFIG_FILE_NAME "pegbox.cfg" | 31 | #define CONFIG_FILE_NAME "pegbox.cfg" |
32 | 32 | ||
diff --git a/apps/plugins/pictureflow.c b/apps/plugins/pictureflow.c index 75dc4052c5..738ca2f672 100644 --- a/apps/plugins/pictureflow.c +++ b/apps/plugins/pictureflow.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "lib/overlay.h" | 25 | #include "lib/overlay.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* this is the plugin entry point */ | 29 | /* this is the plugin entry point */ |
30 | enum plugin_status plugin_start(const void* parameter) | 30 | enum plugin_status plugin_start(const void* parameter) |
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index 546afad217..8ad62b0238 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <albumart.h> | 27 | #include <albumart.h> |
28 | #include "lib/read_image.h" | 28 | #include "lib/read_image.h" |
29 | #include "lib/pluginlib_actions.h" | 29 | #include "lib/pluginlib_actions.h" |
30 | #include "lib/pluginlib_exit.h" | ||
30 | #include "lib/helper.h" | 31 | #include "lib/helper.h" |
31 | #include "lib/configfile.h" | 32 | #include "lib/configfile.h" |
32 | #include "lib/grey.h" | 33 | #include "lib/grey.h" |
@@ -34,7 +35,7 @@ | |||
34 | #include "lib/feature_wrappers.h" | 35 | #include "lib/feature_wrappers.h" |
35 | #include "lib/buflib.h" | 36 | #include "lib/buflib.h" |
36 | 37 | ||
37 | PLUGIN_HEADER | 38 | |
38 | 39 | ||
39 | /******************************* Globals ***********************************/ | 40 | /******************************* Globals ***********************************/ |
40 | 41 | ||
@@ -2068,9 +2069,8 @@ void update_scroll_animation(void) | |||
2068 | /** | 2069 | /** |
2069 | Cleanup the plugin | 2070 | Cleanup the plugin |
2070 | */ | 2071 | */ |
2071 | void cleanup(void *parameter) | 2072 | void cleanup(void) |
2072 | { | 2073 | { |
2073 | (void) parameter; | ||
2074 | int i; | 2074 | int i; |
2075 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ | 2075 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ |
2076 | rb->cpu_boost(false); | 2076 | rb->cpu_boost(false); |
@@ -2610,19 +2610,6 @@ int main(void) | |||
2610 | cache_version = CACHE_VERSION; | 2610 | cache_version = CACHE_VERSION; |
2611 | configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, CONFIG_VERSION); | 2611 | configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, CONFIG_VERSION); |
2612 | 2612 | ||
2613 | |||
2614 | #ifdef USEGSLIB | ||
2615 | long grey_buf_used; | ||
2616 | if (!grey_init(buf, buf_size, GREY_BUFFERED|GREY_ON_COP, | ||
2617 | LCD_WIDTH, LCD_HEIGHT, &grey_buf_used)) | ||
2618 | { | ||
2619 | error_wait("Greylib init failed!"); | ||
2620 | return PLUGIN_ERROR; | ||
2621 | } | ||
2622 | grey_setfont(FONT_UI); | ||
2623 | buf_size -= grey_buf_used; | ||
2624 | buf = (void*)(grey_buf_used + (char*)buf); | ||
2625 | #endif | ||
2626 | buflib_init(&buf_ctx, (void *)buf, buf_size); | 2613 | buflib_init(&buf_ctx, (void *)buf, buf_size); |
2627 | 2614 | ||
2628 | if (!(empty_slide_hid = read_pfraw(EMPTY_SLIDE, 0))) | 2615 | if (!(empty_slide_hid = read_pfraw(EMPTY_SLIDE, 0))) |
@@ -2841,9 +2828,7 @@ int main(void) | |||
2841 | } | 2828 | } |
2842 | break; | 2829 | break; |
2843 | default: | 2830 | default: |
2844 | if (rb->default_event_handler_ex(button, cleanup, NULL) | 2831 | exit_on_usb(button); |
2845 | == SYS_USB_CONNECTED) | ||
2846 | return PLUGIN_USB_CONNECTED; | ||
2847 | break; | 2832 | break; |
2848 | } | 2833 | } |
2849 | } | 2834 | } |
@@ -2855,6 +2840,7 @@ enum plugin_status plugin_start(const void *parameter) | |||
2855 | { | 2840 | { |
2856 | int ret, i; | 2841 | int ret, i; |
2857 | (void) parameter; | 2842 | (void) parameter; |
2843 | atexit(cleanup); | ||
2858 | 2844 | ||
2859 | FOR_NB_SCREENS(i) | 2845 | FOR_NB_SCREENS(i) |
2860 | rb->viewportmanager_theme_enable(i, false, NULL); | 2846 | rb->viewportmanager_theme_enable(i, false, NULL); |
@@ -2873,6 +2859,21 @@ enum plugin_status plugin_start(const void *parameter) | |||
2873 | } | 2859 | } |
2874 | #endif | 2860 | #endif |
2875 | #endif | 2861 | #endif |
2862 | |||
2863 | #ifdef USEGSLIB | ||
2864 | long grey_buf_used; | ||
2865 | if (!grey_init(buf, buf_size, GREY_BUFFERED|GREY_ON_COP, | ||
2866 | LCD_WIDTH, LCD_HEIGHT, &grey_buf_used)) | ||
2867 | { | ||
2868 | error_wait("Greylib init failed!"); | ||
2869 | return PLUGIN_ERROR; | ||
2870 | } | ||
2871 | grey_setfont(FONT_UI); | ||
2872 | buf_size -= grey_buf_used; | ||
2873 | buf = (void*)(grey_buf_used + (char*)buf); | ||
2874 | #endif | ||
2875 | |||
2876 | atexit(cleanup); | ||
2876 | ret = main(); | 2877 | ret = main(); |
2877 | if ( ret == PLUGIN_OK || ret == PLUGIN_GOTO_WPS) { | 2878 | if ( ret == PLUGIN_OK || ret == PLUGIN_GOTO_WPS) { |
2878 | if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, | 2879 | if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, |
@@ -2882,7 +2883,5 @@ enum plugin_status plugin_start(const void *parameter) | |||
2882 | ret = PLUGIN_ERROR; | 2883 | ret = PLUGIN_ERROR; |
2883 | } | 2884 | } |
2884 | } | 2885 | } |
2885 | |||
2886 | cleanup(NULL); | ||
2887 | return ret; | 2886 | return ret; |
2888 | } | 2887 | } |
diff --git a/apps/plugins/pitch_detector.c b/apps/plugins/pitch_detector.c index 36248a540d..b3003cd522 100644 --- a/apps/plugins/pitch_detector.c +++ b/apps/plugins/pitch_detector.c | |||
@@ -68,7 +68,7 @@ | |||
68 | #include "lib/helper.h" | 68 | #include "lib/helper.h" |
69 | #include "pluginbitmaps/pitch_notes.h" | 69 | #include "pluginbitmaps/pitch_notes.h" |
70 | 70 | ||
71 | PLUGIN_HEADER | 71 | |
72 | PLUGIN_IRAM_DECLARE | 72 | PLUGIN_IRAM_DECLARE |
73 | 73 | ||
74 | /* Some fixed point calculation stuff */ | 74 | /* Some fixed point calculation stuff */ |
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c index 637d948f3d..35bc03ba1f 100644 --- a/apps/plugins/plasma.c +++ b/apps/plugins/plasma.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "plugin.h" | 27 | #include "plugin.h" |
28 | #include "lib/helper.h" | 28 | #include "lib/helper.h" |
29 | #include "lib/pluginlib_actions.h" | 29 | #include "lib/pluginlib_actions.h" |
30 | #include "lib/pluginlib_exit.h" | ||
30 | 31 | ||
31 | #ifdef HAVE_LCD_BITMAP | 32 | #ifdef HAVE_LCD_BITMAP |
32 | 33 | ||
@@ -35,7 +36,6 @@ | |||
35 | #endif | 36 | #endif |
36 | #include "lib/fixedpoint.h" | 37 | #include "lib/fixedpoint.h" |
37 | 38 | ||
38 | PLUGIN_HEADER | ||
39 | 39 | ||
40 | /******************************* Globals ***********************************/ | 40 | /******************************* Globals ***********************************/ |
41 | 41 | ||
@@ -131,10 +131,8 @@ static void shades_generate(void) | |||
131 | } | 131 | } |
132 | #endif | 132 | #endif |
133 | 133 | ||
134 | void cleanup(void *parameter) | 134 | void cleanup(void) |
135 | { | 135 | { |
136 | (void)parameter; | ||
137 | |||
138 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ | 136 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ |
139 | if (boosted) | 137 | if (boosted) |
140 | rb->cpu_boost(false); | 138 | rb->cpu_boost(false); |
@@ -144,6 +142,9 @@ void cleanup(void *parameter) | |||
144 | #endif | 142 | #endif |
145 | /* Turn on backlight timeout (revert to settings) */ | 143 | /* Turn on backlight timeout (revert to settings) */ |
146 | backlight_use_settings(); /* backlight control in lib/helper.c */ | 144 | backlight_use_settings(); /* backlight control in lib/helper.c */ |
145 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) | ||
146 | rb->lcd_set_mode(LCD_MODE_RGB565); | ||
147 | #endif | ||
147 | } | 148 | } |
148 | 149 | ||
149 | /* | 150 | /* |
@@ -180,10 +181,15 @@ int main(void) | |||
180 | /* get the remainder of the plugin buffer */ | 181 | /* get the remainder of the plugin buffer */ |
181 | gbuf = (unsigned char *) rb->plugin_get_buffer(&gbuf_size); | 182 | gbuf = (unsigned char *) rb->plugin_get_buffer(&gbuf_size); |
182 | 183 | ||
183 | grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL); | 184 | if (!grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL)) |
185 | { | ||
186 | rb->splash(HZ, "Couldn't init greyscale display"); | ||
187 | return PLUGIN_ERROR; | ||
188 | } | ||
184 | /* switch on greyscale overlay */ | 189 | /* switch on greyscale overlay */ |
185 | grey_show(true); | 190 | grey_show(true); |
186 | #endif | 191 | #endif |
192 | atexit(cleanup); | ||
187 | sp1 = 4; | 193 | sp1 = 4; |
188 | sp2 = 2; | 194 | sp2 = 2; |
189 | sp3 = 4; | 195 | sp3 = 4; |
@@ -261,7 +267,6 @@ int main(void) | |||
261 | { | 267 | { |
262 | case PLA_EXIT: | 268 | case PLA_EXIT: |
263 | case PLA_CANCEL: | 269 | case PLA_CANCEL: |
264 | cleanup(NULL); | ||
265 | return PLUGIN_OK; | 270 | return PLUGIN_OK; |
266 | break; | 271 | break; |
267 | 272 | ||
@@ -299,9 +304,7 @@ int main(void) | |||
299 | #endif | 304 | #endif |
300 | 305 | ||
301 | default: | 306 | default: |
302 | if (rb->default_event_handler_ex(action, cleanup, NULL) | 307 | exit_on_usb(action); |
303 | == SYS_USB_CONNECTED) | ||
304 | return PLUGIN_USB_CONNECTED; | ||
305 | break; | 308 | break; |
306 | } | 309 | } |
307 | } | 310 | } |
@@ -311,8 +314,6 @@ int main(void) | |||
311 | 314 | ||
312 | enum plugin_status plugin_start(const void* parameter) | 315 | enum plugin_status plugin_start(const void* parameter) |
313 | { | 316 | { |
314 | int ret; | ||
315 | |||
316 | (void)parameter; | 317 | (void)parameter; |
317 | #if LCD_DEPTH > 1 | 318 | #if LCD_DEPTH > 1 |
318 | rb->lcd_set_backdrop(NULL); | 319 | rb->lcd_set_backdrop(NULL); |
@@ -323,14 +324,7 @@ enum plugin_status plugin_start(const void* parameter) | |||
323 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) | 324 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) |
324 | rb->lcd_set_mode(LCD_MODE_PAL256); | 325 | rb->lcd_set_mode(LCD_MODE_PAL256); |
325 | #endif | 326 | #endif |
326 | 327 | return main(); | |
327 | ret = main(); | ||
328 | |||
329 | #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) | ||
330 | rb->lcd_set_mode(LCD_MODE_RGB565); | ||
331 | #endif | ||
332 | |||
333 | return ret; | ||
334 | } | 328 | } |
335 | 329 | ||
336 | #endif /* HAVE_LCD_BITMAP */ | 330 | #endif /* HAVE_LCD_BITMAP */ |
diff --git a/apps/plugins/plugin_crt0.c b/apps/plugins/plugin_crt0.c new file mode 100755 index 0000000000..ff117be002 --- /dev/null +++ b/apps/plugins/plugin_crt0.c | |||
@@ -0,0 +1,112 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2010 by Thomas Martitz | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | |||
23 | #include "plugin.h" | ||
24 | #include <setjmp.h> | ||
25 | |||
26 | PLUGIN_HEADER | ||
27 | |||
28 | /* | ||
29 | * EXIT_MAGIC magic, because 0 cannot be used due to setjmp() | ||
30 | * must be > 0 | ||
31 | */ | ||
32 | #define EXIT_MAGIC 0x0CDEBABE | ||
33 | |||
34 | extern enum plugin_status plugin_start(const void*); | ||
35 | |||
36 | static jmp_buf __exit_env; | ||
37 | /* only 1 atexit handler for now, chain in the exit handler if you need more */ | ||
38 | static void (*atexit_handler)(void); | ||
39 | |||
40 | int atexit(void (*fn)(void)) | ||
41 | { | ||
42 | if (atexit_handler) | ||
43 | return -1; | ||
44 | atexit_handler = fn; | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | void exit(int status) | ||
49 | { /* jump back in time to before starting the plugin */ | ||
50 | longjmp(__exit_env, status != 0 ? status : EXIT_MAGIC); | ||
51 | } | ||
52 | |||
53 | void _exit(int status) | ||
54 | { /* don't call exit handler */ | ||
55 | atexit_handler = NULL; | ||
56 | exit(status); | ||
57 | } | ||
58 | |||
59 | enum plugin_status plugin__start(const void *param) | ||
60 | { | ||
61 | int exit_ret; | ||
62 | enum plugin_status ret; | ||
63 | |||
64 | /* we come back here if exit() was called or the plugin returned normally */ | ||
65 | exit_ret = setjmp(__exit_env); | ||
66 | if (exit_ret == 0) | ||
67 | { /* start the plugin */ | ||
68 | ret = plugin_start(param); | ||
69 | } | ||
70 | else | ||
71 | { /* plugin exit via exit() */ | ||
72 | if (exit_ret == EXIT_MAGIC) | ||
73 | { /* exit(EXIT_SUCCESS) */ | ||
74 | ret = PLUGIN_OK; | ||
75 | } | ||
76 | else if (exit_ret < INTERNAL_PLUGIN_RETVAL_START) | ||
77 | { /* exit(EXIT_FAILURE) */ | ||
78 | ret = PLUGIN_ERROR; | ||
79 | } | ||
80 | else | ||
81 | { /* exit(PLUGIN_XXX) */ | ||
82 | ret = (enum plugin_status)exit_ret; | ||
83 | } | ||
84 | } | ||
85 | |||
86 | /* before finishing, call the exit handler if there was one */ | ||
87 | if (atexit_handler != NULL) | ||
88 | atexit_handler(); | ||
89 | |||
90 | return ret; | ||
91 | } | ||
92 | |||
93 | static void cleanup_wrapper(void *param) | ||
94 | { | ||
95 | (void)param; | ||
96 | if (atexit_handler) | ||
97 | atexit_handler(); | ||
98 | } | ||
99 | |||
100 | void exit_on_usb(int button) | ||
101 | { /* the default handler will call the exit handler before | ||
102 | * showing the usb screen; after that we don't want the exit handler | ||
103 | * to be called a second time, hence _exit() | ||
104 | * | ||
105 | * if not usb, then the handler will only be called if powering off | ||
106 | * if poweroff, the plugin doesn't want to run any further so exit as well*/ | ||
107 | long result = rb->default_event_handler_ex(button, cleanup_wrapper, NULL); | ||
108 | if (result == SYS_USB_CONNECTED) | ||
109 | _exit(PLUGIN_USB_CONNECTED); | ||
110 | else if (result == SYS_POWEROFF) | ||
111 | _exit(PLUGIN_POWEROFF); | ||
112 | } | ||
diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make index 532dba68c0..ed432d92be 100644 --- a/apps/plugins/plugins.make +++ b/apps/plugins/plugins.make | |||
@@ -33,7 +33,7 @@ PLUGIN_LDS := $(APPSDIR)/plugins/plugin.lds | |||
33 | PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link | 33 | PLUGINLINK_LDS := $(BUILDDIR)/apps/plugins/plugin.link |
34 | OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link | 34 | OVERLAYREF_LDS := $(BUILDDIR)/apps/plugins/overlay_ref.link |
35 | endif | 35 | endif |
36 | 36 | PLUGIN_CRT0 := $(BUILDDIR)/apps/plugins/plugin_crt0.o | |
37 | # multifile plugins (subdirs): | 37 | # multifile plugins (subdirs): |
38 | PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) | 38 | PLUGINSUBDIRS := $(call preprocess, $(APPSDIR)/plugins/SUBDIRS) |
39 | 39 | ||
@@ -49,7 +49,7 @@ PLUGINFLAGS = -I$(APPSDIR)/plugins -DPLUGIN $(CFLAGS) | |||
49 | $(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o | 49 | $(ROCKS1): $(BUILDDIR)/%.rock: $(BUILDDIR)/%.o |
50 | 50 | ||
51 | # dependency for all plugins | 51 | # dependency for all plugins |
52 | $(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) | 52 | $(ROCKS): $(APPSDIR)/plugin.h $(PLUGINLINK_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(PLUGIN_CRT0) $(LIBSETJMP) |
53 | 53 | ||
54 | $(PLUGINLIB): $(PLUGINLIB_OBJ) | 54 | $(PLUGINLIB): $(PLUGINLIB_OBJ) |
55 | $(SILENT)$(shell rm -f $@) | 55 | $(SILENT)$(shell rm -f $@) |
@@ -89,7 +89,7 @@ else | |||
89 | endif | 89 | endif |
90 | PLUGINLDFLAGS += $(GLOBAL_LDOPTS) | 90 | PLUGINLDFLAGS += $(GLOBAL_LDOPTS) |
91 | 91 | ||
92 | $(BUILDDIR)/%.rock: $(LIBSETJMP) | 92 | $(BUILDDIR)/%.rock: |
93 | $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \ | 93 | $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(BUILDDIR)/$*.elf \ |
94 | $(filter %.o, $^) \ | 94 | $(filter %.o, $^) \ |
95 | $(filter %.a, $+) \ | 95 | $(filter %.a, $+) \ |
@@ -103,7 +103,7 @@ endif | |||
103 | $(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua | 103 | $(BUILDDIR)/apps/plugins/%.lua: $(ROOTDIR)/apps/plugins/%.lua |
104 | $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/ | 104 | $(call PRINTS,CP $(subst $(ROOTDIR)/,,$<))cp $< $(BUILDDIR)/apps/plugins/ |
105 | 105 | ||
106 | $(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) | 106 | $(BUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(OVERLAYREF_LDS) $(PLUGINLIB) $(PLUGINBITMAPLIB) $(LIBSETJMP) $(PLUGIN_CRT0) |
107 | $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ | 107 | $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o /dev/null \ |
108 | $(filter %.o, $^) \ | 108 | $(filter %.o, $^) \ |
109 | $(filter %.a, $+) \ | 109 | $(filter %.a, $+) \ |
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c index 08899d767a..8a41d9eeb2 100644 --- a/apps/plugins/pong.c +++ b/apps/plugins/pong.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #ifdef HAVE_LCD_BITMAP | 23 | #ifdef HAVE_LCD_BITMAP |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define PAD_HEIGHT LCD_HEIGHT / 6 /* Recorder: 10 iRiver: 21 */ | 27 | #define PAD_HEIGHT LCD_HEIGHT / 6 /* Recorder: 10 iRiver: 21 */ |
28 | #define PAD_WIDTH LCD_WIDTH / 50 /* Recorder: 2 iRiver: 2 */ | 28 | #define PAD_WIDTH LCD_WIDTH / 50 /* Recorder: 2 iRiver: 2 */ |
diff --git a/apps/plugins/ppmviewer.c b/apps/plugins/ppmviewer.c index c947af10bd..035fffe92a 100644 --- a/apps/plugins/ppmviewer.c +++ b/apps/plugins/ppmviewer.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #if defined(HAVE_LCD_COLOR) | 25 | #if defined(HAVE_LCD_COLOR) |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* Magic constants. */ | 29 | /* Magic constants. */ |
30 | #define PPM_MAGIC1 'P' | 30 | #define PPM_MAGIC1 'P' |
diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c index 9d9020f023..2e34a4e048 100644 --- a/apps/plugins/properties.c +++ b/apps/plugins/properties.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | bool its_a_dir = false; | 25 | bool its_a_dir = false; |
26 | 26 | ||
diff --git a/apps/plugins/random_folder_advance_config.c b/apps/plugins/random_folder_advance_config.c index 9a589dfff6..55d9bf99ab 100644 --- a/apps/plugins/random_folder_advance_config.c +++ b/apps/plugins/random_folder_advance_config.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "file.h" | 22 | #include "file.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | static bool cancel; | 26 | static bool cancel; |
27 | static int fd; | 27 | static int fd; |
diff --git a/apps/plugins/remote_control.c b/apps/plugins/remote_control.c index e00d5de54c..a5ad4423a1 100644 --- a/apps/plugins/remote_control.c +++ b/apps/plugins/remote_control.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #include "lib/pluginlib_actions.h" | 24 | #include "lib/pluginlib_actions.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | #define PLUGIN_CONTINUE 10 | 28 | #define PLUGIN_CONTINUE 10 |
29 | 29 | ||
diff --git a/apps/plugins/reversi/reversi-gui.c b/apps/plugins/reversi/reversi-gui.c index 67ccf19456..dcdfe5fd35 100644 --- a/apps/plugins/reversi/reversi-gui.c +++ b/apps/plugins/reversi/reversi-gui.c | |||
@@ -47,7 +47,7 @@ further options: | |||
47 | 47 | ||
48 | #include "lib/playback_control.h" | 48 | #include "lib/playback_control.h" |
49 | 49 | ||
50 | PLUGIN_HEADER | 50 | |
51 | 51 | ||
52 | /* This is initialized at the start of the plugin and used to determine the | 52 | /* This is initialized at the start of the plugin and used to determine the |
53 | * Appropriate game board size/legend spacing if the font is larger than a cell | 53 | * Appropriate game board size/legend spacing if the font is larger than a cell |
diff --git a/apps/plugins/robotfindskitten.c b/apps/plugins/robotfindskitten.c index 0e5c94ea7e..003087b5c3 100644 --- a/apps/plugins/robotfindskitten.c +++ b/apps/plugins/robotfindskitten.c | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | /* This macros must always be included. Should be placed at the top by | 35 | /* This macros must always be included. Should be placed at the top by |
36 | convention, although the actual position doesn't matter */ | 36 | convention, although the actual position doesn't matter */ |
37 | PLUGIN_HEADER | 37 | |
38 | 38 | ||
39 | /*Be sure to change MESSAGES when you change the array, or bad things | 39 | /*Be sure to change MESSAGES when you change the array, or bad things |
40 | will happen.*/ | 40 | will happen.*/ |
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c index 084eaa5830..90df401ef9 100644 --- a/apps/plugins/rockblox.c +++ b/apps/plugins/rockblox.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include "lib/playergfx.h" | 28 | #include "lib/playergfx.h" |
29 | #include "lib/mylcd.h" | 29 | #include "lib/mylcd.h" |
30 | 30 | ||
31 | PLUGIN_HEADER | 31 | |
32 | 32 | ||
33 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 33 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
34 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 34 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
diff --git a/apps/plugins/rockblox1d.c b/apps/plugins/rockblox1d.c index 5006d88a2d..1306cc9932 100644 --- a/apps/plugins/rockblox1d.c +++ b/apps/plugins/rockblox1d.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #include "plugin.h" | 23 | #include "plugin.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | 27 | ||
28 | #ifdef HAVE_LCD_BITMAP | 28 | #ifdef HAVE_LCD_BITMAP |
diff --git a/apps/plugins/rockbox_flash.c b/apps/plugins/rockbox_flash.c index 17c5e51ee2..f1c4f537da 100644 --- a/apps/plugins/rockbox_flash.c +++ b/apps/plugins/rockbox_flash.c | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #if (CONFIG_CPU == SH7034) /* Only for SH targets */ | 26 | #if (CONFIG_CPU == SH7034) /* Only for SH targets */ |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | /* define DUMMY if you only want to "play" with the UI, does no harm */ | 30 | /* define DUMMY if you only want to "play" with the UI, does no harm */ |
31 | /* #define DUMMY */ | 31 | /* #define DUMMY */ |
diff --git a/apps/plugins/rockboy.c b/apps/plugins/rockboy.c index bd72dea1f8..b4520733ae 100644 --- a/apps/plugins/rockboy.c +++ b/apps/plugins/rockboy.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include "lib/overlay.h" | 25 | #include "lib/overlay.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | /* this is the plugin entry point */ | 29 | /* this is the plugin entry point */ |
30 | enum plugin_status plugin_start(const void* parameter) | 30 | enum plugin_status plugin_start(const void* parameter) |
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c index 797971c734..7fc919912e 100644 --- a/apps/plugins/rockboy/rockboy.c +++ b/apps/plugins/rockboy/rockboy.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include "hw.h" | 26 | #include "hw.h" |
27 | #include "pcm.h" | 27 | #include "pcm.h" |
28 | 28 | ||
29 | PLUGIN_HEADER | 29 | |
30 | PLUGIN_IRAM_DECLARE | 30 | PLUGIN_IRAM_DECLARE |
31 | 31 | ||
32 | int shut,cleanshut; | 32 | int shut,cleanshut; |
diff --git a/apps/plugins/rocklife.c b/apps/plugins/rocklife.c index 210cffa78d..afe442f989 100644 --- a/apps/plugins/rocklife.c +++ b/apps/plugins/rocklife.c | |||
@@ -64,7 +64,7 @@ | |||
64 | #include "lib/pluginlib_actions.h" | 64 | #include "lib/pluginlib_actions.h" |
65 | #include "lib/helper.h" | 65 | #include "lib/helper.h" |
66 | 66 | ||
67 | PLUGIN_HEADER | 67 | |
68 | 68 | ||
69 | #define ROCKLIFE_PLAY_PAUSE PLA_SELECT | 69 | #define ROCKLIFE_PLAY_PAUSE PLA_SELECT |
70 | #define ROCKLIFE_INIT PLA_DOWN | 70 | #define ROCKLIFE_INIT PLA_DOWN |
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c index 264e4f6b14..7032a8e793 100644 --- a/apps/plugins/rockpaint.c +++ b/apps/plugins/rockpaint.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include "lib/rgb_hsv.h" | 33 | #include "lib/rgb_hsv.h" |
34 | #include "lib/playback_control.h" | 34 | #include "lib/playback_control.h" |
35 | 35 | ||
36 | PLUGIN_HEADER | 36 | |
37 | 37 | ||
38 | /*********************************************************************** | 38 | /*********************************************************************** |
39 | * Buttons | 39 | * Buttons |
diff --git a/apps/plugins/search.c b/apps/plugins/search.c index 7edb7e229a..76d8711feb 100644 --- a/apps/plugins/search.c +++ b/apps/plugins/search.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include <ctype.h> | 23 | #include <ctype.h> |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define BUFFER_SIZE 16384 | 27 | #define BUFFER_SIZE 16384 |
28 | 28 | ||
diff --git a/apps/plugins/searchengine/searchengine.c b/apps/plugins/searchengine/searchengine.c index f737a27621..4e8bc452f1 100644 --- a/apps/plugins/searchengine/searchengine.c +++ b/apps/plugins/searchengine/searchengine.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "token.h" | 23 | #include "token.h" |
24 | #include "dbinterface.h" | 24 | #include "dbinterface.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | void *audio_bufferbase; | 28 | void *audio_bufferbase; |
29 | void *audio_bufferpointer; | 29 | void *audio_bufferpointer; |
diff --git a/apps/plugins/settings_dumper.c b/apps/plugins/settings_dumper.c index 93c4f67657..381cdeebaa 100644 --- a/apps/plugins/settings_dumper.c +++ b/apps/plugins/settings_dumper.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | #define FILENAME "/settings_dumper.txt" | 25 | #define FILENAME "/settings_dumper.txt" |
26 | static int setting_count = 0; | 26 | static int setting_count = 0; |
diff --git a/apps/plugins/shopper.c b/apps/plugins/shopper.c index b05395bec2..61cf2953af 100644 --- a/apps/plugins/shopper.c +++ b/apps/plugins/shopper.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #define MAX_LIST_SIZE 400 | 26 | #define MAX_LIST_SIZE 400 |
27 | #define DESC_SIZE 40 | 27 | #define DESC_SIZE 40 |
diff --git a/apps/plugins/shortcuts/shortcuts_append.c b/apps/plugins/shortcuts/shortcuts_append.c index 69b2a445f3..3eea87e46e 100644 --- a/apps/plugins/shortcuts/shortcuts_append.c +++ b/apps/plugins/shortcuts/shortcuts_append.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #include "shortcuts.h" | 23 | #include "shortcuts.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | 27 | ||
28 | bool append_entry_to_file(sc_file_t *file, char *path, bool is_dir) | 28 | bool append_entry_to_file(sc_file_t *file, char *path, bool is_dir) |
diff --git a/apps/plugins/shortcuts/shortcuts_view.c b/apps/plugins/shortcuts/shortcuts_view.c index a63e26d7c6..469241fd84 100644 --- a/apps/plugins/shortcuts/shortcuts_view.c +++ b/apps/plugins/shortcuts/shortcuts_view.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #include "shortcuts.h" | 23 | #include "shortcuts.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | enum sc_list_action_type | 27 | enum sc_list_action_type |
28 | { | 28 | { |
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c index 7bf49c123d..4d7d2c00ca 100644 --- a/apps/plugins/sliding_puzzle.c +++ b/apps/plugins/sliding_puzzle.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | #ifdef HAVE_LCD_BITMAP | 23 | #ifdef HAVE_LCD_BITMAP |
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c index c3fe84e6d0..00a43e5cc7 100644 --- a/apps/plugins/snake.c +++ b/apps/plugins/snake.c | |||
@@ -38,7 +38,7 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left; | |||
38 | #include "lib/highscore.h" | 38 | #include "lib/highscore.h" |
39 | #include "lib/playback_control.h" | 39 | #include "lib/playback_control.h" |
40 | 40 | ||
41 | PLUGIN_HEADER | 41 | |
42 | 42 | ||
43 | /* variable button definitions */ | 43 | /* variable button definitions */ |
44 | #if CONFIG_KEYPAD == RECORDER_PAD | 44 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c index 414d924c4a..3fbf40b8f9 100644 --- a/apps/plugins/snake2.c +++ b/apps/plugins/snake2.c | |||
@@ -34,7 +34,7 @@ Head and Tail are stored | |||
34 | #include "lib/highscore.h" | 34 | #include "lib/highscore.h" |
35 | #include "lib/playback_control.h" | 35 | #include "lib/playback_control.h" |
36 | 36 | ||
37 | PLUGIN_HEADER | 37 | |
38 | 38 | ||
39 | #define WIDTH 28 | 39 | #define WIDTH 28 |
40 | #define HEIGHT 16 | 40 | #define HEIGHT 16 |
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c index c3c9b7458a..c9abae4b97 100644 --- a/apps/plugins/snow.c +++ b/apps/plugins/snow.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/playergfx.h" | 22 | #include "lib/playergfx.h" |
23 | #include "lib/mylcd.h" | 23 | #include "lib/mylcd.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #ifdef HAVE_LCD_BITMAP | 27 | #ifdef HAVE_LCD_BITMAP |
28 | #define NUM_PARTICLES (LCD_WIDTH * LCD_HEIGHT / 72) | 28 | #define NUM_PARTICLES (LCD_WIDTH * LCD_HEIGHT / 72) |
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c index b2721c84e9..6e94519803 100644 --- a/apps/plugins/sokoban.c +++ b/apps/plugins/sokoban.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/playback_control.h" | 25 | #include "lib/playback_control.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | #define SOKOBAN_TITLE "Sokoban" | 29 | #define SOKOBAN_TITLE "Sokoban" |
30 | 30 | ||
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c index 1c7aefb1c3..1d2535f657 100644 --- a/apps/plugins/solitaire.c +++ b/apps/plugins/solitaire.c | |||
@@ -28,7 +28,7 @@ | |||
28 | 28 | ||
29 | #ifdef HAVE_LCD_BITMAP | 29 | #ifdef HAVE_LCD_BITMAP |
30 | 30 | ||
31 | PLUGIN_HEADER | 31 | |
32 | 32 | ||
33 | #define min(a,b) (a<b?a:b) | 33 | #define min(a,b) (a<b?a:b) |
34 | 34 | ||
diff --git a/apps/plugins/sort.c b/apps/plugins/sort.c index 1e787b33dd..f8c3f5c248 100644 --- a/apps/plugins/sort.c +++ b/apps/plugins/sort.c | |||
@@ -57,7 +57,7 @@ | |||
57 | * TODO: Implement a merge sort for files larger than the buffer | 57 | * TODO: Implement a merge sort for files larger than the buffer |
58 | ****************************************************************************/ | 58 | ****************************************************************************/ |
59 | 59 | ||
60 | PLUGIN_HEADER | 60 | |
61 | 61 | ||
62 | size_t buf_size; | 62 | size_t buf_size; |
63 | static char *filename; | 63 | static char *filename; |
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c index 0ade406b59..2e7ccc0743 100644 --- a/apps/plugins/spacerocks.c +++ b/apps/plugins/spacerocks.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "lib/highscore.h" | 25 | #include "lib/highscore.h" |
26 | #include "lib/playback_control.h" | 26 | #include "lib/playback_control.h" |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | /* variable button definitions */ | 30 | /* variable button definitions */ |
31 | #if CONFIG_KEYPAD == RECORDER_PAD | 31 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/splitedit.c b/apps/plugins/splitedit.c index 3e5161b67f..c19d4b5e06 100644 --- a/apps/plugins/splitedit.c +++ b/apps/plugins/splitedit.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/star.c b/apps/plugins/star.c index d11e3187db..c0f099775f 100644 --- a/apps/plugins/star.c +++ b/apps/plugins/star.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "lib/display_text.h" | 23 | #include "lib/display_text.h" |
24 | #include "lib/playback_control.h" | 24 | #include "lib/playback_control.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | /* size of a level in file */ | 28 | /* size of a level in file */ |
29 | #define STAR_LEVEL_SIZE ((STAR_WIDTH + 1) * STAR_HEIGHT + 1) | 29 | #define STAR_LEVEL_SIZE ((STAR_WIDTH + 1) * STAR_HEIGHT + 1) |
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c index 1ae0f289ff..09f58da1f6 100644 --- a/apps/plugins/starfield.c +++ b/apps/plugins/starfield.c | |||
@@ -19,10 +19,11 @@ | |||
19 | 19 | ||
20 | #include "plugin.h" | 20 | #include "plugin.h" |
21 | #include "lib/helper.h" | 21 | #include "lib/helper.h" |
22 | #include "lib/pluginlib_exit.h" | ||
22 | 23 | ||
23 | #ifdef HAVE_LCD_BITMAP /* and also not for the Player */ | 24 | #ifdef HAVE_LCD_BITMAP /* and also not for the Player */ |
24 | 25 | ||
25 | PLUGIN_HEADER | 26 | |
26 | 27 | ||
27 | /******************************* Globals ***********************************/ | 28 | /******************************* Globals ***********************************/ |
28 | 29 | ||
@@ -497,9 +498,11 @@ int plugin_main(void) | |||
497 | case STARFIELD_RC_QUIT: | 498 | case STARFIELD_RC_QUIT: |
498 | #endif | 499 | #endif |
499 | case(STARFIELD_QUIT): | 500 | case(STARFIELD_QUIT): |
500 | case(SYS_USB_CONNECTED): | ||
501 | return PLUGIN_OK; | 501 | return PLUGIN_OK; |
502 | break; | 502 | break; |
503 | default: | ||
504 | exit_on_usb(button); | ||
505 | break; | ||
503 | } | 506 | } |
504 | } | 507 | } |
505 | } | 508 | } |
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c index 3420579881..ecf335d3f0 100644 --- a/apps/plugins/stats.c +++ b/apps/plugins/stats.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | static int files, dirs, musicfiles, largestdir; | 25 | static int files, dirs, musicfiles, largestdir; |
26 | static int lasttick; | 26 | static int lasttick; |
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c index b09dcdb030..6bac97ea2a 100644 --- a/apps/plugins/stopwatch.c +++ b/apps/plugins/stopwatch.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #ifdef HAVE_LCD_BITMAP | 26 | #ifdef HAVE_LCD_BITMAP |
27 | #define TIMER_Y 1 | 27 | #define TIMER_Y 1 |
diff --git a/apps/plugins/sudoku/sudoku.c b/apps/plugins/sudoku/sudoku.c index f3d9b1e75f..4f87c5f4c8 100644 --- a/apps/plugins/sudoku/sudoku.c +++ b/apps/plugins/sudoku/sudoku.c | |||
@@ -81,7 +81,7 @@ Example ".ss" file, and one with a saved state: | |||
81 | #define BITMAP_WIDTH BMPWIDTH_sudoku_normal | 81 | #define BITMAP_WIDTH BMPWIDTH_sudoku_normal |
82 | #endif | 82 | #endif |
83 | 83 | ||
84 | PLUGIN_HEADER | 84 | |
85 | 85 | ||
86 | /* Default game - used to initialise sudoku.ss if it doesn't exist. */ | 86 | /* Default game - used to initialise sudoku.ss if it doesn't exist. */ |
87 | static const char default_game[9][9] = | 87 | static const char default_game[9][9] = |
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c index c2a7d8f896..5ded7f9f12 100644 --- a/apps/plugins/superdom.c +++ b/apps/plugins/superdom.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | #include "lib/display_text.h" | 23 | #include "lib/display_text.h" |
24 | #include "pluginbitmaps/superdom_boarditems.h" | 24 | #include "pluginbitmaps/superdom_boarditems.h" |
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | extern const fb_data superdom_boarditems[]; | 27 | extern const fb_data superdom_boarditems[]; |
28 | char buf[255]; | 28 | char buf[255]; |
diff --git a/apps/plugins/test_boost.c b/apps/plugins/test_boost.c index 2406990269..ec91206d1e 100644 --- a/apps/plugins/test_boost.c +++ b/apps/plugins/test_boost.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | enum plugin_status plugin_start(const void* parameter) | 26 | enum plugin_status plugin_start(const void* parameter) |
27 | { | 27 | { |
diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c index b8aa93d99b..94c510afef 100644 --- a/apps/plugins/test_codec.c +++ b/apps/plugins/test_codec.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | /* All swcodec targets have BUTTON_SELECT apart from the H10 and M3 */ | 25 | /* All swcodec targets have BUTTON_SELECT apart from the H10 and M3 */ |
26 | 26 | ||
diff --git a/apps/plugins/test_core_jpeg.c b/apps/plugins/test_core_jpeg.c index 9e7ecfd3f8..76dbac847e 100644 --- a/apps/plugins/test_core_jpeg.c +++ b/apps/plugins/test_core_jpeg.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/grey.h" | 23 | #include "lib/grey.h" |
24 | #include "lib/mylcd.h" | 24 | #include "lib/mylcd.h" |
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | /* different graphics libraries */ | 27 | /* different graphics libraries */ |
28 | #if LCD_DEPTH < 8 | 28 | #if LCD_DEPTH < 8 |
diff --git a/apps/plugins/test_disk.c b/apps/plugins/test_disk.c index 08e1a39704..2650f4b28b 100644 --- a/apps/plugins/test_disk.c +++ b/apps/plugins/test_disk.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "lib/helper.h" | 23 | #include "lib/helper.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #define TESTBASEDIR "/__TEST__" | 27 | #define TESTBASEDIR "/__TEST__" |
28 | #define TEST_FILE TESTBASEDIR "/test_disk.tmp" | 28 | #define TEST_FILE TESTBASEDIR "/test_disk.tmp" |
diff --git a/apps/plugins/test_fps.c b/apps/plugins/test_fps.c index 62e7f489b0..80a8d88104 100644 --- a/apps/plugins/test_fps.c +++ b/apps/plugins/test_fps.c | |||
@@ -45,7 +45,7 @@ PLUGIN_IRAM_DECLARE | |||
45 | 45 | ||
46 | #define DURATION (2*HZ) /* longer duration gives more precise results */ | 46 | #define DURATION (2*HZ) /* longer duration gives more precise results */ |
47 | 47 | ||
48 | PLUGIN_HEADER | 48 | |
49 | 49 | ||
50 | /* Screen logging */ | 50 | /* Screen logging */ |
51 | static int line; | 51 | static int line; |
diff --git a/apps/plugins/test_gfx.c b/apps/plugins/test_gfx.c index 2c46d16b63..aa898549bb 100644 --- a/apps/plugins/test_gfx.c +++ b/apps/plugins/test_gfx.c | |||
@@ -35,7 +35,7 @@ static size_t gbuf_size = 0; | |||
35 | #define DURATION (HZ) /* longer duration gives more precise results */ | 35 | #define DURATION (HZ) /* longer duration gives more precise results */ |
36 | #define RND_SEED 0x43A678C3 /* arbirary */ | 36 | #define RND_SEED 0x43A678C3 /* arbirary */ |
37 | 37 | ||
38 | PLUGIN_HEADER | 38 | |
39 | 39 | ||
40 | static uint16_t rand_table[0x400]; | 40 | static uint16_t rand_table[0x400]; |
41 | static int log_fd; | 41 | static int log_fd; |
diff --git a/apps/plugins/test_grey.c b/apps/plugins/test_grey.c index 31f63100aa..5931d96bd3 100644 --- a/apps/plugins/test_grey.c +++ b/apps/plugins/test_grey.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/grey.h" | 22 | #include "lib/grey.h" |
23 | #include "lib/helper.h" | 23 | #include "lib/helper.h" |
24 | 24 | ||
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) \ | 27 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) \ |
28 | || (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 28 | || (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
diff --git a/apps/plugins/test_greylib_bitmap_scale.c b/apps/plugins/test_greylib_bitmap_scale.c index 892f3dc622..d096d0240b 100644 --- a/apps/plugins/test_greylib_bitmap_scale.c +++ b/apps/plugins/test_greylib_bitmap_scale.c | |||
@@ -44,7 +44,7 @@ | |||
44 | #define BMP_LOAD rb->read_bmp_file | 44 | #define BMP_LOAD rb->read_bmp_file |
45 | #endif | 45 | #endif |
46 | 46 | ||
47 | PLUGIN_HEADER | 47 | |
48 | GREY_INFO_STRUCT | 48 | GREY_INFO_STRUCT |
49 | static unsigned char grey_bm_buf[LCD_WIDTH * LCD_HEIGHT + | 49 | static unsigned char grey_bm_buf[LCD_WIDTH * LCD_HEIGHT + |
50 | BM_SCALED_SIZE(LCD_WIDTH,0,FORMAT_NATIVE,0)]; | 50 | BM_SCALED_SIZE(LCD_WIDTH,0,FORMAT_NATIVE,0)]; |
diff --git a/apps/plugins/test_mem.c b/apps/plugins/test_mem.c index f648c0073a..7758e35b98 100644 --- a/apps/plugins/test_mem.c +++ b/apps/plugins/test_mem.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #if PLUGIN_BUFFER_SIZE <= 0x8000 | 26 | #if PLUGIN_BUFFER_SIZE <= 0x8000 |
27 | #define BUF_SIZE (1<<12) /* 16 KB = (1<<12)*sizeof(int) */ | 27 | #define BUF_SIZE (1<<12) /* 16 KB = (1<<12)*sizeof(int) */ |
diff --git a/apps/plugins/test_mem_jpeg.c b/apps/plugins/test_mem_jpeg.c index 6e7d381a2d..72f613135a 100644 --- a/apps/plugins/test_mem_jpeg.c +++ b/apps/plugins/test_mem_jpeg.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "lib/grey.h" | 25 | #include "lib/grey.h" |
26 | #include "lib/jpeg_mem.h" | 26 | #include "lib/jpeg_mem.h" |
27 | #include "lib/mylcd.h" | 27 | #include "lib/mylcd.h" |
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | /* different graphics libraries */ | 30 | /* different graphics libraries */ |
31 | #if LCD_DEPTH < 8 | 31 | #if LCD_DEPTH < 8 |
diff --git a/apps/plugins/test_resize.c b/apps/plugins/test_resize.c index 8ee4989bcf..2ab10eb7ee 100644 --- a/apps/plugins/test_resize.c +++ b/apps/plugins/test_resize.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include "lib/pluginlib_actions.h" | 28 | #include "lib/pluginlib_actions.h" |
29 | #include "lib/pluginlib_bmp.h" | 29 | #include "lib/pluginlib_bmp.h" |
30 | 30 | ||
31 | PLUGIN_HEADER | 31 | |
32 | 32 | ||
33 | const struct button_mapping *plugin_contexts[] | 33 | const struct button_mapping *plugin_contexts[] |
34 | = {pla_main_ctx}; | 34 | = {pla_main_ctx}; |
diff --git a/apps/plugins/test_sampr.c b/apps/plugins/test_sampr.c index 1f6ee351e1..85525c543b 100644 --- a/apps/plugins/test_sampr.c +++ b/apps/plugins/test_sampr.c | |||
@@ -28,7 +28,7 @@ | |||
28 | * with sample rate. | 28 | * with sample rate. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | PLUGIN_HEADER | 31 | |
32 | PLUGIN_IRAM_DECLARE; | 32 | PLUGIN_IRAM_DECLARE; |
33 | 33 | ||
34 | static int hw_freq IDATA_ATTR = HW_FREQ_DEFAULT; | 34 | static int hw_freq IDATA_ATTR = HW_FREQ_DEFAULT; |
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c index 1aa9febf30..81d8248013 100644 --- a/apps/plugins/test_scanrate.c +++ b/apps/plugins/test_scanrate.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) | 24 | #if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) && !defined(SIMULATOR) |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | #if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == ONDIO_PAD) \ | 28 | #if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == ONDIO_PAD) \ |
29 | || (CONFIG_KEYPAD == IRIVER_H100_PAD) | 29 | || (CONFIG_KEYPAD == IRIVER_H100_PAD) |
diff --git a/apps/plugins/test_touchscreen.c b/apps/plugins/test_touchscreen.c index 902a2bd089..0c9cdc7302 100644 --- a/apps/plugins/test_touchscreen.c +++ b/apps/plugins/test_touchscreen.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | #if (CONFIG_KEYPAD == COWON_D2_PAD) | 25 | #if (CONFIG_KEYPAD == COWON_D2_PAD) |
26 | #define TOUCHSCREEN_QUIT BUTTON_POWER | 26 | #define TOUCHSCREEN_QUIT BUTTON_POWER |
diff --git a/apps/plugins/test_viewports.c b/apps/plugins/test_viewports.c index 08c23a91c8..be61c7792e 100644 --- a/apps/plugins/test_viewports.c +++ b/apps/plugins/test_viewports.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | #ifdef HAVE_LCD_BITMAP | 26 | #ifdef HAVE_LCD_BITMAP |
27 | 27 | ||
diff --git a/apps/plugins/text_editor.c b/apps/plugins/text_editor.c index acd82b8794..ceb71e4495 100644 --- a/apps/plugins/text_editor.c +++ b/apps/plugins/text_editor.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | 23 | ||
24 | #define MAX_LINE_LEN 2048 | 24 | #define MAX_LINE_LEN 2048 |
25 | PLUGIN_HEADER | 25 | |
26 | 26 | ||
27 | static unsigned char *buffer; | 27 | static unsigned char *buffer; |
28 | static size_t buffer_size; | 28 | static size_t buffer_size; |
diff --git a/apps/plugins/text_viewer/text_viewer.c b/apps/plugins/text_viewer/text_viewer.c index eae85213ac..5d06d4b477 100644 --- a/apps/plugins/text_viewer/text_viewer.c +++ b/apps/plugins/text_viewer/text_viewer.c | |||
@@ -21,11 +21,12 @@ | |||
21 | * | 21 | * |
22 | ****************************************************************************/ | 22 | ****************************************************************************/ |
23 | #include "plugin.h" | 23 | #include "plugin.h" |
24 | #include "lib/pluginlib_exit.h" | ||
24 | #include "tv_action.h" | 25 | #include "tv_action.h" |
25 | #include "tv_button.h" | 26 | #include "tv_button.h" |
26 | #include "tv_preferences.h" | 27 | #include "tv_preferences.h" |
27 | 28 | ||
28 | PLUGIN_HEADER | 29 | |
29 | 30 | ||
30 | enum plugin_status plugin_start(const void* file) | 31 | enum plugin_status plugin_start(const void* file) |
31 | { | 32 | { |
@@ -56,6 +57,7 @@ enum plugin_status plugin_start(const void* file) | |||
56 | return PLUGIN_ERROR; | 57 | return PLUGIN_ERROR; |
57 | } | 58 | } |
58 | 59 | ||
60 | atexit(tv_exit); | ||
59 | while (!done) { | 61 | while (!done) { |
60 | #ifdef HAVE_LCD_BITMAP | 62 | #ifdef HAVE_LCD_BITMAP |
61 | if (rb->global_settings->statusbar != STATUSBAR_OFF && preferences->statusbar) | 63 | if (rb->global_settings->statusbar != STATUSBAR_OFF && preferences->statusbar) |
@@ -79,12 +81,12 @@ enum plugin_status plugin_start(const void* file) | |||
79 | 81 | ||
80 | if (res != TV_MENU_RESULT_EXIT_MENU) | 82 | if (res != TV_MENU_RESULT_EXIT_MENU) |
81 | { | 83 | { |
82 | tv_exit(NULL); | ||
83 | done = true; | ||
84 | if (res == TV_MENU_RESULT_ATTACHED_USB) | 84 | if (res == TV_MENU_RESULT_ATTACHED_USB) |
85 | return PLUGIN_USB_CONNECTED; | 85 | return PLUGIN_USB_CONNECTED; |
86 | else if (res == TV_MENU_RESULT_ERROR) | 86 | else if (res == TV_MENU_RESULT_ERROR) |
87 | return PLUGIN_ERROR; | 87 | return PLUGIN_ERROR; |
88 | else | ||
89 | done = true; | ||
88 | } | 90 | } |
89 | } | 91 | } |
90 | break; | 92 | break; |
@@ -195,7 +197,6 @@ enum plugin_status plugin_start(const void* file) | |||
195 | #ifdef TV_QUIT2 | 197 | #ifdef TV_QUIT2 |
196 | case TV_QUIT2: | 198 | case TV_QUIT2: |
197 | #endif | 199 | #endif |
198 | tv_exit(NULL); | ||
199 | done = true; | 200 | done = true; |
200 | break; | 201 | break; |
201 | 202 | ||
@@ -204,9 +205,7 @@ enum plugin_status plugin_start(const void* file) | |||
204 | break; | 205 | break; |
205 | 206 | ||
206 | default: | 207 | default: |
207 | if (rb->default_event_handler_ex(button, tv_exit, NULL) | 208 | exit_on_usb(button); |
208 | == SYS_USB_CONNECTED) | ||
209 | return PLUGIN_USB_CONNECTED; | ||
210 | display_update = false; | 209 | display_update = false; |
211 | break; | 210 | break; |
212 | } | 211 | } |
diff --git a/apps/plugins/text_viewer/tv_action.c b/apps/plugins/text_viewer/tv_action.c index c95ece0649..1e5473b438 100644 --- a/apps/plugins/text_viewer/tv_action.c +++ b/apps/plugins/text_viewer/tv_action.c | |||
@@ -47,10 +47,8 @@ static void tv_finalize_action(void) | |||
47 | tv_finalize_window(); | 47 | tv_finalize_window(); |
48 | } | 48 | } |
49 | 49 | ||
50 | void tv_exit(void *parameter) | 50 | void tv_exit(void) |
51 | { | 51 | { |
52 | (void)parameter; | ||
53 | |||
54 | /* save preference and bookmarks */ | 52 | /* save preference and bookmarks */ |
55 | if (!tv_save_settings()) | 53 | if (!tv_save_settings()) |
56 | rb->splash(HZ, "Can't save preferences and bookmarks"); | 54 | rb->splash(HZ, "Can't save preferences and bookmarks"); |
diff --git a/apps/plugins/text_viewer/tv_action.h b/apps/plugins/text_viewer/tv_action.h index fba008dbe9..5b3571db30 100644 --- a/apps/plugins/text_viewer/tv_action.h +++ b/apps/plugins/text_viewer/tv_action.h | |||
@@ -58,11 +58,8 @@ bool tv_init_action(unsigned char **buf, size_t *bufsize); | |||
58 | 58 | ||
59 | /* | 59 | /* |
60 | * finalize modules | 60 | * finalize modules |
61 | * | ||
62 | * [In] parameter | ||
63 | * this argument does not use | ||
64 | */ | 61 | */ |
65 | void tv_exit(void *parameter); | 62 | void tv_exit(void); |
66 | 63 | ||
67 | /* | 64 | /* |
68 | * load the file | 65 | * load the file |
diff --git a/apps/plugins/theme_remove.c b/apps/plugins/theme_remove.c index f818ac4afe..d679338ff8 100644 --- a/apps/plugins/theme_remove.c +++ b/apps/plugins/theme_remove.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include "plugin.h" | 20 | #include "plugin.h" |
21 | #include "lib/configfile.h" | 21 | #include "lib/configfile.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | /* taken from apps/gui/wps_parser.c */ | 25 | /* taken from apps/gui/wps_parser.c */ |
26 | #define WPS_DEFAULTCFG WPS_DIR "/rockbox_default.wps" | 26 | #define WPS_DEFAULTCFG WPS_DIR "/rockbox_default.wps" |
diff --git a/apps/plugins/vbrfix.c b/apps/plugins/vbrfix.c index ba13dc53f9..71c502bc67 100644 --- a/apps/plugins/vbrfix.c +++ b/apps/plugins/vbrfix.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | static char *audiobuf; | 25 | static char *audiobuf; |
26 | static size_t audiobuflen; | 26 | static size_t audiobuflen; |
diff --git a/apps/plugins/video.c b/apps/plugins/video.c index 6b0a47c7c6..869a053886 100644 --- a/apps/plugins/video.c +++ b/apps/plugins/video.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | #ifdef HAVE_LCD_BITMAP /* and definitely not for the Player, haha */ | 34 | #ifdef HAVE_LCD_BITMAP /* and definitely not for the Player, haha */ |
35 | 35 | ||
36 | PLUGIN_HEADER | 36 | |
37 | 37 | ||
38 | /* variable button definitions */ | 38 | /* variable button definitions */ |
39 | #if CONFIG_KEYPAD == RECORDER_PAD | 39 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c index fc04bc7842..6dc69d1d4e 100644 --- a/apps/plugins/vu_meter.c +++ b/apps/plugins/vu_meter.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "lib/fixedpoint.h" | 21 | #include "lib/fixedpoint.h" |
22 | #include "lib/playback_control.h" | 22 | #include "lib/playback_control.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if CONFIG_KEYPAD == RECORDER_PAD |
diff --git a/apps/plugins/wav2wv.c b/apps/plugins/wav2wv.c index 3211203db9..98b4c0fe4f 100644 --- a/apps/plugins/wav2wv.c +++ b/apps/plugins/wav2wv.c | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #include <codecs/libwavpack/wavpack.h> | 26 | #include <codecs/libwavpack/wavpack.h> |
27 | 27 | ||
28 | PLUGIN_HEADER | 28 | |
29 | 29 | ||
30 | #define SAMPLES_PER_BLOCK 22050 | 30 | #define SAMPLES_PER_BLOCK 22050 |
31 | 31 | ||
diff --git a/apps/plugins/wavplay.c b/apps/plugins/wavplay.c index 94fef9faa0..cbd4dfbeda 100644 --- a/apps/plugins/wavplay.c +++ b/apps/plugins/wavplay.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | /************ Start of MAS pcm codec, raw i2c blocks ************/ | 25 | /************ Start of MAS pcm codec, raw i2c blocks ************/ |
26 | 26 | ||
diff --git a/apps/plugins/wavrecord.c b/apps/plugins/wavrecord.c index 83b63e9805..375642ec4b 100644 --- a/apps/plugins/wavrecord.c +++ b/apps/plugins/wavrecord.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | #include "lib/configfile.h" | 22 | #include "lib/configfile.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /************ Start of MAS pcm codec, raw i2c blocks ************/ | 26 | /************ Start of MAS pcm codec, raw i2c blocks ************/ |
27 | 27 | ||
diff --git a/apps/plugins/wavview.c b/apps/plugins/wavview.c index 2b19d3d18a..ddf72e10af 100644 --- a/apps/plugins/wavview.c +++ b/apps/plugins/wavview.c | |||
@@ -20,7 +20,7 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | PLUGIN_HEADER | 23 | |
24 | 24 | ||
25 | /* temp byte buffer */ | 25 | /* temp byte buffer */ |
26 | uint8_t samples[10 * 1024]; /* read 10KB at the time */ | 26 | uint8_t samples[10 * 1024]; /* read 10KB at the time */ |
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c index 037f4005a2..191c995ad6 100644 --- a/apps/plugins/wormlet.c +++ b/apps/plugins/wormlet.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "lib/helper.h" | 23 | #include "lib/helper.h" |
24 | #include "lib/playback_control.h" | 24 | #include "lib/playback_control.h" |
25 | 25 | ||
26 | PLUGIN_HEADER | 26 | |
27 | 27 | ||
28 | /* size of the field the worm lives in */ | 28 | /* size of the field the worm lives in */ |
29 | #define FIELD_RECT_X 1 | 29 | #define FIELD_RECT_X 1 |
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c index 4dd673c370..871cb2bdf5 100644 --- a/apps/plugins/xobox.c +++ b/apps/plugins/xobox.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "lib/helper.h" | 24 | #include "lib/helper.h" |
25 | #include "lib/playback_control.h" | 25 | #include "lib/playback_control.h" |
26 | 26 | ||
27 | PLUGIN_HEADER | 27 | |
28 | 28 | ||
29 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | 29 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
30 | 30 | ||
diff --git a/apps/plugins/zxbox.c b/apps/plugins/zxbox.c index 94f7807bad..08e07d582a 100644 --- a/apps/plugins/zxbox.c +++ b/apps/plugins/zxbox.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "lib/overlay.h" | 22 | #include "lib/overlay.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | 25 | ||
26 | /* this is the plugin entry point */ | 26 | /* this is the plugin entry point */ |
27 | enum plugin_status plugin_start(const void* parameter) | 27 | enum plugin_status plugin_start(const void* parameter) |
diff --git a/apps/plugins/zxbox/zxbox.c b/apps/plugins/zxbox/zxbox.c index f33b51b9f6..459e0625b9 100644 --- a/apps/plugins/zxbox/zxbox.c +++ b/apps/plugins/zxbox/zxbox.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "zxconfig.h" | 22 | #include "zxconfig.h" |
23 | 23 | ||
24 | PLUGIN_HEADER | 24 | |
25 | PLUGIN_IRAM_DECLARE | 25 | PLUGIN_IRAM_DECLARE |
26 | 26 | ||
27 | #include "spkey_p.h" | 27 | #include "spkey_p.h" |