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="