diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2016-09-16 16:12:22 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2016-09-16 16:12:22 -0500 |
commit | a4fa55692549f498d032df24dd50c72d2aec39e1 (patch) | |
tree | e5b81ed127ef169846335693840fd9f37083ec20 | |
parent | 60f3f5fbfd8b60aceedeafd279eab51ccd78c72f (diff) | |
download | efl-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.c | 17 |
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++) |