Merge pull request #449 from bebehei/fix-notification-timeouts

Fix notification timeouts
This commit is contained in:
Nikos Tsipinakis 2017-12-02 08:56:43 +02:00 committed by GitHub
commit 75fddab7bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 14 deletions

View File

@ -53,14 +53,9 @@ gboolean run(void *data)
queues_check_timeouts(x_is_idle()); queues_check_timeouts(x_is_idle());
queues_update(); queues_update();
static int timeout_cnt = 0;
static gint64 next_timeout = 0; static gint64 next_timeout = 0;
if (data && timeout_cnt > 0) { if (!xctx.visible && queues_length_displayed() > 0) {
timeout_cnt--;
}
if (queues_length_displayed() > 0 && !xctx.visible) {
x_win_show(); x_win_show();
} }
@ -78,16 +73,19 @@ 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 (next_timeout < now || timeout_at < next_timeout) {
g_timeout_add(sleep/1000, run, mainloop); g_timeout_add(sleep/1000, run, NULL);
next_timeout = timeout_at; next_timeout = timeout_at;
timeout_cnt++;
} }
} }
} }
/* always return false to delete timers */ /* If the execution got triggered by g_timeout_add,
return false; * we have to remove the timeout (which is actually a
* recurring interval), as we have set a new one
* by ourselves.
*/
return G_SOURCE_REMOVE;
} }
gboolean pause_signal(gpointer data) gboolean pause_signal(gpointer data)

View File

@ -19,18 +19,15 @@
extern GSList *rules; extern GSList *rules;
extern const char *color_strings[3][3]; extern const char *color_strings[3][3];
/* return id of notification */
gboolean run(void *data); gboolean run(void *data);
void wake_up(void); void wake_up(void);
int dunst_main(int argc, char *argv[]); int dunst_main(int argc, char *argv[]);
void check_timeouts(void);
void usage(int exit_status); void usage(int exit_status);
void print_version(void); void print_version(void);
char *extract_urls(const char *str); char *extract_urls(const char *str);
void context_menu(void); void context_menu(void);
void wake_up(void);
void pause_signal_handler(int sig); void pause_signal_handler(int sig);
#endif #endif

View File

@ -701,6 +701,8 @@ void x_win_draw(void)
cairo_paint(cairo_ctx.context); cairo_paint(cairo_ctx.context);
cairo_show_page(cairo_ctx.context); cairo_show_page(cairo_ctx.context);
XFlush(xctx.dpy);
cairo_destroy(c); cairo_destroy(c);
cairo_surface_destroy(image_surface); cairo_surface_destroy(image_surface);
r_free_layouts(layouts); r_free_layouts(layouts);