From 1ff024c9bbaeae5c66d4016b36fcb2b650d8ce0d Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 8 Jan 2019 14:41:30 +0000 Subject: [PATCH] elm win - we forgot to add gl_drm to possible elm win engines this was forgotten it seems, so add it alongside drm engine etc. so we can do accelerated gl in the "fb" via drm too for elm app windows. --- src/lib/elementary/efl_ui_win.c | 20 ++++++++++++++++---- src/lib/elementary/elm_config.c | 1 + src/lib/elementary/elm_priv.h | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 02ac728dd2..64a78514df 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -5104,6 +5104,10 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U else if ((disp) && (!strcmp(disp, "fb"))) { #ifdef HAVE_ELEMENTARY_DRM + if (is_gl_accel) + { + enginelist[p++] = ELM_GL_DRM; + } enginelist[p++] = ELM_DRM; #endif #ifdef HAVE_ELEMENTARY_FB @@ -5160,6 +5164,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U enginelist[p++] = ELM_WAYLAND_EGL; #endif #ifdef HAVE_ELEMENTARY_DRM + enginelist[p++] = ELM_GL_DRM; enginelist[p++] = ELM_DRM; #endif #ifdef HAVE_ELEMENTARY_FB @@ -5226,6 +5231,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U enginelist[p++] = ELM_WAYLAND_EGL; #endif #ifdef HAVE_ELEMENTARY_DRM + enginelist[p++] = ELM_GL_DRM; enginelist[p++] = ELM_DRM; #endif #ifdef HAVE_ELEMENTARY_SDL @@ -5290,6 +5296,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U tmp_sd.ee = ecore_evas_buffer_new(1, 1); else if (!strcmp(enginelist[i], ELM_DRM)) tmp_sd.ee = ecore_evas_drm_new(NULL, 0, 0, 0, 1, 1); + else if (!strcmp(enginelist[i], ELM_GL_DRM)) + tmp_sd.ee = ecore_evas_gl_drm_new(NULL, 0, 0, 0, 1, 1); else if (!strncmp(enginelist[i], "shot:", 5)) { tmp_sd.ee = ecore_evas_buffer_new(1, 1); @@ -5535,7 +5543,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U if ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_ON) || ((_elm_config->softcursor_mode == ELM_SOFTCURSOR_MODE_AUTO) && ((engine) && - ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))))) + ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)) + || (!strcmp(engine, ELM_GL_DRM)))))) { Evas_Object *o; Evas_Coord mw = 1, mh = 1, hx = 0, hy = 0; @@ -5604,7 +5613,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U _elm_win_count++; if ((engine) && - ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)))) + ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM)) + || (!strcmp(engine, ELM_GL_DRM)))) { TRAP(sd, fullscreen_set, 1); } @@ -6087,7 +6097,8 @@ _efl_ui_win_fullscreen_set(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd, Eina_Bool f // YYY: handle if sd->img_obj if (engine_name && ((!strcmp(engine_name, ELM_SOFTWARE_FB)) || - (!strcmp(engine_name, ELM_DRM)))) + (!strcmp(engine_name, ELM_DRM)) || + (!strcmp(engine_name, ELM_GL_DRM)))) { // these engines... can ONLY be fullscreen return; @@ -6112,7 +6123,8 @@ _efl_ui_win_fullscreen_get(const Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd) if (engine_name && ((!strcmp(engine_name, ELM_SOFTWARE_FB)) || - (!strcmp(engine_name, ELM_DRM)))) + (!strcmp(engine_name, ELM_DRM)) || + (!strcmp(engine_name, ELM_GL_DRM)))) { // these engines... can ONLY be fullscreen return EINA_TRUE; diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index 7970a92e2d..ac8d5d10b6 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -60,6 +60,7 @@ const char *_elm_engines[] = { "wayland_egl", "drm", "ddraw", + "gl_drm", NULL }; diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 31c6341364..010643d7b5 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -190,6 +190,7 @@ extern const char *_elm_engines[]; # define ELM_WAYLAND_EGL (_elm_engines[10]) # define ELM_DRM (_elm_engines[11]) # define ELM_SOFTWARE_DDRAW (_elm_engines[12]) +# define ELM_GL_DRM (_elm_engines[13]) # define ELM_FONT_TOKEN_STYLE ":style="