From 3e8c906de11fdd53afd463410eaccaab87e0542c Mon Sep 17 00:00:00 2001 From: raster Date: Sun, 26 Dec 2010 10:15:28 +0000 Subject: [PATCH] missing support for swapinterval api in glx. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@55754 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/modules/engines/gl_x11/evas_engine.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/modules/engines/gl_x11/evas_engine.c b/src/modules/engines/gl_x11/evas_engine.c index fb61381..1f27e1e 100644 --- a/src/modules/engines/gl_x11/evas_engine.c +++ b/src/modules/engines/gl_x11/evas_engine.c @@ -66,6 +66,7 @@ int (*glsym_glXWaitVideoSync) (int a, int b, unsigned int *c) = NULL; XID (*glsym_glXCreatePixmap) (Display *a, void *b, Pixmap c, const int *d) = NULL; void (*glsym_glXDestroyPixmap) (Display *a, XID b) = NULL; void (*glsym_glXQueryDrawable) (Display *a, XID b, int c, unsigned int *d) = NULL; +void (*glsym_glxSwapInterval) (int a) = NULL; #endif static void @@ -138,6 +139,11 @@ _sym_init(void) FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawable", glsym_func_void); FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableEXT", glsym_func_void); FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableARB", glsym_func_void); + + FINDSYM(glsym_glxSwapInterval, "glxSwapInterval", glsym_func_void); + FINDSYM(glsym_glxSwapInterval, "glxSwapIntervalEXT", glsym_func_void); + FINDSYM(glsym_glxSwapInterval, "glxSwapIntervalARB", glsym_func_void); + FINDSYM(glsym_glxSwapInterval, "glxSwapIntervalSGI", glsym_func_void); #endif } @@ -658,12 +664,24 @@ eng_output_flush(void *data) #ifdef VSYNC_TO_SCREEN if ((re->info->vsync)/* || (1)*/) { - if ((glsym_glXGetVideoSync) && (glsym_glXWaitVideoSync)) + if (glsym_glxSwapInterval) { - unsigned int rc; - - glsym_glXGetVideoSync(&rc); - glsym_glXWaitVideoSync(1, 0, &rc); + if (!re->vsync) + { + if (re->info->vsync) glsym_glxSwapInterval(1); + else glsym_glxSwapInterval(0); + re->vsync = 1; + } + } + else + { + if ((glsym_glXGetVideoSync) && (glsym_glXWaitVideoSync)) + { + unsigned int rc; + + glsym_glXGetVideoSync(&rc); + glsym_glXWaitVideoSync(1, 0, &rc); + } } } # endif -- 2.7.4