ecore-evas-drm: Check if vblank is supported
authorChristopher Michael <cp.michael@samsung.com>
Wed, 22 May 2019 11:37:36 +0000 (07:37 -0400)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 30 May 2019 08:17:52 +0000 (17:17 +0900)
Small patch to check if the video driver supports drmWaitVBlank. If
not, we can fall back to timer based animators and avoid freezing (due
to usage of vsync'd animators).

@fix

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

index b5921b0..6988ae8 100644 (file)
@@ -1033,6 +1033,17 @@ _ecore_evas_new_internal(const char *device, int x, int y, int w, int h, Eina_Bo
    ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_evas_drm_engine_func;
    ee->engine.data = edata;
 
+   if (!ecore_drm2_vblank_supported(edata->dev))
+     {
+        ee->engine.func->fn_animator_register = NULL;
+        ee->engine.func->fn_animator_unregister = NULL;
+     }
+   else
+     {
+        ee->engine.func->fn_animator_register = _drm_animator_register;
+        ee->engine.func->fn_animator_unregister = _drm_animator_unregister;
+     }
+
    /* FIXME */
    /* if (edata->device) ee->name = strdup(edata->device); */