From 18410e17ef455eef24c15d66e9e251d7766807f3 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 27 Aug 2014 01:18:12 +0900 Subject: [PATCH] ecore vsync - don't schedule vsync moe than needed - add debug too this doesn't fix anything, but in going over the code finding driver bug i notice we schedule once too often and we need more easy to use debug info --- src/lib/ecore_x/xlib/ecore_x_vsync.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_x/xlib/ecore_x_vsync.c b/src/lib/ecore_x/xlib/ecore_x_vsync.c index 992e81d..a854af8 100644 --- a/src/lib/ecore_x/xlib/ecore_x_vsync.c +++ b/src/lib/ecore_x/xlib/ecore_x_vsync.c @@ -103,6 +103,11 @@ typedef struct char val; } Msg; +#if 0 +# define D(args...) fprintf(stderr, ##args) +#else +# define D(args...) +#endif static Eina_Bool _drm_tick_schedule(void) @@ -171,7 +176,6 @@ _drm_vblank_handler(int fd EINA_UNUSED, if (pframe != frame) { _drm_send_time((double)sec + ((double)usec / 1000000)); - _drm_tick_schedule(); pframe = frame; } } @@ -226,7 +230,11 @@ _drm_tick_core(void *data EINA_UNUSED, Ecore_Thread *thread) int ret; struct timeval tv; - if (!_drm_tick_schedule()) _drm_fail_count = 999999; + if (!_drm_tick_schedule()) + { + D("@%1.5f schedule fail\n", ecore_time_get()); + _drm_fail_count = 999999; + } max_fd = 0; FD_ZERO(&rfds); FD_ZERO(&wfds); @@ -238,9 +246,11 @@ _drm_tick_core(void *data EINA_UNUSED, Ecore_Thread *thread) tv.tv_usec = _drm_fail_time2 * 1000000; else tv.tv_usec = _drm_fail_time * 1000000; + D("@%1.5f wait %ims\n", ecore_time_get(), (int)(tv.tv_usec /1000)); ret = select(max_fd + 1, &rfds, &wfds, &exfds, &tv); if ((ret == 1) && (FD_ISSET(drm_fd, &rfds))) { + D("@%1.5f have event\n", ecore_time_get()); sym_drmHandleEvent(drm_fd, &drm_evctx); _drm_fail_count = 0; } @@ -249,6 +259,7 @@ _drm_tick_core(void *data EINA_UNUSED, Ecore_Thread *thread) // timeout _drm_send_time(ecore_time_get()); _drm_fail_count++; + D("@%1.5f fail count %i\n", ecore_time_get(), _drm_fail_count); } } } -- 2.7.4