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)

-- 


Reply via email to