From af70c4ff6d51a64bca4f11d7dd61bb29c96ef0b7 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Wed, 22 May 2019 07:37:36 -0400 Subject: [PATCH] ecore-evas-drm: Check if vblank is supported 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 | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 2a79e6b7f1..a843f26589 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -1031,6 +1031,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); */