Ken Thomases : winemac: Add registry setting to disable vertical sync.

Alexandre Julliard julliard at winehq.org
Tue Jul 2 14:31:29 CDT 2013


Module: wine
Branch: master
Commit: 9e878cb92c41866b7239928b8f728ac2752e475c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9e878cb92c41866b7239928b8f728ac2752e475c

Author: Ken Thomases <ken at codeweavers.com>
Date:   Tue Jul  2 01:25:50 2013 -0500

winemac: Add registry setting to disable vertical sync.

---

 dlls/winemac.drv/macdrv.h      |    1 +
 dlls/winemac.drv/macdrv_main.c |    4 ++++
 dlls/winemac.drv/opengl.c      |   11 +++++++----
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
index 4c761af..3c7bea5 100644
--- a/dlls/winemac.drv/macdrv.h
+++ b/dlls/winemac.drv/macdrv.h
@@ -36,6 +36,7 @@
 
 
 extern BOOL skip_single_buffer_flushes DECLSPEC_HIDDEN;
+extern BOOL allow_vsync DECLSPEC_HIDDEN;
 
 
 extern const char* debugstr_cf(CFTypeRef t) DECLSPEC_HIDDEN;
diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c
index 29dc0b7..6bae707 100644
--- a/dlls/winemac.drv/macdrv_main.c
+++ b/dlls/winemac.drv/macdrv_main.c
@@ -48,6 +48,7 @@ DWORD thread_data_tls_index = TLS_OUT_OF_INDEXES;
 int topmost_float_inactive = TOPMOST_FLOAT_INACTIVE_NONFULLSCREEN;
 int capture_displays_for_fullscreen = 0;
 BOOL skip_single_buffer_flushes = FALSE;
+BOOL allow_vsync = TRUE;
 
 
 /**************************************************************************
@@ -160,6 +161,9 @@ static void setup_options(void)
     if (!get_config_key(hkey, appkey, "SkipSingleBufferFlushes", buffer, sizeof(buffer)))
         skip_single_buffer_flushes = IS_OPTION_TRUE(buffer[0]);
 
+    if (!get_config_key(hkey, appkey, "AllowVerticalSync", buffer, sizeof(buffer)))
+        allow_vsync = IS_OPTION_TRUE(buffer[0]);
+
     if (appkey) RegCloseKey(appkey);
     if (hkey) RegCloseKey(hkey);
 }
diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c
index abd563a..0922371 100644
--- a/dlls/winemac.drv/opengl.c
+++ b/dlls/winemac.drv/opengl.c
@@ -2988,9 +2988,12 @@ static void load_extensions(void)
     register_extension("WGL_EXT_extensions_string");
     opengl_funcs.ext.p_wglGetExtensionsStringEXT = macdrv_wglGetExtensionsStringEXT;
 
-    register_extension("WGL_EXT_swap_control");
-    opengl_funcs.ext.p_wglSwapIntervalEXT = macdrv_wglSwapIntervalEXT;
-    opengl_funcs.ext.p_wglGetSwapIntervalEXT = macdrv_wglGetSwapIntervalEXT;
+    if (allow_vsync)
+    {
+        register_extension("WGL_EXT_swap_control");
+        opengl_funcs.ext.p_wglSwapIntervalEXT = macdrv_wglSwapIntervalEXT;
+        opengl_funcs.ext.p_wglGetSwapIntervalEXT = macdrv_wglGetSwapIntervalEXT;
+    }
 
     /* Presumably identical to [W]GL_ARB_framebuffer_sRGB, above, but clients may
        check for either, so register them separately. */
@@ -3245,7 +3248,7 @@ static BOOL create_context(struct wgl_context *context, CGLContextObj share)
        only make sense for double-buffered contexts, though.  In theory, for
        single-buffered contexts, there's no such thing as a swap.  But OS X
        will synchronize flushes of single-buffered contexts if this is set. */
-    if (pf->double_buffer)
+    if (pf->double_buffer && allow_vsync)
         swap_interval = 1;
     else
         swap_interval = 0;




More information about the wine-cvs mailing list