diff --git a/legacy/elementary/config/default/base.src b/legacy/elementary/config/default/base.src index 1c94485821..d5f558a67b 100644 --- a/legacy/elementary/config/default/base.src +++ b/legacy/elementary/config/default/base.src @@ -1,6 +1,7 @@ group "Elm_Config" struct { value "config_version" int: 65539; value "engine" string: "software_x11"; + value "vsync" uchar: 0; value "thumbscroll_enable" uchar: 1; value "thumbscroll_threshold" int: 24; value "thumbscroll_momentum_threshold" double: 100.0; diff --git a/legacy/elementary/config/illume/base.src b/legacy/elementary/config/illume/base.src index 1c94485821..d5f558a67b 100644 --- a/legacy/elementary/config/illume/base.src +++ b/legacy/elementary/config/illume/base.src @@ -1,6 +1,7 @@ group "Elm_Config" struct { value "config_version" int: 65539; value "engine" string: "software_x11"; + value "vsync" uchar: 0; value "thumbscroll_enable" uchar: 1; value "thumbscroll_threshold" int: 24; value "thumbscroll_momentum_threshold" double: 100.0; diff --git a/legacy/elementary/config/standard/base.src b/legacy/elementary/config/standard/base.src index 0c7d1c7dcb..3b18fa10af 100644 --- a/legacy/elementary/config/standard/base.src +++ b/legacy/elementary/config/standard/base.src @@ -1,6 +1,7 @@ group "Elm_Config" struct { value "config_version" int: 65539; value "engine" string: "software_x11"; + value "vsync" uchar: 0; value "thumbscroll_enable" uchar: 0; value "thumbscroll_threshold" int: 4; value "thumbscroll_momentum_threshold" double: 100.0; diff --git a/legacy/elementary/src/lib/elm_config.c b/legacy/elementary/src/lib/elm_config.c index 0b8cc4ccc7..0292f2d60e 100644 --- a/legacy/elementary/src/lib/elm_config.c +++ b/legacy/elementary/src/lib/elm_config.c @@ -563,6 +563,7 @@ _desc_init(void) #define D _config_edd ELM_CONFIG_VAL(D, T, config_version, T_INT); ELM_CONFIG_VAL(D, T, engine, T_STRING); + ELM_CONFIG_VAL(D, T, vsync, T_UCHAR); ELM_CONFIG_VAL(D, T, thumbscroll_enable, T_UCHAR); ELM_CONFIG_VAL(D, T, thumbscroll_threshold, T_INT); ELM_CONFIG_VAL(D, T, thumbscroll_momentum_threshold, T_DOUBLE); @@ -1112,6 +1113,7 @@ _config_load(void) _elm_config = ELM_NEW(Elm_Config); _elm_config->config_version = ELM_CONFIG_VERSION; _elm_config->engine = eina_stringshare_add("software_x11"); + _elm_config->vsync = 0; _elm_config->thumbscroll_enable = EINA_TRUE; _elm_config->thumbscroll_threshold = 24; _elm_config->thumbscroll_momentum_threshold = 100.0; @@ -1436,6 +1438,9 @@ _env_get(void) else if ((!strncmp(s, "shot:", 5))) eina_stringshare_replace(&_elm_config->engine, s); } + + s = getenv("ELM_VSYNC"); + if (s) _elm_config->vsync = !!atoi(s); s = getenv("ELM_THUMBSCROLL_ENABLE"); if (s) _elm_config->thumbscroll_enable = !!atoi(s); diff --git a/legacy/elementary/src/lib/elm_priv.h b/legacy/elementary/src/lib/elm_priv.h index 3533214604..443ae5be0c 100644 --- a/legacy/elementary/src/lib/elm_priv.h +++ b/legacy/elementary/src/lib/elm_priv.h @@ -78,6 +78,7 @@ struct _Elm_Config { int config_version; const char *engine; + unsigned char vsync; unsigned char thumbscroll_enable; int thumbscroll_threshold; double thumbscroll_momentum_threshold; diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index d036c66e87..13ecefe497 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -1371,7 +1371,20 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) */ else if (ENGINE_COMPARE(ELM_OPENGL_X11)) { - win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1); + int opt[10]; + int opt_i = 0; + + if (_elm_config->vsync) + { + opt[opt_i] = ECORE_EVAS_GL_X11_OPT_VSYNC; + opt_i++; + opt[opt_i] = 1; + opt_i++; + } + if (opt_i > 0) + win->ee = ecore_evas_gl_x11_options_new(NULL, 0, 0, 0, 1, 1, opt); + else + win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1); FALLBACK_TRY("OpenGL"); #ifdef HAVE_ELEMENTARY_X win->client_message_handler = ecore_event_handler_add