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); } --