Files
Hiisi/hiisi/main.cpp
2025-03-16 17:45:09 +02:00

51 lines
1008 B
C++

#include "hiisi.h"
#include "heload/heload.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <link.h>
#include <signal.h>
#include <atomic>
std::atomic<bool> reload_requested(false);
void reload_signal_handler(int) {
reload_requested = true;
}
void reload_modules() {
if (he_reload_module("libhiisi-engine.so") != 0) {
fprintf(stderr, "Failed to reload libhiisi-engine.so. Exiting.\n");
exit(EXIT_FAILURE);
}
}
int main(int argc, char **argv) {
signal(SIGUSR1, reload_signal_handler);
if (he_init() != 0) {
fprintf(stderr, "Failed to initialize heload. Exiting.\n");
exit(EXIT_FAILURE);
}
he_print_module_infos();
hiisi::EngineData state;
hiisi::init(&state, argc, argv);
while (hiisi::event(&state)) {
hiisi::iterate(&state);
if (reload_requested) {
reload_modules();
reload_requested = false;
}
}
he_deinit();
return 0;
}