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