winex11.drv: Use InitOnceExecuteOnce in has_opengl.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2016-04-13 16:31:07 +02:00 committed by Alexandre Julliard
parent 5f522029e1
commit ef6890835d
1 changed files with 12 additions and 9 deletions

View File

@ -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 )