summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-09-16 16:12:22 -0500
committerDerek Foreman <derekf@osg.samsung.com>2016-09-16 16:12:22 -0500
commita4fa55692549f498d032df24dd50c72d2aec39e1 (patch)
treee5b81ed127ef169846335693840fd9f37083ec20
parent60f3f5fbfd8b60aceedeafd279eab51ccd78c72f (diff)
downloadefl-a4fa55692549f498d032df24dd50c72d2aec39e1.tar.gz
evas-drm: update drm engine recovery from all buffers used
Use the relatively new buffer release API to free up buffers instead of immediately going nuclear and blowing away all buffer ages.
-rw-r--r--src/modules/evas/engines/drm/evas_outbuf.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/src/modules/evas/engines/drm/evas_outbuf.c b/src/modules/evas/engines/drm/evas_outbuf.c
index c3f6c4e159..cea01ed6fe 100644
--- a/src/modules/evas/engines/drm/evas_outbuf.c
+++ b/src/modules/evas/engines/drm/evas_outbuf.c
@@ -247,21 +247,10 @@ _outbuf_fb_assign(Outbuf *ob)
int i;
ob->priv.draw = _outbuf_fb_wait(ob);
-
- if (!ob->priv.draw)
+ while (!ob->priv.draw)
{
- WRN("No Free Buffers. Dropping a frame");
- for (i = 0; i < ob->priv.num; i++)
- {
- if (ob->priv.ofb[i].valid)
- {
- ecore_drm2_fb_busy_set(ob->priv.ofb[i].fb, EINA_FALSE);
- ob->priv.ofb[i].age = 0;
- ob->priv.ofb[i].drawn = EINA_FALSE;
- }
- }
-
- return EINA_FALSE;
+ ecore_drm2_fb_release(ob->priv.output);
+ ob->priv.draw = _outbuf_fb_wait(ob);
}
for (i = 0; i < ob->priv.num; i++)