status
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 13 Nov 2011 13:05:39 +0000 (13:05 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sun, 13 Nov 2011 13:05:39 +0000 (13:05 +0000)
src/main.c
src/ui_appindicator.c
src/ui_status.c
src/ui_status.h

index 2b2b5ca..5e008db 100644 (file)
@@ -462,7 +462,9 @@ int main(int argc, char **argv)
        associate_colors(ui.sensors);
        associate_cb_alarm_raised(ui.sensors, &ui);
 
+#if !defined(HAVE_APPINDICATOR) && !defined(HAVE_APPINDICATOR_029)
        ui_status_init(&ui);
+#endif
 
        /* main window */
        ui_window_create(&ui);
index 720ab49..fa84992 100644 (file)
@@ -35,6 +35,7 @@ static GtkMenuItem **sensor_menu_items;
 static GtkWidget *main_window;
 static int appindicator_supported = 1;
 static AppIndicator *indicator;
+static struct ui_psensor *ui_psensor;
 
 static void cb_menu_show(GtkMenuItem *mi, gpointer data)
 {
@@ -219,7 +220,7 @@ static GtkStatusIcon *unity_fallback(AppIndicator *indicator)
 
        appindicator_supported = 0;
 
-       return ui_status_get_icon();
+       return ui_status_get_icon(ui_psensor);
 }
 
 static void
@@ -234,6 +235,7 @@ void ui_appindicator_init(struct ui_psensor *ui)
 {
        GtkWidget *menu;
 
+       ui_psensor = ui;
        main_window = ui->main_window;
 
        indicator = app_indicator_new
index df79172..f61e8a1 100644 (file)
@@ -63,14 +63,17 @@ void ui_status_init(struct ui_psensor *ui)
 
 int is_status_supported()
 {
-       return gtk_status_icon_is_embedded(status);
+       return status && gtk_status_icon_is_embedded(status);
 }
 
 void ui_status_cleanup()
 {
        log_debug("ui_status_cleanup()");
-
-       g_object_unref(G_OBJECT(status));
+       
+       if (status) {
+               g_object_unref(G_OBJECT(status));
+               status = NULL;
+       }
 }
 
 void ui_status_update(struct ui_psensor *ui, unsigned int attention)
@@ -85,7 +88,10 @@ void ui_status_update(struct ui_psensor *ui, unsigned int attention)
        status_attention = attention;
 }
 
-GtkStatusIcon *ui_status_get_icon()
+GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui)
 {
+       if (!status)
+               ui_status_init(ui);
+
        return status;
 }
index 40cc3c5..be04bb8 100644 (file)
@@ -28,6 +28,6 @@ void ui_status_cleanup();
 void ui_status_update(struct ui_psensor *ui, unsigned int attention);
 /* Whether status icon is supported i.e. visible. */
 int is_status_supported();
-GtkStatusIcon *ui_status_get_icon();
+GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui);
 
 #endif