targets/egl: Improve st_GL.so loading.

When the application is not linked to any libGL*.so, loading st_GL.so
would give

  /usr/local/lib/egl/st_GL.so: undefined symbol: _glapi_tls_Context

In that case, load libGL.so and try again.  This works because
util_dl_open loads with RTLD_GLOBAL.

Fix "clear" OpenGL ES 1.1 demo.
This commit is contained in:
Chia-I Wu 2010-12-10 10:44:03 +08:00
parent 6efd963a23
commit 83bdd402aa
1 changed files with 15 additions and 0 deletions

View File

@ -237,6 +237,21 @@ get_st_api_full(enum st_api_type api, enum st_profile_type profile)
break;
}
/* try again with libGL.so loaded */
if (!stmod->stapi && api == ST_API_OPENGL) {
struct util_dl_library *glapi = util_dl_open("libGL" UTIL_DL_EXT);
if (glapi) {
_eglLog(_EGL_DEBUG, "retry with libGL" UTIL_DL_EXT " loaded");
/* skip the last name (which is NULL) */
for (i = 0; i < count - 1; i++) {
if (load_st_module(stmod, names[i], symbol))
break;
}
util_dl_close(glapi);
}
}
if (!stmod->stapi) {
EGLint level = (egl_g3d_loader.profile_masks[api]) ?
_EGL_WARNING : _EGL_DEBUG;