From 12260dabb9db574be460e12e8e9c343de576f413 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Wed, 17 May 2017 17:31:13 -0500 Subject: [PATCH] ecore_drm2: Better handle flip failure round 2 If the buffer being flipped to is the one already on screen then releasing it on flip failure will leave it on scanout with no references. The next time a buffer is queued it will be removed from scanout and deleted. Not good. Fix T5462 --- src/lib/ecore_drm2/ecore_drm2_fb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c index 3c00a98..f2c54e3 100644 --- a/src/lib/ecore_drm2/ecore_drm2_fb.c +++ b/src/lib/ecore_drm2/ecore_drm2_fb.c @@ -572,7 +572,8 @@ ecore_drm2_fb_flip(Ecore_Drm2_Fb *fb, Ecore_Drm2_Output *output) if (ret) { - _release_buffer(output, &output->prep); + if (output->prep.fb != output->current.fb) + _release_buffer(output, &output->prep); return ret; } output->pending.fb = output->prep.fb; -- 2.7.4