aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/elementary/efl_ui_win.c
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-02-13 17:11:56 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-02-13 19:54:29 +0900
commit358f2898c5ee321caad32a4779cc577272ec9007 (patch)
tree29db74daeae2a1eab890949d657ad41964105b83 /src/lib/elementary/efl_ui_win.c
parentdoxygen: Fix typos & invalid statements in ecore (diff)
downloadefl-358f2898c5ee321caad32a4779cc577272ec9007.tar.gz
win: Make ELM_ACCEL work with msaa, depth & stencil
This makes the env var override and the elementary config global override on accel preference work for not only "gl" but also advanced configs such as "gl:msaa_high:depth:stencil"
Diffstat (limited to 'src/lib/elementary/efl_ui_win.c')
-rw-r--r--src/lib/elementary/efl_ui_win.c52
1 files changed, 22 insertions, 30 deletions
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 707f01f999..3f581d8928 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -4452,34 +4452,28 @@ _elm_win_cb_show(void *data EINA_UNUSED,
_elm_win_state_eval_queue();
}
-static Eina_Bool
-_accel_is_gl(const char *accel)
+static inline const char *
+_efl_ui_win_accel(Efl_Ui_Win_Data *sd)
{
- const char *env = NULL;
- const char *str = NULL;
+ const char *str = sd->accel_pref;
+ const char *env;
/* current elm config */
- if (_elm_config->accel) str = _elm_config->accel;
- if (_elm_accel_preference) str = _elm_accel_preference;
-
- /* constructor function */
- if (accel) str = accel;
+ if (!str)
+ {
+ if (_elm_config->accel) str = _elm_config->accel;
+ if (_elm_accel_preference) str = _elm_accel_preference;
+ }
/* global overrides */
if ((_elm_config->accel_override) && (_elm_config->accel))
str = _elm_config->accel;
+
+ /* env var wins */
env = getenv("ELM_ACCEL");
if (env) str = env;
- if ((str) &&
- ((!strcasecmp(str, "gl")) ||
- (!strcasecmp(str, "opengl")) ||
- (!strcasecmp(str, "3d")) ||
- (!strcasecmp(str, "hw")) ||
- (!strcasecmp(str, "accel")) ||
- (!strcasecmp(str, "hardware"))
- ))
- return EINA_TRUE;
- return EINA_FALSE;
+
+ return str;
}
static inline void
@@ -4515,6 +4509,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
int gl_stencil = _elm_config->gl_stencil;
int gl_msaa = _elm_config->gl_msaa;
Eina_Stringshare *accel = NULL;
+ Eina_Bool is_gl_accel;
int i, p = 0;
Efl_Ui_Win_Data tmp_sd;
@@ -4524,11 +4519,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
/* just to store some data while trying out to create a canvas */
memset(&tmp_sd, 0, sizeof(Efl_Ui_Win_Data));
- if (sd->accel_pref)
- {
- _elm_config_accel_preference_parse(sd->accel_pref, &accel, &gl_depth,
- &gl_stencil, &gl_msaa);
- }
+ is_gl_accel = _elm_config_accel_preference_parse
+ (_efl_ui_win_accel(sd), &accel, &gl_depth, &gl_stencil, &gl_msaa);
switch (type)
{
@@ -4580,7 +4572,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
#ifdef HAVE_ELEMENTARY_X
else if ((disp) && (!strcmp(disp, "x11")))
{
- if (_accel_is_gl(accel))
+ if (is_gl_accel)
{
enginelist[p++] = ELM_OPENGL_X11;
enginelist[p++] = ELM_SOFTWARE_X11;
@@ -4596,7 +4588,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
#ifdef HAVE_ELEMENTARY_WL2
else if ((disp) && (!strcmp(disp, "wl")))
{
- if (_accel_is_gl(accel))
+ if (is_gl_accel)
{
enginelist[p++] = ELM_WAYLAND_EGL;
enginelist[p++] = ELM_WAYLAND_SHM;
@@ -4620,7 +4612,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
#ifdef HAVE_ELEMENTARY_SDL
else if ((disp) && (!strcmp(disp, "sdl")))
{
- if (_accel_is_gl(accel))
+ if (is_hw_accel)
{
enginelist[p++] = ELM_OPENGL_SDL;
enginelist[p++] = ELM_SOFTWARE_SDL;
@@ -4662,7 +4654,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
else if (!_elm_preferred_engine &&
getenv("DISPLAY") && !getenv("ELM_ENGINE"))
{
- if (_accel_is_gl(accel))
+ if (is_gl_accel)
{
enginelist[p++] = ELM_OPENGL_X11;
enginelist[p++] = ELM_SOFTWARE_X11;
@@ -4678,7 +4670,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
else if (!_elm_preferred_engine &&
getenv("WAYLAND_DISPLAY") && !getenv("ELM_ENGINE"))
{
- if (_accel_is_gl(accel))
+ if (is_gl_accel)
{
enginelist[p++] = ELM_WAYLAND_EGL;
enginelist[p++] = ELM_WAYLAND_SHM;
@@ -4692,7 +4684,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
#endif
else
{
- if (_accel_is_gl(accel))
+ if (is_gl_accel)
{
// add all engines with selected engine first - if any
if (ENGINE_GET())