ecore_evas_drm: Send a spurious pageflip when showing a canvas
authorDerek Foreman <derekf@osg.samsung.com>
Fri, 2 Jun 2017 19:19:39 +0000 (14:19 -0500)
committerDerek Foreman <derekf@osg.samsung.com>
Fri, 2 Jun 2017 20:50:09 +0000 (15:50 -0500)
This is a quick and harmless hack to make sure we don't come back to a
dead compositor on a vc switch.

A proper fix will follow eventually, I promise.

Really.  Would I lie?

src/modules/ecore_evas/engines/drm/ecore_evas_drm.c

index c4446c1..b0e0ff4 100644 (file)
@@ -319,6 +319,8 @@ _drm_pointer_warp(const Ecore_Evas *ee, Evas_Coord x, Evas_Coord y)
 static void
 _drm_show(Ecore_Evas *ee)
 {
+   Ecore_Evas_Engine_Drm_Data *edata;
+
    if ((!ee) || (ee->visible)) return;
 
    ee->should_be_visible = 1;
@@ -344,6 +346,14 @@ _drm_show(Ecore_Evas *ee)
         if (ee->func.fn_focus_in) ee->func.fn_focus_in(ee);
      }
    if (ee->func.fn_show) ee->func.fn_show(ee);
+
+   edata = ee->engine.data;
+   /* HACK: sometimes we still have an animator ticking when we vc switch
+    * so for now we just fire off a flip here to kick it when we come back.
+    * This is just papering over a bug for now until I have time to track
+    * it down properly. :(
+    */
+   ecore_drm2_fb_flip(NULL, edata->output);
 }
 
 static void