Check if next_timeout is in past

When having a long running notification and an additional two shorter
notifications arrive. The short notification, which times out later,
does not timeout correctly and gets flushed only, when the long running
notification is flushed or a Focus* XEvent is sent.
This commit is contained in:
Benedikt Heine 2017-11-27 02:23:27 +01:00
parent 1fc96e9691
commit 2a823eb381

View File

@ -78,7 +78,7 @@ gboolean run(void *data)
gint64 timeout_at = now + sleep; gint64 timeout_at = now + sleep;
if (sleep >= 0) { if (sleep >= 0) {
if (timeout_cnt == 0 || timeout_at < next_timeout) { if (timeout_cnt == 0 || next_timeout < now || timeout_at < next_timeout) {
g_timeout_add(sleep/1000, run, mainloop); g_timeout_add(sleep/1000, run, mainloop);
next_timeout = timeout_at; next_timeout = timeout_at;
timeout_cnt++; timeout_cnt++;