mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	tests: add one more test for event-loop signal source
Test if when we get a signal, all signal sources for that signal get dispatched. Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
		
							parent
							
								
									f2338c8f3b
								
							
						
					
					
						commit
						5bed9e46e7
					
				
					 1 changed files with 38 additions and 0 deletions
				
			
		| 
						 | 
					@ -173,6 +173,44 @@ TEST(event_loop_signal)
 | 
				
			||||||
	wl_event_loop_destroy(loop);
 | 
						wl_event_loop_destroy(loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(event_loop_multiple_same_signals)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct wl_event_loop *loop = wl_event_loop_create();
 | 
				
			||||||
 | 
						struct wl_event_source *s1, *s2;
 | 
				
			||||||
 | 
						int calls_no = 0;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s1 = wl_event_loop_add_signal(loop, SIGUSR1,
 | 
				
			||||||
 | 
									      signal_callback, &calls_no);
 | 
				
			||||||
 | 
						assert(s1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s2 = wl_event_loop_add_signal(loop, SIGUSR1,
 | 
				
			||||||
 | 
									      signal_callback, &calls_no);
 | 
				
			||||||
 | 
						assert(s2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert(wl_event_loop_dispatch(loop, 0) == 0);
 | 
				
			||||||
 | 
						assert(!calls_no);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Try it more times */
 | 
				
			||||||
 | 
						for (i = 0; i < 5; ++i) {
 | 
				
			||||||
 | 
							calls_no = 0;
 | 
				
			||||||
 | 
							kill(getpid(), SIGUSR1);
 | 
				
			||||||
 | 
							assert(wl_event_loop_dispatch(loop, 0) == 0);
 | 
				
			||||||
 | 
							assert(calls_no == 2);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wl_event_source_remove(s1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Try it again  with one source */
 | 
				
			||||||
 | 
						calls_no = 0;
 | 
				
			||||||
 | 
						kill(getpid(), SIGUSR1);
 | 
				
			||||||
 | 
						assert(wl_event_loop_dispatch(loop, 0) == 0);
 | 
				
			||||||
 | 
						assert(calls_no == 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wl_event_source_remove(s2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wl_event_loop_destroy(loop);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
timer_callback(void *data)
 | 
					timer_callback(void *data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue