#include "util.h" #include "wl.h" #include #include #include static int world_hot_reload_same_state_action_(world_t *world, void *ignore) { (void)ignore; return world_hot_reload_same_state(world); } void montis_do_request_hot_reload(void *plugv) { world_t *world = plugv; size_t n = world->n_requested_actions++; if (n < MAX_QUEUED_ACTIONS) { world->requested_actions[n].action = world_hot_reload_same_state_action_; world->requested_actions[n].arg_dtor = NULL; } } static int world_do_log(world_t *world, void *chrs) { (void)world; char *str = chrs; puts(str); return 0; } void montis_do_request_log(void *plugv, const char *str) { world_t *world = plugv; size_t n = world->n_requested_actions++; if (n < MAX_QUEUED_ACTIONS) { world->requested_actions[n].action = world_do_log; world->requested_actions[n].str_arg = strdup(str); world->requested_actions[n].arg_dtor = free; } } static int arkworld_do_exit(void *plugv, int ec) { (void)plugv; exit(ec); return 0; } void montis_do_request_exit(void *plugv, int ec) { world_t *world = plugv; size_t n = world->n_requested_actions++; if (n < MAX_QUEUED_ACTIONS) { world->requested_actions[n].action = (int (*)(world_t *, void *))arkworld_do_exit; world->requested_actions[n].int_arg = ec; world->requested_actions[n].arg_dtor = NULL; } } void *arkworld_get_seat(void *ctx) { struct montis_server *server = wl_container_of(ctx, server, world); return server->seat; }