From 4d45eb36f0873f48672f02328693872c86a55815 Mon Sep 17 00:00:00 2001
From: Tobias Scheuer <tobias@scheuer42.de>
Date: Sun, 29 Mar 2020 12:24:59 +0200
Subject: [PATCH] initialize wgl extension string only once

---
 src/win/wgl_disp.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/win/wgl_disp.c b/src/win/wgl_disp.c
index b8e0878fc..893d56041 100644
--- a/src/win/wgl_disp.c
+++ b/src/win/wgl_disp.c
@@ -68,15 +68,20 @@ typedef struct WGL_DISPLAY_PARAMETERS {
 
 static bool is_wgl_extension_supported(const char *extension, HDC dc)
 {
-   _ALLEGRO_wglGetExtensionsStringARB_t _wglGetExtensionsStringARB;
+   static _ALLEGRO_wglGetExtensionsStringARB_t _wglGetExtensionsStringARB;
+   static ext_is_initialized = false; // this is a simple blocker, would not be safe for multi-threading
    int ret;
 
    /* XXX deprecated in OpenGL 3.0 */
    if (!glGetString(GL_EXTENSIONS))
       return false;
 
-   _wglGetExtensionsStringARB = (_ALLEGRO_wglGetExtensionsStringARB_t)
-      wglGetProcAddress("wglGetExtensionsStringARB");
+   if(!ext_is_initialized)
+   {
+       _wglGetExtensionsStringARB = (_ALLEGRO_wglGetExtensionsStringARB_t)
+           wglGetProcAddress("wglGetExtensionsStringARB");
+       ext_is_initialized = true;
+   }
    if (!_wglGetExtensionsStringARB)
       return false;
 
-- 
2.24.1.windows.2

