put cleanup stuff into a separate fct
[psensor.git] / src / main.c
index fd1d44b..c42f18e 100644 (file)
@@ -135,18 +135,22 @@ update_psensor_values_size(struct psensor **sensors, struct config *cfg)
        }
 }
 
-void update_psensor_measures(struct ui_psensor *ui)
+static void update_measures(struct ui_psensor *ui)
 {
-       struct psensor **sensors = ui->sensors;
-       struct config *cfg = ui->config;
+       struct psensor **sensors;
+       struct config *cfg;
+       int period;
+
+       cfg = ui->config;
 
        while (1) {
                g_mutex_lock(ui->sensors_mutex);
 
+               sensors = ui->sensors;
                if (!sensors)
                        return;
 
-               update_psensor_values_size(sensors, ui->config);
+               update_psensor_values_size(sensors, cfg);
 
                psensor_list_update_measures(sensors);
 #ifdef HAVE_REMOTE_SUPPORT
@@ -161,9 +165,11 @@ void update_psensor_measures(struct ui_psensor *ui)
 
                psensor_log_measures(sensors);
 
+               period = cfg->sensor_update_interval;
+
                g_mutex_unlock(ui->sensors_mutex);
 
-               sleep(cfg->sensor_update_interval);
+               sleep(period);
        }
 }
 
@@ -230,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)
@@ -389,6 +395,43 @@ 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();
+}
+
 int main(int argc, char **argv)
 {
        struct ui_psensor ui;
@@ -521,7 +564,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)
@@ -549,37 +592,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;
 }