diff options
author | John Bates <jbates@chromium.org> | 2021-06-17 11:02:56 -0700 |
---|---|---|
committer | John Bates <jbates@chromium.org> | 2021-07-02 11:57:17 -0700 |
commit | 7975061f6b47217df8309536f5dad697cadd5251 (patch) | |
tree | 8217465aee70eeed3d2879064830f3cba95b90f3 /src/dispatch_common.c | |
parent | ad723a7a75ee387bcc07430090677c58882763ff (diff) | |
download | libepoxy-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>
Diffstat (limited to 'src/dispatch_common.c')
-rw-r--r-- | src/dispatch_common.c | 16 |
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 } |