Skip to content
This repository was archived by the owner on Sep 29, 2025. It is now read-only.

Commit 090ebc1

Browse files
authored
Merge pull request #1774 from reicast/skmp/fix-android4.2-gles-init
load_gles_symbols: Try dlsym first on android. Fixes 4.x rendering!
2 parents b0dac1d + 1b7ce73 commit 090ebc1

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

libswirl/utils/glwrap/gl3w-es.cpp

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,35 @@
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+
49
struct rglgen_sym_map { const char *sym; void *ptr; };
510
extern const struct rglgen_sym_map rglgen_symbol_map[];
611

712
bool 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;

reicast/android-studio/reicast/src/main/jni/Android.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ LOCAL_PRELINK_MODULE := false
8686
LOCAL_MODULE := dc
8787
LOCAL_DISABLE_FORMAT_STRING_CHECKS=true
8888
LOCAL_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
9191
LOCAL_ARM_MODE := arm
9292

0 commit comments

Comments
 (0)