This repository was archived by the owner on Sep 29, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +23
-3
lines changed
reicast/android-studio/reicast/src/main/jni Expand file tree Collapse file tree 2 files changed +23
-3
lines changed Original file line number Diff line number Diff line change 1+ #include " types.h"
12#include " gl3w.h"
23#include " khronos/EGL/egl.h"
34
5+ #if defined(SUPPORT_EGL) && defined(_ANDROID)
6+ #include < dlfcn.h>
7+ #endif
8+
49struct rglgen_sym_map { const char *sym; void *ptr; };
510extern const struct rglgen_sym_map rglgen_symbol_map[];
611
712bool load_gles_symbols ()
813{
914 #if defined(SUPPORT_EGL)
1015 for (int i = 0 ; rglgen_symbol_map[i].sym != NULL ; i++)
11- *(void **)rglgen_symbol_map[i].ptr = (void *)eglGetProcAddress (rglgen_symbol_map[i].sym );
12-
16+ {
17+ *(void **)rglgen_symbol_map[i].ptr = nullptr ;
18+ #if defined(_ANDROID)
19+ // try to load via dlsym -- older android can't load everything via eglGetProcAddress
20+ *(void **)rglgen_symbol_map[i].ptr = (void *)dlsym (RTLD_DEFAULT, rglgen_symbol_map[i].sym );
21+ #endif
22+ // try to load via eglGetProcAddress
23+ if (!*(void **)rglgen_symbol_map[i].ptr ) {
24+ *(void **)rglgen_symbol_map[i].ptr = (void *)eglGetProcAddress (rglgen_symbol_map[i].sym );
25+ }
26+
27+ // print a warning if failed
28+ if (!*(void **)rglgen_symbol_map[i].ptr )
29+ {
30+ printf (" WARN: load_gles_symbols: failed to resolve %s\n " , rglgen_symbol_map[i].sym );
31+ }
32+ }
1333 return true ;
1434 #else
1535 return false ;
Original file line number Diff line number Diff line change @@ -86,7 +86,7 @@ LOCAL_PRELINK_MODULE := false
8686LOCAL_MODULE := dc
8787LOCAL_DISABLE_FORMAT_STRING_CHECKS =true
8888LOCAL_ASFLAGS += -fPIC -fvisibility=hidden
89- LOCAL_LDLIBS += -llog -lEGL -lz -landroid
89+ LOCAL_LDLIBS += -llog -lEGL -lz -landroid -ldl
9090# -Wl,-Map,./res/raw/syms.mp3
9191LOCAL_ARM_MODE := arm
9292
You can’t perform that action at this time.
0 commit comments