From: Sangjin Lee Date: Thu, 3 Dec 2015 06:49:10 +0000 (+0900) Subject: gl_drm: Fix release framebuffer in pageflip handle X-Git-Tag: accepted/tizen/mobile/20151208.123515~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3278a9fbcecfcf880b428ff53a8545d2a18dcca7;p=platform%2Fupstream%2Fefl.git gl_drm: Fix release framebuffer in pageflip handle Change-Id: Ide673be0c2eef10346962bc7935a7657ed262b39 Signed-off-by: Sangjin Lee --- diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c b/src/modules/evas/engines/gl_drm/evas_outbuf.c index c71c75b..f97fc4e 100644 --- a/src/modules/evas/engines/gl_drm/evas_outbuf.c +++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c @@ -92,7 +92,7 @@ _evas_outbuf_fb_get(Ecore_Drm_Device *dev, struct gbm_bo *bo) static void _evas_outbuf_cb_pageflip(void *data) { - Outbuf *ob; + Outbuf *ob, *last=NULL; Ecore_Drm_Fb *fb; struct gbm_bo *bo; @@ -101,10 +101,12 @@ _evas_outbuf_cb_pageflip(void *data) bo = ob->priv.bo[ob->priv.curr]; if (!bo) return; + if (ob->priv.last != -1) last = ob->priv.bo[ob->priv.last]; + fb = _evas_outbuf_fb_get(ob->info->info.dev, bo); if (fb) fb->pending_flip = EINA_FALSE; - gbm_surface_release_buffer(ob->surface, bo); + if (last) gbm_surface_release_buffer(ob->surface, last); ob->priv.last = ob->priv.curr; ob->priv.curr = (ob->priv.curr + 1) % ob->priv.num; @@ -400,6 +402,7 @@ evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Engine_Swap_ /* ob->vsync = info->info.vsync; */ ob->swap_mode = swap_mode; ob->priv.num = 4; + ob->priv.last = -1; if ((num = getenv("EVAS_GL_DRM_BUFFERS"))) {