derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a4fa55692549f498d032df24dd50c72d2aec39e1
commit a4fa55692549f498d032df24dd50c72d2aec39e1 Author: Derek Foreman <der...@osg.samsung.com> Date: Fri Sep 16 16:12:22 2016 -0500 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. --- src/modules/evas/engines/drm/evas_outbuf.c | 17 +++-------------- 1 file 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 c3f6c4e..cea01ed 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++) --