evas-drm: update drm engine recovery from all buffers used
authorDerek Foreman <derekf@osg.samsung.com>
Fri, 16 Sep 2016 21:12:22 +0000 (16:12 -0500)
committerDerek Foreman <derekf@osg.samsung.com>
Fri, 16 Sep 2016 21:12:22 +0000 (16:12 -0500)
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

index c3f6c4e..cea01ed 100644 (file)
@@ -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++)