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++)

-- 


Reply via email to