mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-10-29 05:40:16 -04:00 
			
		
		
		
	tests: fix event_loop_timer_updates
It may happen that there's some time between the first and the other timer expire. If epoll_wait is called after the first timer expired and the other not, it returns only one source to dispatch and therefore the test fails. To fix that, sleep a while before wl_event_loop_dispatch() to make sure both timers expired. To be 100% sure, we could use poll() before calling wl_event_loop_dispatch(), but that would need modification in libwayland (need to get the source's fd somehow) https://bugs.freedesktop.org/show_bug.cgi?id=80594 Signed-off-by: Marek Chalupa <mchqwerty@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
		
							parent
							
								
									12ec657014
								
							
						
					
					
						commit
						b24fa4c821
					
				
					 1 changed files with 14 additions and 0 deletions
				
			
		|  | @ -240,6 +240,8 @@ TEST(event_loop_timer) | |||
| 	wl_event_loop_destroy(loop); | ||||
| } | ||||
| 
 | ||||
| #define MSEC_TO_USEC(msec) ((msec) * 1000) | ||||
| 
 | ||||
| struct timer_update_context { | ||||
| 	struct wl_event_source *source1, *source2; | ||||
| 	int count; | ||||
|  | @ -291,6 +293,18 @@ TEST(event_loop_timer_updates) | |||
| 
 | ||||
| 	context.count = 0; | ||||
| 
 | ||||
| 	/* Since calling the functions between source2's update and
 | ||||
| 	 * wl_event_loop_dispatch() takes some time, it may happen | ||||
| 	 * that only one timer expires until we call epoll_wait. | ||||
| 	 * This naturally means that only one source is dispatched | ||||
| 	 * and the test fails. To fix that, sleep 15 ms before | ||||
| 	 * calling wl_event_loop_dispatch(). That should be enough | ||||
| 	 * for the second timer to expire. | ||||
| 	 * | ||||
| 	 * https://bugs.freedesktop.org/show_bug.cgi?id=80594
 | ||||
| 	 */ | ||||
| 	usleep(MSEC_TO_USEC(15)); | ||||
| 
 | ||||
| 	gettimeofday(&start_time, NULL); | ||||
| 	wl_event_loop_dispatch(loop, 20); | ||||
| 	gettimeofday(&end_time, NULL); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Marek Chalupa
						Marek Chalupa