static void
_evas_outbuf_cb_pageflip(void *data)
{
- Outbuf *ob;
+ Outbuf *ob, *last=NULL;
Ecore_Drm_Fb *fb;
struct gbm_bo *bo;
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;
/* 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")))
{