elm can now set vsync for gl windows/clients
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 11 May 2011 09:06:59 +0000 (09:06 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 11 May 2011 09:06:59 +0000 (09:06 +0000)
git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@59321 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

config/default/base.src
config/illume/base.src
config/standard/base.src
src/lib/elm_config.c
src/lib/elm_priv.h
src/lib/elm_win.c

index 1c94485..d5f558a 100644 (file)
@@ -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;
index 1c94485..d5f558a 100644 (file)
@@ -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;
index 0c7d1c7..3b18fa1 100644 (file)
@@ -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;
index 0b8cc4c..0292f2d 100644 (file)
@@ -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);
index 3533214..443ae5b 100644 (file)
@@ -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;
index d036c66..13ecefe 100644 (file)
@@ -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