aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Bates <jbates@chromium.org>2021-06-17 11:02:56 -0700
committerJohn Bates <jbates@chromium.org>2021-07-02 11:57:17 -0700
commit7975061f6b47217df8309536f5dad697cadd5251 (patch)
tree8217465aee70eeed3d2879064830f3cba95b90f3
parentad723a7a75ee387bcc07430090677c58882763ff (diff)
downloadlibepoxy-7975061f6b47217df8309536f5dad697cadd5251.tar.gz
Allow libopengl.so to be used when GLX_LIB is missing
This maintains compatibility with previous behavior of always using GLX_LIB if it is found. The only change is when there is no GLX_LIB. Previous behavior when no GLX_LIB: - abort. New behavior when no GLX_LIB: - Try to load libOpenGL.so as gl_handle (glx_handle remains NULL). - Else, abort. Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
-rw-r--r--src/dispatch_common.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/dispatch_common.c b/src/dispatch_common.c
index 9977a02..592df38 100644
--- a/src/dispatch_common.c
+++ b/src/dispatch_common.c
@@ -670,13 +670,23 @@ epoxy_load_gl(void)
get_dlopen_handle(&api.gl_handle, OPENGL_LIB, true, true);
#else
+ // Prefer GLX_LIB over OPENGL_LIB to maintain existing behavior.
+ // Using the inverse ordering OPENGL_LIB -> GLX_LIB, causes issues such as:
+ // https://github.com/anholt/libepoxy/issues/240 (apitrace missing calls)
+ // https://github.com/anholt/libepoxy/issues/252 (Xorg boot crash)
+ get_dlopen_handle(&api.glx_handle, GLX_LIB, false, true);
+ api.gl_handle = api.glx_handle;
+
#if defined(OPENGL_LIB)
if (!api.gl_handle)
- get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false, true);
+ get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false, true);
#endif
- get_dlopen_handle(&api.glx_handle, GLX_LIB, true, true);
- api.gl_handle = api.glx_handle;
+ if (!api.gl_handle) {
+ fprintf(stderr, "Couldn't open %s or %s\n", GLX_LIB, OPENGL_LIB);
+ abort();
+ }
+
#endif
}