aboutsummaryrefslogtreecommitdiff
path: root/rt/src/plugin.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2026-01-01 23:41:11 -0700
committerJosh Rahm <joshuarahm@gmail.com>2026-01-01 23:41:11 -0700
commit418d2b2b0829ed17e523867896ea321fc2b3a79b (patch)
treeda0fad8ae1d46bb30ab2e2ea1fe4fa4f7c51aed6 /rt/src/plugin.c
parent1df0b552f17f15942a350def6736d5535e545d4c (diff)
downloadmontis-418d2b2b0829ed17e523867896ea321fc2b3a79b.tar.gz
montis-418d2b2b0829ed17e523867896ea321fc2b3a79b.tar.bz2
montis-418d2b2b0829ed17e523867896ea321fc2b3a79b.zip
[refactor] Remove the foregin interface.
The plugin will just call c functions through the FFI.
Diffstat (limited to 'rt/src/plugin.c')
-rw-r--r--rt/src/plugin.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/rt/src/plugin.c b/rt/src/plugin.c
index 0799b9c..3edf486 100644
--- a/rt/src/plugin.c
+++ b/rt/src/plugin.c
@@ -1,15 +1,14 @@
#include "plugin.h"
-#include "foreign_intf.h"
#include "wl.h"
-#include <sys/stat.h>
-#include <unistd.h>
#include <ctype.h>
#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
/* Utility function for showing the marshalled states as hex code */
static void shx(uint8_t *state, uint32_t sz)
@@ -59,7 +58,7 @@ static int plugin_hot_reload_same_state_action_(plugin_t *plugin, void *ignore)
return plugin_hot_reload_same_state(plugin);
}
-void do_request_hot_reload(void *plugv)
+void montis_do_request_hot_reload(void *plugv)
{
plugin_t *plugin = plugv;
@@ -77,7 +76,7 @@ static int plugin_do_log(plugin_t *plugin, void *chrs)
return 0;
}
-void do_request_log(void *plugv, const char *str)
+void montis_do_request_log(void *plugv, const char *str)
{
plugin_t *plugin = plugv;
@@ -89,27 +88,28 @@ void do_request_log(void *plugv, const char *str)
}
}
-static int plugin_do_exit(void *plugv, int ec)
+static int montis_plugin_do_exit(void *plugv, int ec)
{
exit(ec);
return 0;
}
-void do_request_exit(void *plugv, int ec)
+void montis_do_request_exit(void *plugv, int ec)
{
plugin_t *plugin = plugv;
size_t n = plugin->n_requested_actions++;
if (n < 8) {
plugin->requested_actions[n].action =
- (int (*)(plugin_t *, void *))plugin_do_exit;
+ (int (*)(plugin_t *, void *))montis_plugin_do_exit;
plugin->requested_actions[n].int_arg = ec;
plugin->requested_actions[n].arg_dtor = NULL;
}
}
-static void* plugin_get_seat(void* ctx) {
- struct montis_server* server = wl_container_of(ctx, server, plugin);
+void *montis_plugin_get_seat(void *ctx)
+{
+ struct montis_server *server = wl_container_of(ctx, server, plugin);
return server->seat;
}
@@ -136,13 +136,7 @@ static int load_plugin_from_file_(int argc, char **argv, const char *filename,
plugin->argc = argc;
plugin->argv = argv;
- plugin->foreign_intf.ctx = plugin;
- plugin->foreign_intf.request_hot_reload = do_request_hot_reload;
- plugin->foreign_intf.do_log = do_request_log;
- plugin->foreign_intf.request_exit = do_request_exit;
- plugin->foreign_intf.get_seat = plugin_get_seat;
-
- plugin->plugin_load(plugin->argc, plugin->argv, &plugin->foreign_intf);
+ plugin->plugin_load(plugin->argc, plugin->argv);
end:
return ec;
}
@@ -231,7 +225,7 @@ int plugin_hot_reload(int argc, char **argv, const char *filepath,
}
printf("Hot starting plugin ...\n");
- plugin->state = plugin->plugin_hot_start(marshalled_state, sz);
+ plugin->state = plugin->plugin_hot_start(plugin, marshalled_state, sz);
fail:
free(marshalled_state);
@@ -261,6 +255,6 @@ void plugin_run_requested_actions(plugin_t *plugin)
void plugin_cold_start(plugin_t *plugin)
{
lock(plugin);
- plugin->state = plugin->plugin_cold_start();
+ plugin->state = plugin->plugin_cold_start(plugin);
unlock(plugin);
}