1
0
mirror of https://github.com/janet-lang/janet synced 2025-11-09 20:13:02 +00:00

Add janet_loop_fiber C function to run a fiber to completion from C.

This is mainly meant for use as the entry point to a C wrapper for a
janet program. This maeans the programmer doesn't need to use an ifdef
to handle if the event loop is enabled.
This commit is contained in:
Calvin Rose
2021-07-18 09:39:37 -05:00
parent aea1f59f6e
commit 55b8563c08
3 changed files with 22 additions and 13 deletions

View File

@@ -1021,7 +1021,6 @@ int main(int argc, char **argv) {
janet_init_hash_key(hash_key);
#endif
/* Set up VM */
janet_init();
@@ -1048,18 +1047,8 @@ int main(int argc, char **argv) {
JanetFiber *fiber = janet_fiber(janet_unwrap_function(mainfun), 64, 1, mainargs);
fiber->env = env;
#ifdef JANET_EV
janet_gcroot(janet_wrap_fiber(fiber));
janet_schedule(fiber, janet_wrap_nil());
janet_loop();
status = janet_fiber_status(fiber);
#else
Janet out;
status = janet_continue(fiber, janet_wrap_nil(), &out);
if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
janet_stacktrace(fiber, out);
}
#endif
/* Run the fiber in an event loop */
status = janet_loop_fiber(fiber);
/* Deinitialize vm */
janet_deinit();