summaryrefslogtreecommitdiff
path: root/sensors-applet/sensors-applet.c
diff options
context:
space:
mode:
Diffstat (limited to 'sensors-applet/sensors-applet.c')
-rw-r--r--sensors-applet/sensors-applet.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/sensors-applet/sensors-applet.c b/sensors-applet/sensors-applet.c
index a401d32..3ddd48d 100644
--- a/sensors-applet/sensors-applet.c
+++ b/sensors-applet/sensors-applet.c
@@ -272,6 +272,8 @@ void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType
const gchar *limit_type = NULL;
const gchar *units = NULL;
gdouble limit_value;
+ gdouble seconds;
+ gboolean show_notification = TRUE;
sensors_applet = active_sensor->sensors_applet;
@@ -365,21 +367,35 @@ void sensors_applet_notify_active_sensor(ActiveSensor *active_sensor, NotifType
break;
case SENSOR_INTERFACE_ERROR:
+ /* get time since the last error */
+ seconds = difftime(time(NULL), active_sensor->ierror_ts);
+
+ /* if the last error happened less than 10 seconds ago, don't display this one
+ * this should prevent recurring popups for removed sensors, like USB-HDDs */
+ if (seconds < 11.0) {
+ show_notification = FALSE;
+ }
+
summary = g_strdup_printf(_("Error updating sensor %s"), sensor_label);
message = g_strdup_printf(_("An error occurred while trying to update the value of the sensor %s located at %s."), sensor_label, sensor_path);
timeout_msecs = g_settings_get_int (active_sensor->sensors_applet->settings, TIMEOUT);
+
+ /* update timestamp */
+ time(&(active_sensor->ierror_ts));
break;
default:
g_assert_not_reached();
}
- active_sensor_libnotify_notify(active_sensor,
- notif_type,
- summary,
- message,
- "dialog-warning",
- timeout_msecs);
+ if (show_notification) {
+ active_sensor_libnotify_notify(active_sensor,
+ notif_type,
+ summary,
+ message,
+ "dialog-warning",
+ timeout_msecs);
+ }
g_free(sensor_path);
g_free(sensor_label);