moved 'associate fcts' to create sensors list fct
[psensor.git] / src / main.c
index 8ede9f1..27e0ba0 100644 (file)
@@ -135,7 +135,7 @@ update_psensor_values_size(struct psensor **sensors, struct config *cfg)
        }
 }
 
-static void update_psensor_measures(struct ui_psensor *ui)
+static void update_measures(struct ui_psensor *ui)
 {
        struct psensor **sensors;
        struct config *cfg;
@@ -236,7 +236,7 @@ gboolean ui_refresh_thread(gpointer data)
        return ret;
 }
 
-void cb_alarm_raised(struct psensor *sensor, void *data)
+static void cb_alarm_raised(struct psensor *sensor, void *data)
 {
 #ifdef HAVE_LIBNOTIFY
        if (sensor->enabled)
@@ -395,6 +395,82 @@ static void activate(GApplication *application,
        ui_window_show((struct ui_psensor *)data);
 }
 
+/*
+ * Release memory for Valgrind.
+ */
+static void cleanup(struct ui_psensor *ui)
+{
+       g_mutex_lock(ui->sensors_mutex);
+
+       psensor_cleanup();
+
+#ifdef HAVE_NVIDIA
+       nvidia_cleanup();
+#endif
+#ifdef HAVE_LIBATIADL
+       amd_cleanup();
+#endif
+#ifdef HAVE_REMOTE_SUPPORT
+       rsensor_cleanup();
+#endif
+
+       psensor_list_free(ui->sensors);
+       ui->sensors = NULL;
+
+#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
+       ui_appindicator_cleanup();
+#endif
+
+       ui_status_cleanup();
+
+       g_mutex_unlock(ui->sensors_mutex);
+
+       config_cleanup();
+
+       log_debug("Cleanup done, closing log");
+
+       log_close();
+}
+
+/*
+ * Creates the list of sensors.
+ *
+ * 'url': remote psensor server url, null for local monitoring.
+ * 'use_libatasmart': whether the libatasmart must be used.
+ */
+static struct psensor **create_sensors_list(const char *url,
+                                           unsigned int use_libatasmart)
+{
+       struct psensor **sensors;
+
+       if (url) {
+#ifdef HAVE_REMOTE_SUPPORT
+               rsensor_init();
+               sensors = get_remote_sensors(url, 600);
+#else
+               fprintf(stderr,
+                       _("ERROR: Not compiled with remote sensor support.\n"));
+               exit(EXIT_FAILURE);
+#endif
+       } else {
+               sensors = get_all_sensors(use_libatasmart, 600);
+#ifdef HAVE_NVIDIA
+               sensors = nvidia_psensor_list_add(sensors, 600);
+#endif
+#ifdef HAVE_LIBATIADL
+               sensors = amd_psensor_list_add(sensors, 600);
+#endif
+#ifdef HAVE_GTOP
+               sensors = cpu_psensor_list_add(sensors, 600);
+#endif
+       }
+
+       associate_preferences(sensors);
+       associate_colors(sensors);
+
+       return sensors;
+}
+
 int main(int argc, char **argv)
 {
        struct ui_psensor ui;
@@ -478,36 +554,11 @@ int main(int argc, char **argv)
 
        ui.sensors_mutex = g_mutex_new();
 
-       config_init();
-
        ui.config = config_load();
 
        psensor_init();
 
-       if (url) {
-#ifdef HAVE_REMOTE_SUPPORT
-               rsensor_init();
-               ui.sensors = get_remote_sensors(url, 600);
-#else
-               fprintf(stderr,
-                       _("ERROR: Not compiled with remote sensor support.\n"));
-               exit(EXIT_FAILURE);
-#endif
-       } else {
-               ui.sensors = get_all_sensors(use_libatasmart, 600);
-#ifdef HAVE_NVIDIA
-               ui.sensors = nvidia_psensor_list_add(ui.sensors, 600);
-#endif
-#ifdef HAVE_LIBATIADL
-               ui.sensors = amd_psensor_list_add(ui.sensors, 600);
-#endif
-#ifdef HAVE_GTOP
-               ui.sensors = cpu_psensor_list_add(ui.sensors, 600);
-#endif
-       }
-
-       associate_preferences(ui.sensors);
-       associate_colors(ui.sensors);
+       ui.sensors = create_sensors_list(url, use_libatasmart);
        associate_cb_alarm_raised(ui.sensors, &ui);
 
 #if !defined(HAVE_APPINDICATOR) && !defined(HAVE_APPINDICATOR_029)
@@ -527,7 +578,7 @@ int main(int argc, char **argv)
        /* sensor list */
        ui_sensorlist_create(&ui);
 
-       thread = g_thread_create((GThreadFunc) update_psensor_measures,
+       thread = g_thread_create((GThreadFunc) update_measures,
                                 &ui, TRUE, &error);
 
        if (!thread)
@@ -555,37 +606,7 @@ int main(int argc, char **argv)
        gtk_main();
 
        log_debug("Quitting...");
-
-       g_mutex_lock(ui.sensors_mutex);
-
-       psensor_cleanup();
-
-#ifdef HAVE_NVIDIA
-       nvidia_cleanup();
-#endif
-#ifdef HAVE_LIBATIADL
-       amd_cleanup();
-#endif
-#ifdef HAVE_REMOTE_SUPPORT
-       rsensor_cleanup();
-#endif
-
-       psensor_list_free(ui.sensors);
-       ui.sensors = NULL;
-
-#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
-       ui_appindicator_cleanup();
-#endif
-
-       ui_status_cleanup();
-
-       g_mutex_unlock(ui.sensors_mutex);
-
-       config_cleanup();
-
-       log_debug("Cleanup done, closing log");
-
-       log_close();
+       cleanup(&ui);
 
        return 0;
 }