Merge pull request #449 from bebehei/fix-notification-timeouts
Fix notification timeouts
This commit is contained in:
		
						commit
						75fddab7bd
					
				
							
								
								
									
										20
									
								
								src/dunst.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								src/dunst.c
									
									
									
									
									
								
							| @ -53,14 +53,9 @@ gboolean run(void *data) | ||||
|         queues_check_timeouts(x_is_idle()); | ||||
|         queues_update(); | ||||
| 
 | ||||
|         static int timeout_cnt = 0; | ||||
|         static gint64 next_timeout = 0; | ||||
| 
 | ||||
|         if (data && timeout_cnt > 0) { | ||||
|                 timeout_cnt--; | ||||
|         } | ||||
| 
 | ||||
|         if (queues_length_displayed() > 0 && !xctx.visible) { | ||||
|         if (!xctx.visible && queues_length_displayed() > 0) { | ||||
|                 x_win_show(); | ||||
|         } | ||||
| 
 | ||||
| @ -78,16 +73,19 @@ gboolean run(void *data) | ||||
|                 gint64 timeout_at = now + sleep; | ||||
| 
 | ||||
|                 if (sleep >= 0) { | ||||
|                         if (timeout_cnt == 0 || timeout_at < next_timeout) { | ||||
|                                 g_timeout_add(sleep/1000, run, mainloop); | ||||
|                         if (next_timeout < now || timeout_at < next_timeout) { | ||||
|                                 g_timeout_add(sleep/1000, run, NULL); | ||||
|                                 next_timeout = timeout_at; | ||||
|                                 timeout_cnt++; | ||||
|                         } | ||||
|                 } | ||||
|         } | ||||
| 
 | ||||
|         /* always return false to delete timers */ | ||||
|         return false; | ||||
|         /* If the execution got triggered by g_timeout_add,
 | ||||
|          * 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) | ||||
|  | ||||
| @ -19,18 +19,15 @@ | ||||
| extern GSList *rules; | ||||
| extern const char *color_strings[3][3]; | ||||
| 
 | ||||
| /* return id of notification */ | ||||
| gboolean run(void *data); | ||||
| void wake_up(void); | ||||
| 
 | ||||
| int dunst_main(int argc, char *argv[]); | ||||
| 
 | ||||
| void check_timeouts(void); | ||||
| void usage(int exit_status); | ||||
| void print_version(void); | ||||
| char *extract_urls(const char *str); | ||||
| void context_menu(void); | ||||
| void wake_up(void); | ||||
| void pause_signal_handler(int sig); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -701,6 +701,8 @@ void x_win_draw(void) | ||||
|         cairo_paint(cairo_ctx.context); | ||||
|         cairo_show_page(cairo_ctx.context); | ||||
| 
 | ||||
|         XFlush(xctx.dpy); | ||||
| 
 | ||||
|         cairo_destroy(c); | ||||
|         cairo_surface_destroy(image_surface); | ||||
|         r_free_layouts(layouts); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Nikos Tsipinakis
						Nikos Tsipinakis