nandi/jolt-nativepublic Fork 0
726f7c6
Commits
Clone
git clone https://git.rickub.com/nandi/jolt-native.git
git clone ssh://git@rickub.com/nandi/jolt-native.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

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.
nandi committed 2026-08-31T18:12:50-07:00 Browse files
726f7c6 parent: d942053
modified android/jolt_main.c +1 -0
@@ -98,6 +98,7 @@ static void register_vidya_api(void) {
9898 Android-specific; they are on this list because the list is the whole of
9999 what an application can reach on Android, and a symbol left off it is not
100100 a link error but a call that fails at the moment a screen needs it. */
101+ REGISTER_VIDYA(vidya_set_title);
101102 REGISTER_VIDYA(vidya_frame_rgba);
102103 REGISTER_VIDYA(vidya_frame_drop);
103104 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 of98 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 not99 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);
223223 VIDYA_API int vidya_pick_image(void);
224224 VIDYA_API int vidya_picked_image(const char *path);
225225
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+
226232 #ifdef __cplusplus
227233 }
228234 #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 __cplusplus232 #ifdef __cplusplus
227 }233 }
228 #endif234 #endif