Index: cpufreq-applet.c
===================================================================
--- cpufreq-applet.c	(revision 11137)
+++ cpufreq-applet.c	(working copy)
@@ -47,6 +47,7 @@
         gboolean          show_perc;
         gboolean          show_unit;
         gboolean          show_icon;
+        CPUFreqShowMode   show_mode;
 
         CPUFreqMonitor   *monitor;
 
@@ -712,7 +713,9 @@
         }
 
         if ((applet->show_perc && show_freq) ||
-            (applet->show_freq && show_perc))
+            (applet->show_freq && show_perc) ||
+            (applet->show_mode != CPUFREQ_MODE_TEXT &&
+             show_mode == CPUFREQ_MODE_TEXT))
                 need_update = TRUE;
         
         if (show_freq != applet->show_freq) {
@@ -725,6 +728,11 @@
                 changed = TRUE;
         }
 
+        if (show_mode != applet->show_mode) {
+                applet->show_mode = show_mode;
+                changed = TRUE;
+        }
+
         if (changed) {
                 g_object_set (G_OBJECT (applet->label),
                               "visible",
@@ -767,6 +775,9 @@
         guint           cpu;
         gchar          *governor;
 
+        if (!CPUFREQ_IS_MONITOR (applet->monitor))
+                return;
+
         cpu = cpufreq_monitor_get_cpu (monitor);
         freq = cpufreq_monitor_get_frequency (monitor);
         perc = cpufreq_monitor_get_percentage (monitor);
@@ -795,7 +806,9 @@
                 cpufreq_applet_pixmap_set_image (applet, perc);
         }
 
-        governor[0] = g_ascii_toupper (governor[0]);
+        if (governor != NULL)
+                governor[0] = g_ascii_toupper (governor[0]);
+
         text_mode = g_strdup_printf ("%s\n%s %s (%d%%)",
                                      governor, freq_label,
                                      unit_label, perc);
@@ -977,6 +990,11 @@
         applet->prefs = cpufreq_prefs_new (prefs_key);
         g_free (prefs_key);
 
+        /* Monitor */
+        applet->monitor = cpufreq_monitor_factory_create_monitor (
+                cpufreq_prefs_get_cpu (applet->prefs));
+        cpufreq_monitor_run (applet->monitor);
+
 	g_signal_connect (G_OBJECT (applet->prefs),
 			  "notify::cpu",
 			  G_CALLBACK (cpufreq_applet_prefs_cpu_changed),
@@ -992,10 +1010,6 @@
         
         cpufreq_applet_update_visibility (applet);
 
-        /* Monitor */
-        applet->monitor = cpufreq_monitor_factory_create_monitor (
-                cpufreq_prefs_get_cpu (applet->prefs));
-        cpufreq_monitor_run (applet->monitor);
         g_signal_connect_swapped (G_OBJECT (applet->monitor), "changed",
                                   G_CALLBACK (cpufreq_applet_update),
                                   (gpointer) applet);
