summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/action.c27
-rw-r--r--apps/action.h4
-rw-r--r--apps/alarm_menu.c1
-rw-r--r--apps/bookmark.c5
-rw-r--r--apps/cuesheet.c1
-rw-r--r--apps/debug_menu.c10
-rw-r--r--apps/gui/color_picker.c1
-rw-r--r--apps/gui/gwps-common.c1
-rw-r--r--apps/gui/gwps.c6
-rw-r--r--apps/gui/option_select.c2
-rw-r--r--apps/gui/quickscreen.c2
-rw-r--r--apps/gui/yesno.c2
-rw-r--r--apps/menu.c5
-rw-r--r--apps/menus/eq_menu.c1
-rw-r--r--apps/menus/main_menu.c5
-rw-r--r--apps/menus/recording_menu.c1
-rw-r--r--apps/playlist_catalog.c1
-rw-r--r--apps/playlist_viewer.c3
-rw-r--r--apps/plugin.c3
-rw-r--r--apps/plugin.h5
-rw-r--r--apps/plugins/lib/oldmenuapi.c3
-rw-r--r--apps/plugins/properties.c1
-rw-r--r--apps/recorder/keyboard.c3
-rw-r--r--apps/recorder/radio.c5
-rw-r--r--apps/root_menu.c1
-rw-r--r--apps/screens.c9
-rw-r--r--apps/tree.c2
27 files changed, 12 insertions, 98 deletions
diff --git a/apps/action.c b/apps/action.c
index d9f04a8c89..826f376dcd 100644
--- a/apps/action.c
+++ b/apps/action.c
@@ -29,8 +29,8 @@
29#include "debug.h" 29#include "debug.h"
30#include "splash.h" 30#include "splash.h"
31 31
32static bool ignore_until_release = false; 32static int last_button = BUTTON_NONE|BUTTON_REL; /* allow the ipod wheel to
33static int last_button = BUTTON_NONE; 33 work on startup */
34static int last_action = ACTION_NONE; 34static int last_action = ACTION_NONE;
35static bool repeated = false; 35static bool repeated = false;
36 36
@@ -104,6 +104,7 @@ static int get_action_worker(int context, int timeout,
104 int button; 104 int button;
105 int i=0; 105 int i=0;
106 int ret = ACTION_UNKNOWN; 106 int ret = ACTION_UNKNOWN;
107 static int last_context = CONTEXT_STD;
107 108
108 if (timeout == TIMEOUT_NOBLOCK) 109 if (timeout == TIMEOUT_NOBLOCK)
109 button = button_get(false); 110 button = button_get(false);
@@ -117,14 +118,18 @@ static int get_action_worker(int context, int timeout,
117 return button; 118 return button;
118 } 119 }
119 120
120 if (ignore_until_release == true) 121 if ((context != last_context) && ((last_button&BUTTON_REL) == 0))
121 { 122 {
122 if (button&BUTTON_REL) 123 if (button&BUTTON_REL)
123 { 124 {
124 ignore_until_release = false; 125 last_button = button;
126 last_action = ACTION_NONE;
125 } 127 }
128 /* eat all buttons until the previous button was |BUTTON_REL
129 (also eat the |BUTTON_REL button) */
126 return ACTION_NONE; /* "safest" return value */ 130 return ACTION_NONE; /* "safest" return value */
127 } 131 }
132 last_context = context;
128 133
129#ifndef HAS_BUTTON_HOLD 134#ifndef HAS_BUTTON_HOLD
130 screen_has_lock = ((context&ALLOW_SOFTLOCK)==ALLOW_SOFTLOCK); 135 screen_has_lock = ((context&ALLOW_SOFTLOCK)==ALLOW_SOFTLOCK);
@@ -182,7 +187,6 @@ static int get_action_worker(int context, int timeout,
182 { 187 {
183 unlock_combo = button; 188 unlock_combo = button;
184 keys_locked = true; 189 keys_locked = true;
185 action_signalscreenchange();
186 gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON_PLAYER)); 190 gui_syncsplash(HZ/2, str(LANG_KEYLOCK_ON_PLAYER));
187 191
188 button_clear_queue(); 192 button_clear_queue();
@@ -214,22 +218,11 @@ int get_custom_action(int context,int timeout,
214 218
215bool action_userabort(int timeout) 219bool action_userabort(int timeout)
216{ 220{
217 action_signalscreenchange();
218 int action = get_action_worker(CONTEXT_STD,timeout,NULL); 221 int action = get_action_worker(CONTEXT_STD,timeout,NULL);
219 bool ret = (action == ACTION_STD_CANCEL); 222 bool ret = (action == ACTION_STD_CANCEL);
220 action_signalscreenchange();
221 return ret; 223 return ret;
222} 224}
223 225
224void action_signalscreenchange(void)
225{
226 if ((last_button != BUTTON_NONE) &&
227 !(last_button&BUTTON_REL))
228 {
229 ignore_until_release = true;
230 }
231 last_button = BUTTON_NONE;
232}
233#ifndef HAS_BUTTON_HOLD 226#ifndef HAS_BUTTON_HOLD
234bool is_keys_locked(void) 227bool is_keys_locked(void)
235{ 228{
@@ -247,7 +240,5 @@ int get_action_statuscode(int *button)
247 ret |= ACTION_REMOTE; 240 ret |= ACTION_REMOTE;
248 if (repeated) 241 if (repeated)
249 ret |= ACTION_REPEAT; 242 ret |= ACTION_REPEAT;
250 if (ignore_until_release)
251 ret |= ACTION_IGNORING;
252 return ret; 243 return ret;
253} 244}
diff --git a/apps/action.h b/apps/action.h
index bd66fcf6f9..7acaf9c005 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -237,8 +237,6 @@ int get_custom_action(int context,int timeout,
237 const struct button_mapping* (*get_context_map)(int)); 237 const struct button_mapping* (*get_context_map)(int));
238/* use if one of the standard CONTEXT_ mappings will work (ALL the core should be using this! */ 238/* use if one of the standard CONTEXT_ mappings will work (ALL the core should be using this! */
239int get_action(int context, int timeout); 239int get_action(int context, int timeout);
240/* call this whenever you leave your button loop */
241void action_signalscreenchange(void);
242 240
243/* call this if you need to check for ACTION_STD_CANCEL only (i.e user abort! */ 241/* call this if you need to check for ACTION_STD_CANCEL only (i.e user abort! */
244bool action_userabort(int timeout); 242bool action_userabort(int timeout);
@@ -253,8 +251,6 @@ bool is_keys_locked(void);
253 If button != NULL it will be set to the actual button code */ 251 If button != NULL it will be set to the actual button code */
254#define ACTION_REMOTE 0x1 /* remote was pressed */ 252#define ACTION_REMOTE 0x1 /* remote was pressed */
255#define ACTION_REPEAT 0x2 /* action was repeated (NOT button) */ 253#define ACTION_REPEAT 0x2 /* action was repeated (NOT button) */
256#define ACTION_IGNORING 0x4 /* action_signalscreenchange() was called \
257 waiting for BUTTON_REL */
258int get_action_statuscode(int *button); 254int get_action_statuscode(int *button);
259 255
260 256
diff --git a/apps/alarm_menu.c b/apps/alarm_menu.c
index 83ca65304b..40b817df57 100644
--- a/apps/alarm_menu.c
+++ b/apps/alarm_menu.c
@@ -159,7 +159,6 @@ bool alarm_screen(void)
159 break; 159 break;
160 } 160 }
161 } 161 }
162 action_signalscreenchange();
163 return false; 162 return false;
164} 163}
165 164
diff --git a/apps/bookmark.c b/apps/bookmark.c
index f36545fe39..2f4f696dd9 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -406,7 +406,6 @@ bool bookmark_autoload(const char* file)
406 return bookmark_load(global_bookmark_file_name, true); 406 return bookmark_load(global_bookmark_file_name, true);
407 } 407 }
408 408
409 action_signalscreenchange();
410 return false; 409 return false;
411 } 410 }
412} 411}
@@ -622,7 +621,6 @@ static char* select_bookmark(const char* bookmark_file_name, bool show_dont_resu
622 gui_synclist_set_title(&list, str(LANG_BOOKMARK_SELECT_BOOKMARK), 621 gui_synclist_set_title(&list, str(LANG_BOOKMARK_SELECT_BOOKMARK),
623 Icon_Bookmark); 622 Icon_Bookmark);
624 gui_syncstatusbar_draw(&statusbars, true); 623 gui_syncstatusbar_draw(&statusbars, true);
625 action_signalscreenchange();
626 624
627 while (!exit) 625 while (!exit)
628 { 626 {
@@ -638,7 +636,6 @@ static char* select_bookmark(const char* bookmark_file_name, bool show_dont_resu
638 /* No more bookmarks, delete file and exit */ 636 /* No more bookmarks, delete file and exit */
639 gui_syncsplash(HZ, str(LANG_BOOKMARK_LOAD_EMPTY)); 637 gui_syncsplash(HZ, str(LANG_BOOKMARK_LOAD_EMPTY));
640 remove(bookmark_file_name); 638 remove(bookmark_file_name);
641 action_signalscreenchange();
642 return NULL; 639 return NULL;
643 } 640 }
644 641
@@ -710,7 +707,6 @@ static char* select_bookmark(const char* bookmark_file_name, bool show_dont_resu
710 case ACTION_STD_OK: 707 case ACTION_STD_OK:
711 if (item >= 0) 708 if (item >= 0)
712 { 709 {
713 action_signalscreenchange();
714 return bookmarks->items[item - bookmarks->start]; 710 return bookmarks->items[item - bookmarks->start];
715 } 711 }
716 712
@@ -741,7 +737,6 @@ static char* select_bookmark(const char* bookmark_file_name, bool show_dont_resu
741 } 737 }
742 } 738 }
743 739
744 action_signalscreenchange();
745 return NULL; 740 return NULL;
746} 741}
747 742
diff --git a/apps/cuesheet.c b/apps/cuesheet.c
index 320356c62c..5a298824ac 100644
--- a/apps/cuesheet.c
+++ b/apps/cuesheet.c
@@ -316,7 +316,6 @@ void browse_cuesheet(struct cuesheet *cue)
316 done = true; 316 done = true;
317 } 317 }
318 } 318 }
319 action_signalscreenchange();
320} 319}
321 320
322bool display_cuesheet_content(char* filename) 321bool display_cuesheet_content(char* filename)
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 64d22b41bd..38ba27f0bb 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -152,7 +152,6 @@ static bool dbg_list(struct action_callback_info *info)
152 gui_synclist_set_nb_items(&lists, info->count*info->selection_size); 152 gui_synclist_set_nb_items(&lists, info->count*info->selection_size);
153 if (info->dbg_getname != dbg_menu_getname) 153 if (info->dbg_getname != dbg_menu_getname)
154 gui_synclist_hide_selection_marker(&lists, true); 154 gui_synclist_hide_selection_marker(&lists, true);
155 action_signalscreenchange();
156 155
157 if (info->action_callback) 156 if (info->action_callback)
158 info->action_callback(ACTION_REDRAW, info); 157 info->action_callback(ACTION_REDRAW, info);
@@ -174,7 +173,6 @@ static bool dbg_list(struct action_callback_info *info)
174 else if(default_event_handler(action) == SYS_USB_CONNECTED) 173 else if(default_event_handler(action) == SYS_USB_CONNECTED)
175 return true; 174 return true;
176 } 175 }
177 action_signalscreenchange();
178 return false; 176 return false;
179} 177}
180/*---------------------------------------------------*/ 178/*---------------------------------------------------*/
@@ -402,7 +400,6 @@ static bool dbg_audio_thread(void)
402 400
403 tick_remove_task(dbg_audio_task); 401 tick_remove_task(dbg_audio_task);
404 402
405 action_signalscreenchange();
406 return false; 403 return false;
407} 404}
408#endif /* CONFIG_CODEC */ 405#endif /* CONFIG_CODEC */
@@ -734,7 +731,6 @@ static bool dbg_hw_info(void)
734 switch(button) 731 switch(button)
735 { 732 {
736 case ACTION_STD_CANCEL: 733 case ACTION_STD_CANCEL:
737 action_signalscreenchange();
738 return false; 734 return false;
739 735
740 case ACTION_SETTINGS_DEC: 736 case ACTION_SETTINGS_DEC:
@@ -1392,7 +1388,6 @@ bool dbg_ports(void)
1392 switch(button) 1388 switch(button)
1393 { 1389 {
1394 case ACTION_STD_CANCEL: 1390 case ACTION_STD_CANCEL:
1395 action_signalscreenchange();
1396 return false; 1391 return false;
1397 1392
1398 case ACTION_SETTINGS_DEC: 1393 case ACTION_SETTINGS_DEC:
@@ -1456,7 +1451,6 @@ static bool dbg_cpufreq(void)
1456 break; 1451 break;
1457 1452
1458 case ACTION_STD_CANCEL: 1453 case ACTION_STD_CANCEL:
1459 action_signalscreenchange();
1460 return false; 1454 return false;
1461 } 1455 }
1462 } 1456 }
@@ -1651,7 +1645,6 @@ static bool view_battery(void)
1651 break; 1645 break;
1652 1646
1653 case ACTION_STD_CANCEL: 1647 case ACTION_STD_CANCEL:
1654 action_signalscreenchange();
1655 return false; 1648 return false;
1656 } 1649 }
1657 } 1650 }
@@ -2136,7 +2129,6 @@ static bool dbg_lcd_power_off(void)
2136 break; 2129 break;
2137 case ACTION_STD_OK: 2130 case ACTION_STD_OK:
2138 case ACTION_STD_CANCEL: 2131 case ACTION_STD_CANCEL:
2139 action_signalscreenchange();
2140 return false; 2132 return false;
2141 default: 2133 default:
2142 sleep(HZ/10); 2134 sleep(HZ/10);
@@ -2214,7 +2206,6 @@ static bool cpu_boost_log(void)
2214 } 2206 }
2215 lcd_update(); 2207 lcd_update();
2216 done = false; 2208 done = false;
2217 action_signalscreenchange();
2218 while (!done) 2209 while (!done)
2219 { 2210 {
2220 switch(get_action(CONTEXT_STD,TIMEOUT_BLOCK)) 2211 switch(get_action(CONTEXT_STD,TIMEOUT_BLOCK))
@@ -2233,7 +2224,6 @@ static bool cpu_boost_log(void)
2233 } 2224 }
2234 get_action(CONTEXT_STD,TIMEOUT_BLOCK); 2225 get_action(CONTEXT_STD,TIMEOUT_BLOCK);
2235 lcd_setfont(FONT_UI); 2226 lcd_setfont(FONT_UI);
2236 action_signalscreenchange();
2237 return false; 2227 return false;
2238} 2228}
2239#endif 2229#endif
diff --git a/apps/gui/color_picker.c b/apps/gui/color_picker.c
index 392ae54153..1116aaae23 100644
--- a/apps/gui/color_picker.c
+++ b/apps/gui/color_picker.c
@@ -408,6 +408,5 @@ bool set_color(struct screen *display, char *title, unsigned *color,
408 } 408 }
409 } 409 }
410 410
411 action_signalscreenchange();
412 return false; 411 return false;
413} 412}
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index 4032d8b861..91f60d7d14 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -282,7 +282,6 @@ bool ffwd_rew(int button)
282 if (!exit) 282 if (!exit)
283 button = get_action(CONTEXT_WPS,TIMEOUT_BLOCK); 283 button = get_action(CONTEXT_WPS,TIMEOUT_BLOCK);
284 } 284 }
285 action_signalscreenchange();
286 return usb; 285 return usb;
287} 286}
288 287
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index d726daef3f..714dfe8ee9 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -101,8 +101,6 @@ long gui_wps_show(void)
101 bool update_track = false; 101 bool update_track = false;
102 int i; 102 int i;
103 long last_left = 0, last_right = 0; 103 long last_left = 0, last_right = 0;
104
105 action_signalscreenchange();
106 104
107 wps_state_init(); 105 wps_state_init();
108 106
@@ -242,7 +240,6 @@ long gui_wps_show(void)
242#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 240#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
243 show_remote_main_backdrop(); 241 show_remote_main_backdrop();
244#endif 242#endif
245 action_signalscreenchange();
246 if (onplay(wps_state.id3->path, FILE_ATTR_AUDIO, CONTEXT_WPS) 243 if (onplay(wps_state.id3->path, FILE_ATTR_AUDIO, CONTEXT_WPS)
247 == ONPLAY_MAINMENU) 244 == ONPLAY_MAINMENU)
248 return GO_TO_ROOT; 245 return GO_TO_ROOT;
@@ -268,7 +265,6 @@ long gui_wps_show(void)
268#endif 265#endif
269 FOR_NB_SCREENS(i) 266 FOR_NB_SCREENS(i)
270 gui_wps[i].display->stop_scroll(); 267 gui_wps[i].display->stop_scroll();
271 action_signalscreenchange();
272 return GO_TO_PREVIOUS_BROWSER; 268 return GO_TO_PREVIOUS_BROWSER;
273 break; 269 break;
274 270
@@ -562,7 +558,6 @@ long gui_wps_show(void)
562#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 558#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
563 show_remote_main_backdrop(); 559 show_remote_main_backdrop();
564#endif 560#endif
565 action_signalscreenchange();
566 if (1 == pitch_screen()) 561 if (1 == pitch_screen())
567 return SYS_USB_CONNECTED; 562 return SYS_USB_CONNECTED;
568#if LCD_DEPTH > 1 563#if LCD_DEPTH > 1
@@ -668,7 +663,6 @@ long gui_wps_show(void)
668 } 663 }
669 664
670 if (exit) { 665 if (exit) {
671 action_signalscreenchange();
672#ifdef HAVE_LCD_CHARCELLS 666#ifdef HAVE_LCD_CHARCELLS
673 status_set_record(false); 667 status_set_record(false);
674 status_set_audio(false); 668 status_set_audio(false);
diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c
index d104a6461d..11352fdee2 100644
--- a/apps/gui/option_select.c
+++ b/apps/gui/option_select.c
@@ -364,7 +364,6 @@ bool option_screen(struct settings_list *setting, bool use_temp_var)
364 364
365 gui_synclist_limit_scroll(&lists, true); 365 gui_synclist_limit_scroll(&lists, true);
366 gui_synclist_draw(&lists); 366 gui_synclist_draw(&lists);
367 action_signalscreenchange();
368 /* talk the item */ 367 /* talk the item */
369 option_talk(setting, *variable); 368 option_talk(setting, *variable);
370 while (!done) 369 while (!done)
@@ -436,7 +435,6 @@ bool option_screen(struct settings_list *setting, bool use_temp_var)
436 settings_save(); 435 settings_save();
437 } 436 }
438 437
439 action_signalscreenchange();
440 return false; 438 return false;
441} 439}
442 440
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index 310d48041f..008c6fa721 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -172,7 +172,6 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
172 bool can_quit=false; 172 bool can_quit=false;
173 gui_syncquickscreen_draw(qs); 173 gui_syncquickscreen_draw(qs);
174 gui_syncstatusbar_draw(&statusbars, true); 174 gui_syncstatusbar_draw(&statusbars, true);
175 action_signalscreenchange();
176 while (true) { 175 while (true) {
177 button = get_action(CONTEXT_QUICKSCREEN,TIMEOUT_BLOCK); 176 button = get_action(CONTEXT_QUICKSCREEN,TIMEOUT_BLOCK);
178 if(default_event_handler(button) == SYS_USB_CONNECTED) 177 if(default_event_handler(button) == SYS_USB_CONNECTED)
@@ -195,7 +194,6 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
195 194
196 gui_syncstatusbar_draw(&statusbars, false); 195 gui_syncstatusbar_draw(&statusbars, false);
197 } 196 }
198 action_signalscreenchange();
199 return false; 197 return false;
200} 198}
201 199
diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c
index 381d6d8c21..4f874df325 100644
--- a/apps/gui/yesno.c
+++ b/apps/gui/yesno.c
@@ -111,7 +111,6 @@ enum yesno_res gui_syncyesno_run(struct text_message * main_message,
111 gui_yesno_set_display(&(yn[i]), &(screens[i])); 111 gui_yesno_set_display(&(yn[i]), &(screens[i]));
112 gui_yesno_draw(&(yn[i])); 112 gui_yesno_draw(&(yn[i]));
113 } 113 }
114 action_signalscreenchange();
115 while (result==-1) 114 while (result==-1)
116 { 115 {
117 button = get_action(CONTEXT_YESNOSCREEN,TIMEOUT_BLOCK); 116 button = get_action(CONTEXT_YESNOSCREEN,TIMEOUT_BLOCK);
@@ -130,7 +129,6 @@ enum yesno_res gui_syncyesno_run(struct text_message * main_message,
130 result = YESNO_NO; 129 result = YESNO_NO;
131 } 130 }
132 } 131 }
133 action_signalscreenchange();
134 FOR_NB_SCREENS(i) 132 FOR_NB_SCREENS(i)
135 result_displayed=gui_yesno_draw_result(&(yn[i]), result); 133 result_displayed=gui_yesno_draw_result(&(yn[i]), result);
136 if(result_displayed) 134 if(result_displayed)
diff --git a/apps/menu.c b/apps/menu.c
index 17fff25afb..a9bc0d4d69 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -297,8 +297,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
297 297
298 talk_menu_item(menu, &lists); 298 talk_menu_item(menu, &lists);
299 299
300 action_signalscreenchange();
301
302 /* load the callback, and only reload it if menu changes */ 300 /* load the callback, and only reload it if menu changes */
303 get_menu_callback(menu, &menu_callback); 301 get_menu_callback(menu, &menu_callback);
304 gui_synclist_draw(&lists); 302 gui_synclist_draw(&lists);
@@ -428,7 +426,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
428 { 426 {
429 int return_value; 427 int return_value;
430 talk_item = true; 428 talk_item = true;
431 action_signalscreenchange();
432 if (temp->flags&MENU_FUNC_USEPARAM) 429 if (temp->flags&MENU_FUNC_USEPARAM)
433 return_value = temp->function->function_w_param( 430 return_value = temp->function->function_w_param(
434 temp->function->param); 431 temp->function->param);
@@ -458,7 +455,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
458 case MT_RETURN_ID: 455 case MT_RETURN_ID:
459 if (in_stringlist) 456 if (in_stringlist)
460 { 457 {
461 action_signalscreenchange();
462 done = true; 458 done = true;
463 ret = selected; 459 ret = selected;
464 } 460 }
@@ -510,7 +506,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
510 if (redraw_lists) 506 if (redraw_lists)
511 gui_synclist_draw(&lists); 507 gui_synclist_draw(&lists);
512 } 508 }
513 action_signalscreenchange();
514 if (start_selected) 509 if (start_selected)
515 { 510 {
516 /* make sure the start_selected variable is set to 511 /* make sure the start_selected variable is set to
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index 58d86782b0..3248f10f0e 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -566,7 +566,6 @@ bool eq_menu_graphical(void)
566 } 566 }
567 } 567 }
568 568
569 action_signalscreenchange();
570 /* Reset screen settings */ 569 /* Reset screen settings */
571 FOR_NB_SCREENS(i) { 570 FOR_NB_SCREENS(i) {
572 screens[i].setfont(FONT_UI); 571 screens[i].setfont(FONT_UI);
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index 061c5c215e..7891a5c8a8 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -119,10 +119,8 @@ static bool show_credits(void)
119 if (plugin_load(PLUGIN_DIR "/credits.rock",NULL) != PLUGIN_OK) 119 if (plugin_load(PLUGIN_DIR "/credits.rock",NULL) != PLUGIN_OK)
120 { 120 {
121 /* show the rockbox logo and version untill a button is pressed */ 121 /* show the rockbox logo and version untill a button is pressed */
122 action_signalscreenchange();
123 show_logo(); 122 show_logo();
124 get_action(CONTEXT_STD, TIMEOUT_BLOCK); 123 get_action(CONTEXT_STD, TIMEOUT_BLOCK);
125 action_signalscreenchange();
126 } 124 }
127 return false; 125 return false;
128} 126}
@@ -178,7 +176,7 @@ static bool show_info(void)
178#endif 176#endif
179 177
180 if (talk_menus_enabled()) 178 if (talk_menus_enabled())
181 { 179 {
182 /* say whatever is reasonable, no real connection to the screen */ 180 /* say whatever is reasonable, no real connection to the screen */
183 bool enqueue = false; /* enqueue all but the first */ 181 bool enqueue = false; /* enqueue all but the first */
184 if (battery_level() >= 0) 182 if (battery_level() >= 0)
@@ -359,7 +357,6 @@ static bool show_info(void)
359 break; 357 break;
360 } 358 }
361 } 359 }
362 action_signalscreenchange();
363 return false; 360 return false;
364} 361}
365MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_INFO_MENU), 362MENUITEM_FUNCTION(show_info_item, 0, ID2P(LANG_INFO_MENU),
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 7c6d91e61d..3fdaa02f3d 100644
--- a/apps/menus/recording_menu.c
+++ b/apps/menus/recording_menu.c
@@ -791,7 +791,6 @@ bool rectrigger(void)
791 screens[i].setfont(FONT_UI); 791 screens[i].setfont(FONT_UI);
792 screens[i].setmargins(old_x_margin[i], old_y_margin[i]); 792 screens[i].setmargins(old_x_margin[i], old_y_margin[i]);
793 } 793 }
794 action_signalscreenchange();
795 return retval; 794 return retval;
796} 795}
797 796
diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c
index 5ff2bddaab..353bd61173 100644
--- a/apps/playlist_catalog.c
+++ b/apps/playlist_catalog.c
@@ -312,7 +312,6 @@ static int display_playlists(char* playlist, bool view)
312 break; 312 break;
313 } 313 }
314 } 314 }
315 action_signalscreenchange();
316 return result; 315 return result;
317} 316}
318 317
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index e6aa75701d..5f2eeaf7b8 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -571,7 +571,6 @@ bool playlist_viewer_ex(char* filename)
571 gui_synclist_select_item(&playlist_lists, viewer.selected_track); 571 gui_synclist_select_item(&playlist_lists, viewer.selected_track);
572 gui_synclist_set_title(&playlist_lists, str(LANG_PLAYLIST_MENU), Icon_Playlist); 572 gui_synclist_set_title(&playlist_lists, str(LANG_PLAYLIST_MENU), Icon_Playlist);
573 gui_synclist_draw(&playlist_lists); 573 gui_synclist_draw(&playlist_lists);
574 action_signalscreenchange();
575 while (!exit) 574 while (!exit)
576 { 575 {
577 int track; 576 int track;
@@ -719,7 +718,6 @@ bool playlist_viewer_ex(char* filename)
719exit: 718exit:
720 if (viewer.playlist) 719 if (viewer.playlist)
721 playlist_close(viewer.playlist); 720 playlist_close(viewer.playlist);
722 action_signalscreenchange();
723 return ret; 721 return ret;
724} 722}
725 723
@@ -804,7 +802,6 @@ bool search_playlist(void)
804 break; 802 break;
805 } 803 }
806 } 804 }
807 action_signalscreenchange();
808 return ret; 805 return ret;
809} 806}
810 807
diff --git a/apps/plugin.c b/apps/plugin.c
index 68b430d2f3..f61e799186 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -411,7 +411,6 @@ static const struct plugin_api rockbox_api = {
411 /* action handling */ 411 /* action handling */
412 get_custom_action, 412 get_custom_action,
413 get_action, 413 get_action,
414 action_signalscreenchange,
415 action_userabort, 414 action_userabort,
416 415
417 /* power */ 416 /* power */
@@ -515,7 +514,6 @@ int plugin_load(const char* plugin, void* parameter)
515 514
516 if (!p) 515 if (!p)
517 p = plugin; 516 p = plugin;
518 action_signalscreenchange();
519 517
520 if (pfn_tsr_exit != NULL) /* if we have a resident old plugin: */ 518 if (pfn_tsr_exit != NULL) /* if we have a resident old plugin: */
521 { 519 {
@@ -611,7 +609,6 @@ int plugin_load(const char* plugin, void* parameter)
611 rc = hdr->entry_point((struct plugin_api*) &rockbox_api, parameter); 609 rc = hdr->entry_point((struct plugin_api*) &rockbox_api, parameter);
612 /* explicitly casting the pointer here to avoid touching every plugin. */ 610 /* explicitly casting the pointer here to avoid touching every plugin. */
613 611
614 action_signalscreenchange();
615 button_clear_queue(); 612 button_clear_queue();
616 613
617#ifdef HAVE_LCD_BITMAP 614#ifdef HAVE_LCD_BITMAP
diff --git a/apps/plugin.h b/apps/plugin.h
index ac6988152a..db520c3b68 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -112,12 +112,12 @@
112#define PLUGIN_MAGIC 0x526F634B /* RocK */ 112#define PLUGIN_MAGIC 0x526F634B /* RocK */
113 113
114/* increase this every time the api struct changes */ 114/* increase this every time the api struct changes */
115#define PLUGIN_API_VERSION 63 115#define PLUGIN_API_VERSION 64
116 116
117/* update this to latest version if a change to the api struct breaks 117/* update this to latest version if a change to the api struct breaks
118 backwards compatibility (and please take the opportunity to sort in any 118 backwards compatibility (and please take the opportunity to sort in any
119 new function which are "waiting" at the end of the function table) */ 119 new function which are "waiting" at the end of the function table) */
120#define PLUGIN_MIN_API_VERSION 63 120#define PLUGIN_MIN_API_VERSION 64
121 121
122/* plugin return codes */ 122/* plugin return codes */
123enum plugin_status { 123enum plugin_status {
@@ -520,7 +520,6 @@ struct plugin_api {
520 int (*get_custom_action)(int context,int timeout, 520 int (*get_custom_action)(int context,int timeout,
521 const struct button_mapping* (*get_context_map)(int)); 521 const struct button_mapping* (*get_context_map)(int));
522 int (*get_action)(int context, int timeout); 522 int (*get_action)(int context, int timeout);
523 void (*action_signalscreenchange)(void);
524 bool (*action_userabort)(int timeout); 523 bool (*action_userabort)(int timeout);
525 524
526 /* power */ 525 /* power */
diff --git a/apps/plugins/lib/oldmenuapi.c b/apps/plugins/lib/oldmenuapi.c
index e804a64d62..dbe151daf9 100644
--- a/apps/plugins/lib/oldmenuapi.c
+++ b/apps/plugins/lib/oldmenuapi.c
@@ -95,7 +95,6 @@ int menu_show(int m)
95 int key; 95 int key;
96 96
97 rb->gui_synclist_draw(&(menus[m].synclist)); 97 rb->gui_synclist_draw(&(menus[m].synclist));
98 rb->action_signalscreenchange();
99 rb->gui_syncstatusbar_draw(rb->statusbars, true); 98 rb->gui_syncstatusbar_draw(rb->statusbars, true);
100 while (!exit) { 99 while (!exit) {
101 key = rb->get_action(CONTEXT_MAINMENU,HZ/2); 100 key = rb->get_action(CONTEXT_MAINMENU,HZ/2);
@@ -111,7 +110,6 @@ int menu_show(int m)
111 rb->gui_synclist_do_button(&(menus[m].synclist), key,LIST_WRAP_UNLESS_HELD); 110 rb->gui_synclist_do_button(&(menus[m].synclist), key,LIST_WRAP_UNLESS_HELD);
112 switch( key ) { 111 switch( key ) {
113 case ACTION_STD_OK: 112 case ACTION_STD_OK:
114 rb->action_signalscreenchange();
115 return rb->gui_synclist_get_sel_pos(&(menus[m].synclist)); 113 return rb->gui_synclist_get_sel_pos(&(menus[m].synclist));
116 114
117 115
@@ -127,7 +125,6 @@ int menu_show(int m)
127 } 125 }
128 rb->gui_syncstatusbar_draw(rb->statusbars, false); 126 rb->gui_syncstatusbar_draw(rb->statusbars, false);
129 } 127 }
130 rb->action_signalscreenchange();
131 return MENU_SELECTED_EXIT; 128 return MENU_SELECTED_EXIT;
132} 129}
133 130
diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c
index 86817e2cc7..bc95548afe 100644
--- a/apps/plugins/properties.c
+++ b/apps/plugins/properties.c
@@ -295,7 +295,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
295 } 295 }
296 } 296 }
297 rb->global_settings->statusbar = prev_show_statusbar; 297 rb->global_settings->statusbar = prev_show_statusbar;
298 rb->action_signalscreenchange();
299 298
300 return PLUGIN_OK; 299 return PLUGIN_OK;
301} 300}
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 3ce0208b7e..ca260b7bb0 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -513,7 +513,6 @@ int kbd_input(char* text, int buflen)
513 if (talk_menus_enabled()) /* voice UI? */ 513 if (talk_menus_enabled()) /* voice UI? */
514 talk_spell(text, true); /* spell initial text */ 514 talk_spell(text, true); /* spell initial text */
515 515
516 action_signalscreenchange();
517 516
518 while (!done) 517 while (!done)
519 { 518 {
@@ -755,7 +754,6 @@ int kbd_input(char* text, int buflen)
755#ifdef HAS_BUTTONBAR 754#ifdef HAS_BUTTONBAR
756 global_settings.buttonbar=buttonbar_config; 755 global_settings.buttonbar=buttonbar_config;
757#endif 756#endif
758 action_signalscreenchange();
759 return -1; 757 return -1;
760 break; 758 break;
761 759
@@ -1188,7 +1186,6 @@ int kbd_input(char* text, int buflen)
1188 cur_blink = true; 1186 cur_blink = true;
1189 } 1187 }
1190 } 1188 }
1191 action_signalscreenchange();
1192 1189
1193#ifdef HAS_BUTTONBAR 1190#ifdef HAS_BUTTONBAR
1194 global_settings.buttonbar = buttonbar_config; 1191 global_settings.buttonbar = buttonbar_config;
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index eb457fc2e3..24996bb92b 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -1260,7 +1260,6 @@ static int handle_radio_presets(void)
1260 gui_synclist_set_nb_items(&lists, num_presets); 1260 gui_synclist_set_nb_items(&lists, num_presets);
1261 gui_synclist_select_item(&lists, curr_preset<0 ? 0 : curr_preset); 1261 gui_synclist_select_item(&lists, curr_preset<0 ? 0 : curr_preset);
1262 1262
1263 action_signalscreenchange();
1264 while (result == 0) 1263 while (result == 0)
1265 { 1264 {
1266 gui_synclist_draw(&lists); 1265 gui_synclist_draw(&lists);
@@ -1293,7 +1292,6 @@ static int handle_radio_presets(void)
1293 result = 2; 1292 result = 2;
1294 } 1293 }
1295 } 1294 }
1296 action_signalscreenchange();
1297 return result - 1; 1295 return result - 1;
1298} 1296}
1299 1297
@@ -1424,9 +1422,6 @@ static int fm_recording_screen(void)
1424 int rec_source = global_settings.rec_source; 1422 int rec_source = global_settings.rec_source;
1425 global_settings.rec_source = AUDIO_SRC_FMRADIO; 1423 global_settings.rec_source = AUDIO_SRC_FMRADIO;
1426 1424
1427 /* clearing queue seems to cure a spontaneous abort during record */
1428 action_signalscreenchange();
1429
1430 ret = recording_screen(true); 1425 ret = recording_screen(true);
1431 1426
1432 /* safe to reset as changing sources is prohibited here */ 1427 /* safe to reset as changing sources is prohibited here */
diff --git a/apps/root_menu.c b/apps/root_menu.c
index ff954a0a07..b395705adb 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -411,7 +411,6 @@ static inline int load_screen(int screen)
411 old_previous = GO_TO_ROOT; 411 old_previous = GO_TO_ROOT;
412 global_status.last_screen = (char)screen; 412 global_status.last_screen = (char)screen;
413 status_save(); 413 status_save();
414 action_signalscreenchange();
415 ret_val = items[screen].function(items[screen].param); 414 ret_val = items[screen].function(items[screen].param);
416 last_screen = screen; 415 last_screen = screen;
417 if (ret_val == GO_TO_PREVIOUS) 416 if (ret_val == GO_TO_PREVIOUS)
diff --git a/apps/screens.c b/apps/screens.c
index 570c9b197b..e72c392846 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -367,7 +367,6 @@ int charging_screen(void)
367#ifdef HAVE_LCD_CHARCELLS 367#ifdef HAVE_LCD_CHARCELLS
368 logo_lock_patterns(false); 368 logo_lock_patterns(false);
369#endif 369#endif
370 action_signalscreenchange();
371 return rc; 370 return rc;
372} 371}
373#endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING && defined(CPU_SH) */ 372#endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING && defined(CPU_SH) */
@@ -541,7 +540,6 @@ bool pitch_screen(void)
541 pcmbuf_set_low_latency(true); 540 pcmbuf_set_low_latency(true);
542#endif 541#endif
543 542
544 action_signalscreenchange();
545 while (!exit) 543 while (!exit)
546 { 544 {
547 FOR_NB_SCREENS(i) 545 FOR_NB_SCREENS(i)
@@ -625,7 +623,6 @@ bool pitch_screen(void)
625 pcmbuf_set_low_latency(false); 623 pcmbuf_set_low_latency(false);
626#endif 624#endif
627 lcd_setfont(FONT_UI); 625 lcd_setfont(FONT_UI);
628 action_signalscreenchange();
629 return 0; 626 return 0;
630} 627}
631#endif /* HAVE_PITCHSCREEN */ 628#endif /* HAVE_PITCHSCREEN */
@@ -1107,7 +1104,6 @@ bool set_time_screen(const char* title, struct tm *tm)
1107 screens[i].setfont(FONT_UI); 1104 screens[i].setfont(FONT_UI);
1108 gui_textarea_update_nblines(&screens[i]); 1105 gui_textarea_update_nblines(&screens[i]);
1109 } 1106 }
1110 action_signalscreenchange();
1111 return false; 1107 return false;
1112} 1108}
1113#endif /* defined(HAVE_LCD_BITMAP) && (CONFIG_RTC != 0) */ 1109#endif /* defined(HAVE_LCD_BITMAP) && (CONFIG_RTC != 0) */
@@ -1145,7 +1141,6 @@ bool shutdown_screen(void)
1145 break; 1141 break;
1146 } 1142 }
1147 } 1143 }
1148 action_signalscreenchange();
1149 return false; 1144 return false;
1150} 1145}
1151#endif 1146#endif
@@ -1268,14 +1263,12 @@ bool browse_id3(void)
1268 sizeof(id3_headers)/sizeof(id3_headers[0])*2); 1263 sizeof(id3_headers)/sizeof(id3_headers[0])*2);
1269 gui_synclist_draw(&id3_lists); 1264 gui_synclist_draw(&id3_lists);
1270 gui_syncstatusbar_draw(&statusbars, true); 1265 gui_syncstatusbar_draw(&statusbars, true);
1271 action_signalscreenchange();
1272 while (true) { 1266 while (true) {
1273 gui_syncstatusbar_draw(&statusbars, false); 1267 gui_syncstatusbar_draw(&statusbars, false);
1274 key = get_action(CONTEXT_LIST,HZ/2); 1268 key = get_action(CONTEXT_LIST,HZ/2);
1275 if(key!=ACTION_NONE && key!=ACTION_UNKNOWN 1269 if(key!=ACTION_NONE && key!=ACTION_UNKNOWN
1276 && !gui_synclist_do_button(&id3_lists, key,LIST_WRAP_UNLESS_HELD)) 1270 && !gui_synclist_do_button(&id3_lists, key,LIST_WRAP_UNLESS_HELD))
1277 { 1271 {
1278 action_signalscreenchange();
1279 return(default_event_handler(key) == SYS_USB_CONNECTED); 1272 return(default_event_handler(key) == SYS_USB_CONNECTED);
1280 } 1273 }
1281 } 1274 }
@@ -1314,7 +1307,6 @@ bool view_runtime(void)
1314#endif 1307#endif
1315 gui_synclist_set_icon_callback(&lists, NULL); 1308 gui_synclist_set_icon_callback(&lists, NULL);
1316 gui_synclist_set_nb_items(&lists, 4); 1309 gui_synclist_set_nb_items(&lists, 4);
1317 action_signalscreenchange();
1318 while(1) 1310 while(1)
1319 { 1311 {
1320#if CONFIG_CHARGING 1312#if CONFIG_CHARGING
@@ -1350,7 +1342,6 @@ bool view_runtime(void)
1350 if(default_event_handler(action) == SYS_USB_CONNECTED) 1342 if(default_event_handler(action) == SYS_USB_CONNECTED)
1351 return true; 1343 return true;
1352 } 1344 }
1353 action_signalscreenchange();
1354 return false; 1345 return false;
1355} 1346}
1356 1347
diff --git a/apps/tree.c b/apps/tree.c
index ccdbd69d0a..5b159d14bc 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -608,7 +608,6 @@ static int dirbrowse()
608 if (last_cancel && TIME_BEFORE(current_tick, last_cancel+HZ/2)) 608 if (last_cancel && TIME_BEFORE(current_tick, last_cancel+HZ/2))
609 { 609 {
610 last_cancel = 0; 610 last_cancel = 0;
611 action_signalscreenchange(); /* eat the cancel presses */
612 break; 611 break;
613 } 612 }
614 else 613 else
@@ -922,7 +921,6 @@ static int dirbrowse()
922 } 921 }
923 } 922 }
924 } 923 }
925 action_signalscreenchange();
926 return true; 924 return true;
927} 925}
928 926