Hi all, I'm new to rockbox development, so bear with me if I'm violating the mailing list etiquette etc.
On my sansa clip+, there is a quiet, ticking noise on weak fm radio channels. I found out that this is probably due to the cpu being woken up to update the display 5 times a second, even if the display is turned off. This patch fixes the issue by not updating the display unless it is turned on. diff --git a/apps/radio/radio_skin.c b/apps/radio/radio_skin.c index 521890c..0c05f33 100644 --- a/apps/radio/radio_skin.c +++ b/apps/radio/radio_skin.c @@ -96,7 +96,13 @@ void fms_fix_displays(enum fms_exiting toggle_state) int fms_do_button_loop(bool update_screen) { int button = skin_wait_for_action(FM_SCREEN, CONTEXT_FM, - update_screen ? TIMEOUT_NOBLOCK : HZ/5); + update_screen ? TIMEOUT_NOBLOCK : +#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) + (lcd_active() ? HZ/5 : TIMEOUT_BLOCK) +#else + HZ/5 +#endif + ); #ifdef HAVE_TOUCHSCREEN struct touchregion *region; int offset; Unfortunately, if combined with the "backlight filters first keypress: on" config option, this causes the display (including RSSI) to also not be updated after it is woken up again, simply because skin_wait_for_action() will not return if the keypress was only turning on the backlight. The following patch pushes a dummy event into the button queue to work around that. diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index c165e8f..3e4e9e2 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -316,7 +316,13 @@ static void button_tick(void) ) button_try_post(btn, data); else + { +#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) + /* propagate the backlight_on() up the queue with a dummy event */ + button_try_post(BUTTON_NONE, 0); +#endif skip_release = true; + } #else /* no backlight, nothing to skip */ button_try_post(btn, data); #endif I did test both patches and they work for me. However, I'm not really sure that I understand all the implications to other parts of the code, so comments are very welcome. In case those patches are deemed acceptable for inclusion, I'll produce a proper git patch that can be applied easily. Best regards, Stefan -- Stefan Seyfried Linux Consultant & Developer -- GPG Key: 0x731B665B B1 Systems GmbH Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537