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.
macos/v1.5.9
Emmanuele Bassi 8 years ago
parent 9e46b8e659
commit bac9400bb0
  1. 26
      src/dispatch_common.c

@ -642,16 +642,11 @@ epoxy_get_bootstrap_proc_address(const char *name)
void * void *
epoxy_get_proc_address(const char *name) epoxy_get_proc_address(const char *name)
{ {
#ifdef _WIN32
return wglGetProcAddress(name);
#elif defined(__APPLE__)
return epoxy_gl_dlsym(name);
#else
if (epoxy_current_context_is_glx()) {
return glXGetProcAddressARB((const GLubyte *)name);
} else {
#if PLATFORM_HAS_EGL #if PLATFORM_HAS_EGL
GLenum egl_api = epoxy_egl_get_current_gl_context_api(); GLenum egl_api = EGL_NONE;
if (!epoxy_current_context_is_glx())
egl_api = epoxy_egl_get_current_gl_context_api();
switch (egl_api) { switch (egl_api) {
case EGL_OPENGL_API: case EGL_OPENGL_API:
@ -661,9 +656,18 @@ epoxy_get_proc_address(const char *name)
break; break;
} }
#endif #endif
}
errx(1, "Couldn't find current GLX or EGL context.\n"); #if defined(_WIN32)
return wglGetProcAddress(name);
#elif defined(__APPLE__)
return epoxy_gl_dlsym(name);
#elif PLATFORM_HAS_GLX
if (epoxy_current_context_is_glx())
return glXGetProcAddressARB((const GLubyte *)name);
#endif #endif
errx(1, "Couldn't find current GLX or EGL context.\n");
return NULL;
} }
WRAPPER_VISIBILITY (void) WRAPPER_VISIBILITY (void)

Loading…
Cancel
Save