/*
* Lookup a EGL or GLES symbol
*/
-void * __libegl_sym(const char *symbol, bool pub)
+void * __libegl_sym(const char *symbol)
{
void *proc;
- /*
- * Public symbols are EGL core functions and those defined in dekstop GL
- * ABI. Troubles come from the latter.
+ /* Always try dlsym before eglGetProcAddress as spec 3.10 says
+ * implementation may choose to also export extension functions
+ * publicly.
*/
- if (pub) {
- proc = dlsym(RTLD_NEXT, symbol);
- if (!proc && symbol[0] == 'g' && symbol[1] == 'l')
- proc = (void *) __eglGetProcAddress(symbol);
- }
- else {
+ proc = dlsym(RTLD_NEXT, symbol);
+ if (!proc && symbol[0] == 'g' && symbol[1] == 'l')
proc = (void *) __eglGetProcAddress(symbol);
- if (!proc && symbol[0] == 'g' && symbol[1] == 'l')
- proc = dlsym(RTLD_NEXT, symbol);
- }
return proc;
}
print '# endif'
print '#else /* !RETRACE */'
print '# if defined(TRACE_EGL)'
- print '# define __getPublicProcAddress(name) __libegl_sym(name, true)'
- print '# define __getPrivateProcAddress(name) __libegl_sym(name, false)'
- print ' void * __libegl_sym(const char *symbol, bool pub);'
+ print '# define __getPublicProcAddress(name) __libegl_sym(name)'
+ print '# define __getPrivateProcAddress(name) __libegl_sym(name)'
+ print ' void * __libegl_sym(const char *symbol);'
print '# elif defined(_WIN32)'
print ' PROC __getPublicProcAddress(LPCSTR lpProcName);'
print '# define __getPrivateProcAddress(name) __wglGetProcAddress(name)'