devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b5425dc51a56992f3941ede35a3ff52d63021087

commit b5425dc51a56992f3941ede35a3ff52d63021087
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Fri Mar 11 13:48:44 2016 -0600

    ecore_drm: Disable custom tick if we can't wait for vblank
    
    If we fail to schedule a VBlank event, then we should disable custom
    ticks and fallback to timer-based animators. This patch fixes some
    issues with Intel Atom based setups where rendering would fail when
    using custom animators.
    
    @fix
---
 src/lib/ecore_drm/ecore_drm_device.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_drm/ecore_drm_device.c 
b/src/lib/ecore_drm/ecore_drm_device.c
index 2ea9f42..62f54ec 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -36,6 +36,8 @@
 static Eina_List *drm_devices;
 static int ticking = 0;
 
+static void _ecore_drm_tick_source_set(Ecore_Drm_Device *dev);
+
 static void
 _ecore_drm_tick_schedule(Ecore_Drm_Device *dev)
 {
@@ -46,7 +48,11 @@ _ecore_drm_tick_schedule(Ecore_Drm_Device *dev)
    vbl.request.type = (DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT);
    vbl.request.sequence = 1;
    vbl.request.signal = (unsigned long)dev;
-   drmWaitVBlank(dev->drm.fd, &vbl);
+   if (drmWaitVBlank(dev->drm.fd, &vbl) < 0)
+     {
+        WRN("Vblank failed, disabling custom ticks");
+        _ecore_drm_tick_source_set(NULL);
+     }
 }
 
 static void
@@ -65,6 +71,13 @@ _ecore_drm_tick_end(void *data EINA_UNUSED)
 static void
 _ecore_drm_tick_source_set(Ecore_Drm_Device *dev)
 {
+   if (!dev)
+     {
+        ecore_animator_custom_source_tick_begin_callback_set(NULL, NULL);
+        ecore_animator_custom_source_tick_end_callback_set(NULL, NULL);
+        ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);
+        return;
+     }
    ecore_animator_custom_source_tick_begin_callback_set
      (_ecore_drm_tick_begin, dev);
    ecore_animator_custom_source_tick_end_callback_set

-- 


Reply via email to