diff --git a/clients/simple-dmabuf-feedback.c b/clients/simple-dmabuf-feedback.c index 0100c0a5..516cdbc8 100644 --- a/clients/simple-dmabuf-feedback.c +++ b/clients/simple-dmabuf-feedback.c @@ -32,6 +32,7 @@ #include #include #include +#include #include "shared/helpers.h" #include "shared/platform.h" @@ -667,8 +668,6 @@ redraw(void *data, struct wl_callback *callback, uint32_t time) window->display->output.height); wl_surface_set_opaque_region(window->surface, region); wl_region_destroy(region); - - window->n_redraws++; } static const struct wl_callback_listener frame_listener = { @@ -1451,6 +1450,9 @@ main(int argc, char **argv) struct display *display; struct window *window; int ret = 0; + struct timespec start_time, current_time; + const time_t MAX_TIME_SECONDS = 3; + time_t delta_time = 0; fprintf(stderr, "This client was written with the purpose of manually test " \ "Weston's dma-buf feedback implementation. See main() " \ @@ -1459,9 +1461,14 @@ main(int argc, char **argv) display = create_display(); window = create_window(display); + clock_gettime(CLOCK_MONOTONIC, &start_time); + redraw(window, NULL, 0); - while (ret != -1 && window->n_redraws < 200) + while (ret != -1 && delta_time < MAX_TIME_SECONDS) { ret = wl_display_dispatch(display->display); + clock_gettime(CLOCK_MONOTONIC, ¤t_time); + delta_time = current_time.tv_sec - start_time.tv_sec; + } destroy_window(window); destroy_display(display);