From 90e5fd831d11a0d378999b90a3c24e6ecef2a284 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 3 Feb 2021 02:26:54 +0000 Subject: [PATCH] ecore-x - vsync - also log the direct device timestamp if it goes back --- src/lib/ecore_x/ecore_x_vsync.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_x/ecore_x_vsync.c b/src/lib/ecore_x/ecore_x_vsync.c index 26454a2ae9..5ad828d0fe 100644 --- a/src/lib/ecore_x/ecore_x_vsync.c +++ b/src/lib/ecore_x/ecore_x_vsync.c @@ -384,12 +384,20 @@ _drm_vblank_handler(int fd EINA_UNUSED, if (pframe != frame) { #define DELTA_COUNT 10 - double t = (double)sec + ((double)usec / 1000000); double tnow = ecore_time_get(); + double t = (double)sec + ((double)usec / 1000000); + unsigned long long tusec, ptusec; static double tdelta[DELTA_COUNT]; static double tdelta_avg = 0.0; static int tdelta_n = 0; + static unsigned int psec = 0, pusec = 0; + tusec = ((unsigned long long)sec) * 1000000 + usec; + ptusec = ((unsigned long long)psec) * 1000000 + pusec; + if (tusec <= ptusec) + fprintf(stderr, + "EEEEEEK! drm time went backwards! %u.%06u -> %u.%06u\n", + psec, pusec, sec, usec); if (t > tnow) { if (tdelta_n > DELTA_COUNT) @@ -420,6 +428,8 @@ _drm_vblank_handler(int fd EINA_UNUSED, _drm_fail_count = 0; _drm_send_time(t); pframe = frame; + psec = sec; + pusec = usec; } } else