Commit 9e878cb9 authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

winemac: Add registry setting to disable vertical sync.

parent b7c7d094
......@@ -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;
......
......@@ -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);
}
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment