not quite yet working live reload
This commit is contained in:
@@ -1,15 +1,23 @@
|
||||
#include "hiisi.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <elf.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <dlfcn.h>
|
||||
#include <link.h>
|
||||
#include <signal.h>
|
||||
#include <atomic>
|
||||
|
||||
struct app_state {};
|
||||
|
||||
Engine load_hiisi(const char *name) {
|
||||
std::atomic<bool> reload_requested(false);
|
||||
|
||||
void reload_signal_handler(int) {
|
||||
reload_requested = true;
|
||||
}
|
||||
|
||||
Engine load_hiisi() {
|
||||
const char *name = "build/hiisi/libhiisi-engine.so";
|
||||
void *mod = dlopen(name, RTLD_NOW);
|
||||
|
||||
Lmid_t list;
|
||||
@@ -82,10 +90,11 @@ Engine load_hiisi(const char *name) {
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
app_state state;
|
||||
void *state_ptr = &state;
|
||||
signal(SIGUSR1, reload_signal_handler);
|
||||
|
||||
Engine hiisi = load_hiisi("build/hiisi/libhiisi-engine.so");
|
||||
EngineData state;
|
||||
|
||||
Engine hiisi = load_hiisi();
|
||||
if (!hiisi.module) {
|
||||
printf("%s\n", dlerror());
|
||||
return 1;
|
||||
@@ -94,6 +103,11 @@ int main(int argc, char **argv) {
|
||||
hiisi.init(&state, argc, argv);
|
||||
while (hiisi.event(&state)) {
|
||||
hiisi.iterate(&state);
|
||||
if (reload_requested) {
|
||||
dlclose(hiisi.module);
|
||||
hiisi = load_hiisi();
|
||||
reload_requested = false;
|
||||
}
|
||||
}
|
||||
|
||||
dlclose(hiisi.module);
|
||||
|
||||
Reference in New Issue
Block a user