diff -Nur xfce4-diskperf-plugin-2.0/panel-plugin/main.c xfce4-diskperf-plugin-2.0.new/panel-plugin/main.c --- xfce4-diskperf-plugin-2.0/panel-plugin/main.c 2005-10-11 22:18:15.000000000 +0300 +++ xfce4-diskperf-plugin-2.0.new/panel-plugin/main.c 2006-10-07 10:15:34.000000000 +0300 @@ -141,6 +141,8 @@ /**************************************************************/ +static int timerNeedsUpdate = 0; + static int DisplayPerf (struct diskperf_t *p_poPlugin) /* Get the last disk perfomance data, compute the statistics and update the panel-docked monitor bars */ @@ -273,6 +275,12 @@ DisplayPerf (poPlugin); + if (timerNeedsUpdate) { + g_source_remove (poPlugin->iTimerId); + poPlugin->iTimerId = 0; + timerNeedsUpdate = 0; + } + if (!poPlugin->iTimerId) poPlugin->iTimerId = g_timeout_add (poConf->iPeriod_ms, (GSourceFunc) SetTimer, poPlugin); @@ -773,6 +781,7 @@ struct param_t *poConf = &(poPlugin->oConf.oParam); float r; + timerNeedsUpdate = 1; TRACE ("SetPeriod()\n"); r = gtk_spin_button_get_value (GTK_SPIN_BUTTON (p_wSc)); poConf->iPeriod_ms = (r * 1000) + 0.5; /* rounded */ @@ -1096,8 +1105,6 @@ { diskperf_t *diskperf = diskperf_create_control (plugin); - diskperf_read_config (plugin, diskperf); - g_signal_connect (plugin, "free-data", G_CALLBACK (diskperf_free), diskperf); @@ -1120,7 +1127,9 @@ gtk_container_add (GTK_CONTAINER (plugin), diskperf->oMonitor.wEventBox); CreateMonitorBars (diskperf, xfce_panel_plugin_get_orientation (plugin)); - + + diskperf_read_config (plugin, diskperf); + DevPerfInit(); SetTimer (diskperf); }