Module: wine Branch: master Commit: ef6890835d4148dfce9cc7500f3848ba6306ec22 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ef6890835d4148dfce9cc7500f...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Apr 13 16:31:07 2016 +0200
winex11.drv: Use InitOnceExecuteOnce in has_opengl.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winex11.drv/opengl.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index ab29ce4..0f7534e 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -573,18 +573,14 @@ done: return ret; }
-static BOOL has_opengl(void) -{ - static BOOL init_done = FALSE; - static void *opengl_handle; +static void *opengl_handle;
+static BOOL WINAPI init_opengl( INIT_ONCE *once, void *param, void **context ) +{ char buffer[200]; int error_base, event_base; unsigned int i;
- if (init_done) return (opengl_handle != NULL); - init_done = TRUE; - /* No need to load any other libraries as according to the ABI, libGL should be self-sufficient and include all dependencies */ opengl_handle = wine_dlopen(SONAME_LIBGL, RTLD_NOW|RTLD_GLOBAL, buffer, sizeof(buffer)); @@ -592,7 +588,7 @@ static BOOL has_opengl(void) { ERR( "Failed to load libGL: %s\n", buffer ); ERR( "OpenGL support is disabled.\n"); - return FALSE; + return TRUE; }
for (i = 0; i < sizeof(opengl_func_names)/sizeof(opengl_func_names[0]); i++) @@ -757,7 +753,14 @@ static BOOL has_opengl(void) failed: wine_dlclose(opengl_handle, NULL, 0); opengl_handle = NULL; - return FALSE; + return TRUE; +} + +static BOOL has_opengl(void) +{ + static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT; + InitOnceExecuteOnce(&init_once, init_opengl, NULL, NULL); + return opengl_handle != NULL; }
static const char *debugstr_fbconfig( GLXFBConfig fbconfig )