diff options
author | Chris Michael <cp.michael@samsung.com> | 2015-11-05 08:58:46 -0500 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2015-11-05 09:01:36 -0500 |
commit | ae7a243c99c071a92582fda0a2dfdd27e3a39e1b (patch) | |
tree | a019a7c0b992f440d45834f251c319442716008a | |
parent | 483cec924bff9bd2a803dcb2fef161759f302f8d (diff) | |
download | efl-ae7a243c99c071a92582fda0a2dfdd27e3a39e1b.tar.gz |
ecore-drm: Fix issue of duplicate page flips
Summary: If we already have a pending pageflip scheduled for a given
framebuffer, don't reschedule another one. This also includes a minor
fix when mmap'ing the framebuffer (previously was also mapped
PROT_READ).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r-- | src/lib/ecore_drm/ecore_drm_fb.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/ecore_drm/ecore_drm_fb.c b/src/lib/ecore_drm/ecore_drm_fb.c index 68c7e94bb7..385d3eadcd 100644 --- a/src/lib/ecore_drm/ecore_drm_fb.c +++ b/src/lib/ecore_drm/ecore_drm_fb.c @@ -98,9 +98,8 @@ ecore_drm_fb_create(Ecore_Drm_Device *dev, int width, int height) goto map_err; } - fb->mmap = - mmap(0, fb->size, PROT_WRITE | PROT_READ, MAP_SHARED, - dev->drm.fd, marg.offset); + fb->mmap = + mmap(0, fb->size, PROT_WRITE, MAP_SHARED, dev->drm.fd, marg.offset); if (fb->mmap == MAP_FAILED) { ERR("Could not mmap framebuffer space: %m"); @@ -231,6 +230,8 @@ ecore_drm_fb_send(Ecore_Drm_Device *dev, Ecore_Drm_Fb *fb, Ecore_Drm_Pageflip_Cb if (eina_list_count(dev->outputs) < 1) return; + if (fb->pending_flip) return; + if (!(cb = calloc(1, sizeof(Ecore_Drm_Pageflip_Callback)))) return; |