diff options
Diffstat (limited to 'src/libEGL.c')
-rw-r--r-- | src/libEGL.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/libEGL.c b/src/libEGL.c index 45e8ffb..f2d9585 100644 --- a/src/libEGL.c +++ b/src/libEGL.c @@ -1,28 +1,21 @@ #include <dlfcn.h> +#include <string.h> #include <EGL/egl.h> -#define GLFW_INCLUDE_NONE #include <GLFW/glfw3.h> #define GLFW_EXPOSE_NATIVE_X11 #include <GLFW/glfw3native.h> struct ANativeWindow { + char header[4]; GLFWwindow *glfw; }; -EGLDisplay -eglGetDisplay(EGLNativeDisplayType native_display) -{ - static union { EGLDisplay (*fun)(EGLNativeDisplayType); void *ptr; } orig; - if (!orig.ptr) orig.ptr = dlsym(RTLD_NEXT, "eglGetDisplay"); - return orig.fun(glfwGetX11Display()); -} - EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, NativeWindowType native_window, EGLint const *attrib_list) { static union { EGLSurface (*fun)(EGLDisplay, EGLConfig, NativeWindowType, EGLint const*); void *ptr; } orig; if (!orig.ptr) orig.ptr = dlsym(RTLD_NEXT, "eglCreateWindowSurface"); struct ANativeWindow *window = (struct ANativeWindow*)native_window; - return orig.fun(display, config, glfwGetX11Window(window->glfw), attrib_list); + return orig.fun(display, config, (!memcmp(window->header, "andr", sizeof(window->header)) ? glfwGetX11Window(window->glfw) : native_window), attrib_list); } |