fixed blank window when show is triggered before initial window show
[psensor.git] / src / ui.c
index d03da27..e1a9ab0 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -17,6 +17,7 @@
  * 02110-1301 USA
  */
 #include "cfg.h"
+#include "slog.h"
 #include "ui.h"
 #include "ui_graph.h"
 #include "ui_pref.h"
@@ -213,6 +214,27 @@ void ui_enable_alpha_channel(struct ui_psensor *ui)
 
 }
 
+static void on_slog_enabled_cb(GConfClient *client,
+                              guint cnxn_id,
+                              GConfEntry *entry,
+                              gpointer user_data)
+{
+       struct ui_psensor *ui;
+       struct psensor **sensors;
+       pthread_mutex_t *mutex;
+
+       ui = (struct ui_psensor *)user_data;
+       sensors = ui->sensors;
+       mutex = &ui->sensors_mutex;
+
+       log_debug("cbk_slog_enabled");
+
+       if (is_slog_enabled())
+               slog_activate(NULL, sensors, mutex, config_get_slog_interval());
+       else
+               slog_close();
+}
+
 void ui_window_create(struct ui_psensor *ui)
 {
        GtkWidget *window, *menubar;
@@ -228,6 +250,8 @@ void ui_window_create(struct ui_psensor *ui)
                                cfg->window_x,
                                cfg->window_y);
 
+       config_slog_enabled_notify_add(on_slog_enabled_cb, ui);
+
        gtk_window_set_default_size(GTK_WINDOW(window),
                                    cfg->window_w,
                                    cfg->window_h);
@@ -336,5 +360,6 @@ void ui_window_update(struct ui_psensor *ui)
 void ui_window_show(struct ui_psensor *ui)
 {
        log_debug("ui_window_show()");
+       ui_window_update(ui);
        gtk_window_present(GTK_WINDOW(ui->main_window));
 }