Index: apps/menus/sound_menu.c
===================================================================
--- apps/menus/sound_menu.c	(revision 26622)
+++ apps/menus/sound_menu.c	(working copy)
@@ -35,33 +35,32 @@
 #include "splash.h"
 #include "kernel.h"
 #include "dsp.h"
+#include "radio.h"
 
+
+#if defined(HAVE_SW_TONE_CONTROLS) && CONFIG_TUNER
+static int soundsettings_callback(int action,const struct menu_item_ex *this_item);
+#elif defined(HAVE_SW_TONE_CONTROLS)
+#define soundsettings_callback lowlatency_callback
+#else 
+#define soundsettings_callback NULL
+#endif
+
+
 /***********************************/
 /*    SOUND MENU                   */
 MENUITEM_SETTING(volume, &global_settings.volume, NULL);
 #ifdef AUDIOHW_HAVE_BASS
-MENUITEM_SETTING(bass, &global_settings.bass,
-#ifdef HAVE_SW_TONE_CONTROLS
-    lowlatency_callback
-#else
-    NULL
-#endif
-);
+MENUITEM_SETTING(bass, &global_settings.bass, soundsettings_callback);
 
 #ifdef AUDIOHW_HAVE_BASS_CUTOFF
-MENUITEM_SETTING(bass_cutoff, &global_settings.bass_cutoff, NULL);
+MENUITEM_SETTING(bass_cutoff, &global_settings.bass_cutoff, soundsettings_callback);
 #endif
 #endif /* AUDIOHW_HAVE_BASS */
 
 
 #ifdef AUDIOHW_HAVE_TREBLE
-MENUITEM_SETTING(treble, &global_settings.treble,
-#ifdef HAVE_SW_TONE_CONTROLS
-    lowlatency_callback
-#else
-    NULL
-#endif
-);
+MENUITEM_SETTING(treble, &global_settings.treble,soundsettings_callback);
 
 #ifdef AUDIOHW_HAVE_TREBLE_CUTOFF
 MENUITEM_SETTING(treble_cutoff, &global_settings.treble_cutoff, NULL);
@@ -69,6 +68,33 @@
 #endif /* AUDIOHW_HAVE_TREBLE */
 
 
+#if defined(HAVE_SW_TONE_CONTROLS) && CONFIG_TUNER
+/* Disable some items in the FM screen which dont do anything */
+static int soundsettings_callback(int action,const struct menu_item_ex *this_item)
+{
+    switch (action)
+    {
+        case ACTION_REQUEST_MENUITEM:
+            if (this_item == &bass || 
+#ifdef HAVE_WM8758
+                this_item == &bass_cutoff,
+#endif
+                this_item == &treble )
+            {
+                 if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF))
+                    return ACTION_EXIT_MENUITEM;
+            }
+            break;
+        default:
+            /* we do want to show the item so pass the callback to the real one */
+            if (this_item == &bass ||  this_item == &treble )
+                return lowlatency_callback(action, this_item);
+    }
+    return action;
+}
+#endif
+
+
 MENUITEM_SETTING(balance, &global_settings.balance, NULL);
 MENUITEM_SETTING(channel_config, &global_settings.channel_config,
 #if CONFIG_CODEC == SWCODEC
@@ -155,6 +181,7 @@
 #ifdef AUDIOHW_HAVE_EQ
 #endif /* AUDIOHW_HAVE_EQ */
 
+
 MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio,
           &volume
 #ifdef AUDIOHW_HAVE_BASS
