Module: wine Branch: master Commit: b7c7d094709af3429eaec6df28ef13050e250624 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b7c7d094709af3429eaec6df28...
Author: Ken Thomases ken@codeweavers.com Date: Tue Jul 2 01:25:32 2013 -0500
winemac: Add registry setting to control glFlush() skipping for single-buffer contexts and disable it by default.
---
dlls/winemac.drv/macdrv.h | 3 +++ dlls/winemac.drv/macdrv_main.c | 4 ++++ dlls/winemac.drv/opengl.c | 3 ++- 3 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h index 0f39e5d..4c761af 100644 --- a/dlls/winemac.drv/macdrv.h +++ b/dlls/winemac.drv/macdrv.h @@ -35,6 +35,9 @@ #include "wine/gdi_driver.h"
+extern BOOL skip_single_buffer_flushes DECLSPEC_HIDDEN; + + extern const char* debugstr_cf(CFTypeRef t) DECLSPEC_HIDDEN;
static inline CGRect cgrect_from_rect(RECT rect) diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c index 470553e..29dc0b7 100644 --- a/dlls/winemac.drv/macdrv_main.c +++ b/dlls/winemac.drv/macdrv_main.c @@ -47,6 +47,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;
/************************************************************************** @@ -156,6 +157,9 @@ static void setup_options(void) if (!get_config_key(hkey, appkey, "CaptureDisplaysForFullscreen", buffer, sizeof(buffer))) capture_displays_for_fullscreen = IS_OPTION_TRUE(buffer[0]);
+ if (!get_config_key(hkey, appkey, "SkipSingleBufferFlushes", buffer, sizeof(buffer))) + skip_single_buffer_flushes = 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 69f94e2..abd563a 100644 --- a/dlls/winemac.drv/opengl.c +++ b/dlls/winemac.drv/opengl.c @@ -3051,9 +3051,10 @@ static BOOL init_opengl(void) #define REDIRECT(func) \ do { p##func = opengl_funcs.gl.p_##func; opengl_funcs.gl.p_##func = macdrv_##func; } while(0) REDIRECT(glCopyPixels); - REDIRECT(glFlush); REDIRECT(glReadPixels); REDIRECT(glViewport); + if (skip_single_buffer_flushes) + REDIRECT(glFlush); #undef REDIRECT
/* redirect some OpenGL extension functions */