From 9a614071253aad219c4aa3c180b286b3f88a72ea Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Wed, 2 Dec 2020 09:52:52 +0100 Subject: [PATCH] android: use dlsym() first to load gles routines fix attempt for android <= 4.3 Issue #135 --- core/wsi/gl32funcs.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/wsi/gl32funcs.c b/core/wsi/gl32funcs.c index af5272e5c..a958dbc93 100644 --- a/core/wsi/gl32funcs.c +++ b/core/wsi/gl32funcs.c @@ -19,6 +19,9 @@ #include #include #include +#if defined(GLES3) && defined(__ANDROID__) +#include +#endif #include "gl32funcs.h" #include "build.h" @@ -26,7 +29,14 @@ void load_gles_symbols() { #ifdef GLES3 for (int i = 0; rglgen_symbol_map[i].sym != NULL; i++) - *(void **)rglgen_symbol_map[i].ptr = eglGetProcAddress(rglgen_symbol_map[i].sym); + { +#if defined(__ANDROID__) + //try to load via dlsym -- older android (< 4.4?) can't load everything via eglGetProcAddress + *(void **)rglgen_symbol_map[i].ptr = (void*)dlsym(RTLD_DEFAULT, rglgen_symbol_map[i].sym); + if (*(void **)rglgen_symbol_map[i].ptr == NULL) +#endif + *(void **)rglgen_symbol_map[i].ptr = eglGetProcAddress(rglgen_symbol_map[i].sym); + } #endif }