Cache daemon-running status.
[udpgate.git] / src / ui-gnome.c
index 3aa4681..df2d745 100644 (file)
@@ -1,6 +1,6 @@
 /* $Id$
  * Gnome user interface
- * Copyright (C) 2004 Jan Kratochvil <project-udpforward@jankratochvil.net>
+ * Copyright (C) 2004 Jan Kratochvil <project-udpgate@jankratochvil.net>
  * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@
 
 
 /* Config: */
-#define DAEMON_CHECK_INTERVAL_MS 500
+#define DAEMON_CHECK_INTERVAL_MS 100
 #define PORT_RANGE_BEGIN 2048
 #define PORT_RANGE_END 10240
 
@@ -57,17 +57,26 @@ static GtkEntry *PortEntry;
 static void state_start_stop(void)
 {
 pid_t daemon_pid;
+gboolean daemon_running;
+static gboolean last_daemon_running,last_daemon_running_set=FALSE;
 
        daemon_pid=is_daemon_running();
-       gboolean daemon_running=((pid_t)-1!=daemon_pid);
+       daemon_running=((pid_t)-1!=daemon_pid);
+
+       /* Cache the result; maybe not needed. */
+       if (last_daemon_running_set && last_daemon_running==daemon_running)
+               return;
+       last_daemon_running=daemon_running;
+       last_daemon_running_set=TRUE;
+
        gtk_widget_set_sensitive(GTK_WIDGET(ButtonStart),!daemon_running);
        gtk_widget_set_sensitive(GTK_WIDGET(ButtonStop) , daemon_running);
        gtk_widget_set_sensitive(GTK_WIDGET(PortHBox)   ,!daemon_running);
        if (daemon_running)
                gnome_appbar_set_status(AppBar,
-                               udpforward_printf_alloca(_("udpforward daemon running as PID %d."),(int)daemon_pid));
+                               udpgate_printf_alloca(_("udpgate daemon running as PID %d."),(int)daemon_pid));
        else
-               gnome_appbar_set_status(AppBar,_("No udpforward daemon currently running."));
+               gnome_appbar_set_status(AppBar,_("No udpgate daemon currently running."));
 }
 
 static gboolean daemon_check_timeout_func(gpointer data /* unused */)
@@ -84,7 +93,7 @@ void on_PortButtonRandom_clicked(GtkButton *button,gpointer user_data)
        if ((pid_t)-1!=is_daemon_running())
                return;
        gtk_entry_set_text(PortEntry,
-                       udpforward_printf_alloca("%d",(int)g_random_int_range(PORT_RANGE_BEGIN,PORT_RANGE_END)));
+                       udpgate_printf_alloca("%d",(int)g_random_int_range(PORT_RANGE_BEGIN,PORT_RANGE_END)));
 }
 
 void on_AutostartCheckButton_toggled(GtkToggleButton *togglebutton,gpointer user_data)
@@ -165,7 +174,10 @@ gboolean ui_gnome_init(void)
        /* ui_gnome_g_log_handler() needs 'App'. */
        g_log_set_handler(
                        G_LOG_DOMAIN,   /* log_domain; "Captive" */
-                       G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL,    /* log_levels */
+                       (G_LOG_LEVEL_MASK|G_LOG_FLAG_FATAL)&~(0
+                                       |G_LOG_LEVEL_MESSAGE
+                                       |G_LOG_LEVEL_INFO
+                                       |G_LOG_LEVEL_DEBUG),    /* log_levels */
                        ui_gnome_g_log_handler, /* log_func */
                        NULL);  /* user_data */