diff options
| author | Josh Rahm <joshuarahm@gmail.com> | 2026-01-07 00:26:32 -0700 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2026-01-07 00:26:32 -0700 |
| commit | 4847aa0b4a6f945c24e1523e729652271bbc9680 (patch) | |
| tree | 9ffac8b1934153cbde6f6814277f80c337d937b1 /cross/src/runtime_requests.c | |
| parent | 37e5037b68fb35276f0c426779f61aa278d5b21b (diff) | |
| download | montis-4847aa0b4a6f945c24e1523e729652271bbc9680.tar.gz montis-4847aa0b4a6f945c24e1523e729652271bbc9680.tar.bz2 montis-4847aa0b4a6f945c24e1523e729652271bbc9680.zip | |
[rebrand] Arken -> Ark, Plugin -> Soul, Erebor -> Cross
Diffstat (limited to 'cross/src/runtime_requests.c')
| -rw-r--r-- | cross/src/runtime_requests.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/cross/src/runtime_requests.c b/cross/src/runtime_requests.c new file mode 100644 index 0000000..adb2b2f --- /dev/null +++ b/cross/src/runtime_requests.c @@ -0,0 +1,69 @@ +#include "util.h" +#include "wl.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +static int soul_hot_reload_same_state_action_(soul_t *soul, void *ignore) +{ + (void)ignore; + return soul_hot_reload_same_state(soul); +} + +void montis_do_request_hot_reload(void *plugv) +{ + soul_t *soul = plugv; + + size_t n = soul->n_requested_actions++; + if (n < MAX_QUEUED_ACTIONS) { + soul->requested_actions[n].action = soul_hot_reload_same_state_action_; + soul->requested_actions[n].arg_dtor = NULL; + } +} + +static int soul_do_log(soul_t *soul, void *chrs) +{ + (void)soul; + char *str = chrs; + puts(str); + return 0; +} + +void montis_do_request_log(void *plugv, const char *str) +{ + soul_t *soul = plugv; + + size_t n = soul->n_requested_actions++; + if (n < MAX_QUEUED_ACTIONS) { + soul->requested_actions[n].action = soul_do_log; + soul->requested_actions[n].str_arg = strdup(str); + soul->requested_actions[n].arg_dtor = free; + } +} + +static int arksoul_do_exit(void *plugv, int ec) +{ + (void)plugv; + exit(ec); + return 0; +} + +void montis_do_request_exit(void *plugv, int ec) +{ + soul_t *soul = plugv; + + size_t n = soul->n_requested_actions++; + if (n < MAX_QUEUED_ACTIONS) { + soul->requested_actions[n].action = + (int (*)(soul_t *, void *))arksoul_do_exit; + soul->requested_actions[n].int_arg = ec; + soul->requested_actions[n].arg_dtor = NULL; + } +} + +void *arksoul_get_seat(void *ctx) +{ + struct montis_server *server = wl_container_of(ctx, server, soul); + return server->seat; +} |