summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-06-02 14:19:39 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-06-02 15:50:09 -0500
commitcc708064979314a94971fa00668ae14e6d1cab43 (patch)
treeef3fa8a22b7e483b2e8101860e298888a552dbec
parent280c82fdd4af1e9d9446983627a9db992b9ba348 (diff)
downloadefl-cc708064979314a94971fa00668ae14e6d1cab43.tar.gz
ecore_evas_drm: Send a spurious pageflip when showing a canvas
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?
-rw-r--r--src/modules/ecore_evas/engines/drm/ecore_evas_drm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
index c4446c11bd..b0e0ff41b9 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -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