1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- From d010922282580a32dfebcda12ee1c307b3ef6005 Mon Sep 17 00:00:00 2001
- From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
- Date: Mon, 18 Jan 2016 09:49:55 -0800
- Subject: [PATCH 4/4] darwin: Use GLX instead of OpenGL.framework if it is the
- current context
- Also makes a stab at similar support for Win32
- anholt/libepoxy#63
- Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
- Fetched from pull #81 on github for libepoxy:
- https://github.com/anholt/libepoxy/pull/81/commits
- Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
- ---
- src/dispatch_common.c | 29 ++++++++++++++++-------------
- 1 file changed, 16 insertions(+), 13 deletions(-)
- diff --git a/src/dispatch_common.c b/src/dispatch_common.c
- index 163d348..cb9f76a 100644
- --- a/src/dispatch_common.c
- +++ b/src/dispatch_common.c
- @@ -482,16 +482,20 @@ epoxy_glx_dlsym(const char *name)
- void *
- epoxy_gl_dlsym(const char *name)
- {
- -#ifdef _WIN32
- +#if defined(_WIN32) || defined(__APPLE__)
- +if (!epoxy_current_context_is_glx()) {
- +# if defined(_WIN32)
- return do_dlsym(&api.gl_handle, "OPENGL32", name, true);
- -#elif defined(__APPLE__)
- +# elif defined(__APPLE__)
- return do_dlsym(&api.gl_handle,
- "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL",
- name, true);
- -#else
- +# endif
- +}
- +#endif
- +
- /* There's no library for desktop GL support independent of GLX. */
- return epoxy_glx_dlsym(name);
- -#endif
- }
-
- void *
- @@ -615,7 +619,7 @@ epoxy_get_bootstrap_proc_address(const char *name)
- */
- #if PLATFORM_HAS_GLX
- if (api.glx_handle && glXGetCurrentContext())
- - return epoxy_gl_dlsym(name);
- + return epoxy_glx_dlsym(name);
- #endif
-
- /* If epoxy hasn't loaded any API-specific library yet, try to
- @@ -644,22 +648,17 @@ epoxy_get_bootstrap_proc_address(const char *name)
- }
- #endif /* PLATFORM_HAS_EGL */
-
- - /* Fall back to GLX */
- + /* Fall back to the platform default */
- return epoxy_gl_dlsym(name);
- }
-
- void *
- epoxy_get_proc_address(const char *name)
- {
- -#ifdef _WIN32
- - return wglGetProcAddress(name);
- -#elif defined(__APPLE__)
- - return epoxy_gl_dlsym(name);
- -#else
- #if PLATFORM_HAS_GLX
- if (epoxy_current_context_is_glx()) {
- return glXGetProcAddressARB((const GLubyte *)name);
- - } else
- + }
- #endif /* PLATFORM_HAS_GLX */
- #if PLATFORM_HAS_EGL
- {
- @@ -674,8 +673,12 @@ epoxy_get_proc_address(const char *name)
- }
- }
- #endif /* PLATFORM_HAS_EGL */
- +#if defined(_WIN32)
- + return wglGetProcAddress(name);
- +#elif defined(__APPLE__)
- + return epoxy_gl_dlsym(name);
- +#endif
- errx(1, "Couldn't find current GLX or EGL context.\n");
- -#endif /* _WIN32 | __APPLE__*/
- }
-
- WRAPPER_VISIBILITY (void)
|