Register vidya_set_title, which the phone cannot call without it
The ABI exported it, the header declared it nowhere, and the glue registered everything but. On Android that is not a link error: the loader will not answer for a symbol living in a different shared object, which is why jolt_main.c registers each one with Chez by hand, and a name missing from that list fails at the moment a screen asks for it. This one asked as soon as the client had a room to name — the app reached the server, dialled TLS, and died in set-title! with "no entry for vidya_set_title". The header is where the omission started, so that is where the fix goes: 58 symbols exported, 58 declared, 58 registered.
726f7c6 parent: d942053 modified
android/jolt_main.c +1 -0 | @@ -98,6 +98,7 @@ static void register_vidya_api(void) { | ||
| 98 | 98 | Android-specific; they are on this list because the list is the whole of |
| 99 | 99 | what an application can reach on Android, and a symbol left off it is not |
| 100 | 100 | a link error but a call that fails at the moment a screen needs it. */ |
| 101 | + REGISTER_VIDYA(vidya_set_title); | |
| 101 | 102 | REGISTER_VIDYA(vidya_frame_rgba); |
| 102 | 103 | REGISTER_VIDYA(vidya_frame_drop); |
| 103 | 104 | REGISTER_VIDYA(vidya_screen_width); |
| @@ -98,6 +98,7 @@ static void register_vidya_api(void) { | |||
| 98 | Android-specific; they are on this list because the list is the whole of | 98 | Android-specific; they are on this list because the list is the whole of |
| 99 | what an application can reach on Android, and a symbol left off it is not | 99 | what an application can reach on Android, and a symbol left off it is not |
| 100 | a link error but a call that fails at the moment a screen needs it. */ | 100 | a link error but a call that fails at the moment a screen needs it. */ |
| 101 | + REGISTER_VIDYA(vidya_set_title); | ||
| 101 | REGISTER_VIDYA(vidya_frame_rgba); | 102 | REGISTER_VIDYA(vidya_frame_rgba); |
| 102 | REGISTER_VIDYA(vidya_frame_drop); | 103 | REGISTER_VIDYA(vidya_frame_drop); |
| 103 | REGISTER_VIDYA(vidya_screen_width); | 104 | REGISTER_VIDYA(vidya_screen_width); |
modified
crates/jolt-vidya/include/vidya_tree.h +6 -0 | @@ -223,6 +223,12 @@ VIDYA_API int vidya_open_url(const char *url); | ||
| 223 | 223 | VIDYA_API int vidya_pick_image(void); |
| 224 | 224 | VIDYA_API int vidya_picked_image(const char *path); |
| 225 | 225 | |
| 226 | +/* The window's title. Declared here because the ABI exports it and the | |
| 227 | + * Android glue has to name every symbol it registers — on the phone the | |
| 228 | + * loader answers for none of them, so a symbol this header omits is one Jolt | |
| 229 | + * cannot call. */ | |
| 230 | +VIDYA_API void vidya_set_title(const char *title); | |
| 231 | + | |
| 226 | 232 | #ifdef __cplusplus |
| 227 | 233 | } |
| 228 | 234 | #endif |
| @@ -223,6 +223,12 @@ VIDYA_API int vidya_open_url(const char *url); | |||
| 223 | VIDYA_API int vidya_pick_image(void); | 223 | VIDYA_API int vidya_pick_image(void); |
| 224 | VIDYA_API int vidya_picked_image(const char *path); | 224 | VIDYA_API int vidya_picked_image(const char *path); |
| 225 | 225 | ||
| 226 | +/* The window's title. Declared here because the ABI exports it and the | ||
| 227 | + * Android glue has to name every symbol it registers — on the phone the | ||
| 228 | + * loader answers for none of them, so a symbol this header omits is one Jolt | ||
| 229 | + * cannot call. */ | ||
| 230 | +VIDYA_API void vidya_set_title(const char *title); | ||
| 231 | + | ||
| 226 | #ifdef __cplusplus | 232 | #ifdef __cplusplus |
| 227 | } | 233 | } |
| 228 | #endif | 234 | #endif |