diff --git a/dunst.c b/dunst.c index 534a6d2..f8f0784 100644 --- a/dunst.c +++ b/dunst.c @@ -168,9 +168,7 @@ void history_pop(void) n->timeout = settings.sticky_history ? 0 : n->timeout; g_queue_push_head(queue, n); - if (!xctx.visible) { - wake_up(); - } + wake_up(); } void wake_up(void) @@ -183,7 +181,7 @@ static int get_sleep_time(void) if (settings.show_age_threshold == 0) { /* we need to update every second */ - return 1000; + return 1; } bool have_ttl = false; @@ -195,7 +193,7 @@ static int get_sleep_time(void) max_age = MAX(max_age, notification_get_age(n)); int ttl = notification_get_ttl(n); - if (ttl > 0) { + if (ttl >= 0) { if (have_ttl) { min_ttl = MIN(min_ttl, ttl); } else { @@ -209,7 +207,7 @@ static int get_sleep_time(void) int show_age_timeout = settings.show_age_threshold - max_age; if (show_age_timeout < 1) { - return 1000; + return 1; } if (!have_ttl) { @@ -220,13 +218,9 @@ static int get_sleep_time(void) /* show_age_timeout might be negative */ if (min_timeout < 1) { - return 1000; + return 1; } else { - /* add 501 milliseconds to make sure we wake are in the second - * after the next notification times out. Otherwise we'll wake - * up, but the notification won't get closed until we get woken - * up again (which might be multiple seconds later */ - return min_timeout * 1000 + 501; + return min_timeout; } } @@ -253,13 +247,13 @@ gboolean run(void *data) } if (xctx.visible) { - int now = time(NULL) * 1000; + int now = time(NULL); int sleep = get_sleep_time(); if (sleep > 0) { int timeout_at = now + sleep; if (timeout_cnt == 0 || timeout_at < next_timeout) { - g_timeout_add(sleep, run, mainloop); + g_timeout_add_seconds(sleep, run, mainloop); next_timeout = timeout_at; timeout_cnt++; } diff --git a/notification.c b/notification.c index e3d3b47..10cbd11 100644 --- a/notification.c +++ b/notification.c @@ -520,7 +520,7 @@ void notification_update_text_to_render(notification *n) int notification_get_ttl(notification *n) { if (n->timeout == 0) { - return 0; + return -1; } else { return n->timeout - (time(NULL) - n->start); }