raster pushed a commit to branch efl-1.11. http://git.enlightenment.org/core/efl.git/commit/?id=26783f45dd419873f4dc2a9ab3a1e4b421f2c4ca
commit 26783f45dd419873f4dc2a9ab3a1e4b421f2c4ca Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Wed Aug 27 18:26:58 2014 +0900 ecore vsync - work around old kernels by blacklisting them this is a bug workaround apparently old kernels that seems to get vsync and timestamps wrong. 3.14 kernels and up only for now @bug --- src/lib/ecore_x/xlib/ecore_x_vsync.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/lib/ecore_x/xlib/ecore_x_vsync.c b/src/lib/ecore_x/xlib/ecore_x_vsync.c index ec41d0d..1924dfc 100644 --- a/src/lib/ecore_x/xlib/ecore_x_vsync.c +++ b/src/lib/ecore_x/xlib/ecore_x_vsync.c @@ -345,6 +345,27 @@ _drm_init(void) */ return 0; } + // only do this on new kernels = let's say 3.14 and up. 3.16 definitely + // works + { + Eina_Bool ok = EINA_FALSE; + + FILE *fp = fopen("/proc/sys/kernel/osrelease", "r"); + if (fp) + { + if (fgets(buf, sizeof(buf), fp)) + { + int vmaj = 0, vmin = 0; + + if (sscanf(buf, "%i.%i.%*s", &vmaj, &vmin) == 2) + { + if ((vmaj >= 3) && (vmin >= 14)) ok = EINA_TRUE; + } + } + fclose(fp); + } + if (!ok) return 0; + } snprintf(buf, sizeof(buf), "/dev/dri/card1"); if (stat(buf, &st) == 0) --
