devilhorns pushed a commit to branch master.

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

commit 50c47e36ebb37866637a34b70339cc20f848b6bf
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Thu Apr 16 10:22:44 2015 -0400

    ecore-drm: Add pending_flip field to Ecore_Drm_Fb
    
    Summary: This adds a pending_flip field to Ecore_Drm_Fb structure so
    that when we schedule a pageflip event we can wait until the flip is
    complete before trying to reuse the buffer again.
    
    @fix
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 src/lib/ecore_drm/Ecore_Drm.h    | 1 +
 src/lib/ecore_drm/ecore_drm_fb.c | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index a6c9bf0..8e837e0 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -66,6 +66,7 @@ typedef struct _Ecore_Drm_Fb
    int fd;
    void *mmap;
    int w, h;
+   Eina_Bool pending_flip : 1;
 } Ecore_Drm_Fb;
 
 struct _Ecore_Drm_Device
diff --git a/src/lib/ecore_drm/ecore_drm_fb.c b/src/lib/ecore_drm/ecore_drm_fb.c
index ea466ca..cfe4168 100644
--- a/src/lib/ecore_drm/ecore_drm_fb.c
+++ b/src/lib/ecore_drm/ecore_drm_fb.c
@@ -226,6 +226,12 @@ ecore_drm_fb_send(Ecore_Drm_Device *dev, Ecore_Drm_Fb *fb, 
Ecore_Drm_Pageflip_Cb
           {
              ERR("Cannot flip crtc %u for connector %u: %m",
                  output->crtc_id, output->conn_id);
+             continue;
           }
+
+        fb->pending_flip = EINA_TRUE;
      }
+
+   while (fb->pending_flip)
+     drmHandleEvent(dev->drm.fd, &dev->drm_ctx);
 }

-- 


Reply via email to