From bac9400bb04ce56c7a71a490e175284106743698 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 18 Jan 2017 15:36:54 +0000 Subject: [PATCH] Use EGL to retrieve pointers if available EGL is available on different platforms, so we should favor it, if available. This also allows us to decouple EGL from GLX, and use the former without the latter being compiled in. --- src/dispatch_common.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/dispatch_common.c b/src/dispatch_common.c index 74ad645..30e69ca 100644 --- a/src/dispatch_common.c +++ b/src/dispatch_common.c @@ -642,28 +642,32 @@ epoxy_get_bootstrap_proc_address(const char *name) void * epoxy_get_proc_address(const char *name) { -#ifdef _WIN32 +#if PLATFORM_HAS_EGL + GLenum egl_api = EGL_NONE; + + if (!epoxy_current_context_is_glx()) + egl_api = epoxy_egl_get_current_gl_context_api(); + + switch (egl_api) { + case EGL_OPENGL_API: + case EGL_OPENGL_ES_API: + return eglGetProcAddress(name); + case EGL_NONE: + break; + } +#endif + +#if defined(_WIN32) return wglGetProcAddress(name); #elif defined(__APPLE__) return epoxy_gl_dlsym(name); -#else - if (epoxy_current_context_is_glx()) { +#elif PLATFORM_HAS_GLX + if (epoxy_current_context_is_glx()) return glXGetProcAddressARB((const GLubyte *)name); - } else { -#if PLATFORM_HAS_EGL - GLenum egl_api = epoxy_egl_get_current_gl_context_api(); - - switch (egl_api) { - case EGL_OPENGL_API: - case EGL_OPENGL_ES_API: - return eglGetProcAddress(name); - case EGL_NONE: - break; - } #endif - } errx(1, "Couldn't find current GLX or EGL context.\n"); -#endif + + return NULL; } WRAPPER_VISIBILITY (void)