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);
|
wl_event_loop_destroy(loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MSEC_TO_USEC(msec) ((msec) * 1000)
|
||||||
|
|
||||||
struct timer_update_context {
|
struct timer_update_context {
|
||||||
struct wl_event_source *source1, *source2;
|
struct wl_event_source *source1, *source2;
|
||||||
int count;
|
int count;
|
||||||
|
|
@ -291,6 +293,18 @@ TEST(event_loop_timer_updates)
|
||||||
|
|
||||||
context.count = 0;
|
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);
|
gettimeofday(&start_time, NULL);
|
||||||
wl_event_loop_dispatch(loop, 20);
|
wl_event_loop_dispatch(loop, 20);
|
||||||
gettimeofday(&end_time, NULL);
|
gettimeofday(&end_time, NULL);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue