raster pushed a commit to branch master.

commit 604fac41662a945b89086a79815af829faa562fd
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Tue Jul 16 19:39:10 2013 +0900

    ecore-x: vsync_animator_tick_source_set fail if drmWaitVBlank fails
---
 src/lib/ecore_x/xlib/ecore_x_vsync.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/lib/ecore_x/xlib/ecore_x_vsync.c 
b/src/lib/ecore_x/xlib/ecore_x_vsync.c
index a316a33..429f1fe 100644
--- a/src/lib/ecore_x/xlib/ecore_x_vsync.c
+++ b/src/lib/ecore_x/xlib/ecore_x_vsync.c
@@ -117,7 +117,7 @@ static void *drm_lib = NULL;
 
 static Window dri_drm_vsync_root = 0;
 
-static void
+static Eina_Bool
 _dri_drm_tick_schedule(void)
 {
    drmVBlank vbl;
@@ -125,7 +125,8 @@ _dri_drm_tick_schedule(void)
    vbl.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
    vbl.request.sequence = drm_animators_interval;
    vbl.request.signal = 0;
-   sym_drmWaitVBlank(drm_fd, &vbl);
+   if (sym_drmWaitVBlank(drm_fd, &vbl) < 0) return EINA_FALSE;
+   return EINA_TRUE;
 }
 
 static void
@@ -148,8 +149,11 @@ _dri_drm_vblank_handler(int fd EINA_UNUSED,
                         unsigned int usec EINA_UNUSED,
                         void *data EINA_UNUSED)
 {
-   ecore_animator_custom_tick();
-   if (drm_event_is_busy) _dri_drm_tick_schedule();
+   if (drm_event_is_busy)
+     {
+        ecore_animator_custom_tick();
+        _dri_drm_tick_schedule();
+     }
 }
 
 static Eina_Bool
@@ -271,6 +275,13 @@ _dri_drm_init(void)
    drm_evctx.vblank_handler = _dri_drm_vblank_handler;
    drm_evctx.page_flip_handler = NULL;
 
+   if (!_dri_drm_tick_schedule())
+     {
+        close(drm_fd);
+        drm_fd = -1;
+        return 0;
+     }
+   
    dri_drm_fdh = ecore_main_fd_handler_add(drm_fd, ECORE_FD_READ,
                                            _dri_drm_cb, NULL, NULL, NULL);
    if (!dri_drm_fdh)

-- 

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk

Reply via email to