Fix segfault with startup_notification
As it currently stands notification_init uses xctx.color to initialize the notification colors which means that it depends on x11 having been previously initialized and crashes otherwise. This bug was introduced in 04b327f where draw_setup() was after the startup notification was created. As a temporary fix the notification creation was moved under draw_setup but for a long term solution we should look into removing these xctx dependencies.
This commit is contained in:
		
							parent
							
								
									1fe80a5db8
								
							
						
					
					
						commit
						5761ef1c09
					
				
							
								
								
									
										24
									
								
								src/dunst.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/dunst.c
									
									
									
									
									
								
							| @ -147,6 +147,18 @@ int dunst_main(int argc, char *argv[]) | |||||||
| 
 | 
 | ||||||
|         int owner_id = initdbus(); |         int owner_id = initdbus(); | ||||||
| 
 | 
 | ||||||
|  |         mainloop = g_main_loop_new(NULL, FALSE); | ||||||
|  | 
 | ||||||
|  |         draw_setup(); | ||||||
|  | 
 | ||||||
|  |         guint pause_src = g_unix_signal_add(SIGUSR1, pause_signal, NULL); | ||||||
|  |         guint unpause_src = g_unix_signal_add(SIGUSR2, unpause_signal, NULL); | ||||||
|  | 
 | ||||||
|  |         /* register SIGINT/SIGTERM handler for
 | ||||||
|  |          * graceful termination */ | ||||||
|  |         guint term_src = g_unix_signal_add(SIGTERM, quit_signal, NULL); | ||||||
|  |         guint int_src = g_unix_signal_add(SIGINT, quit_signal, NULL); | ||||||
|  | 
 | ||||||
|         if (settings.startup_notification) { |         if (settings.startup_notification) { | ||||||
|                 notification *n = notification_create(); |                 notification *n = notification_create(); | ||||||
|                 n->id = 0; |                 n->id = 0; | ||||||
| @ -162,18 +174,6 @@ int dunst_main(int argc, char *argv[]) | |||||||
|                 // we do not call wakeup now, wake_up does not work here yet
 |                 // we do not call wakeup now, wake_up does not work here yet
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         mainloop = g_main_loop_new(NULL, FALSE); |  | ||||||
| 
 |  | ||||||
|         draw_setup(); |  | ||||||
| 
 |  | ||||||
|         guint pause_src = g_unix_signal_add(SIGUSR1, pause_signal, NULL); |  | ||||||
|         guint unpause_src = g_unix_signal_add(SIGUSR2, unpause_signal, NULL); |  | ||||||
| 
 |  | ||||||
|         /* register SIGINT/SIGTERM handler for
 |  | ||||||
|          * graceful termination */ |  | ||||||
|         guint term_src = g_unix_signal_add(SIGTERM, quit_signal, NULL); |  | ||||||
|         guint int_src = g_unix_signal_add(SIGINT, quit_signal, NULL); |  | ||||||
| 
 |  | ||||||
|         run(NULL); |         run(NULL); | ||||||
|         g_main_loop_run(mainloop); |         g_main_loop_run(mainloop); | ||||||
|         g_main_loop_unref(mainloop); |         g_main_loop_unref(mainloop); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Nikos Tsipinakis
						Nikos Tsipinakis