aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Wetterhorn/Core.hs2
-rw-r--r--src/harness_adapter.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/Wetterhorn/Core.hs b/src/Wetterhorn/Core.hs
index 36b0f82..2f885f9 100644
--- a/src/Wetterhorn/Core.hs
+++ b/src/Wetterhorn/Core.hs
@@ -101,7 +101,7 @@ defaultConfig =
WConfig
{ keybindingHandler = \keyEvent -> do
i <- incrementState
- wio $ printf "%d - got %s\n" i (show keyEvent)
+ wio $ printf "%d - Got %s\n" i (show keyEvent)
maybe (return False) (fmap (const True)) $
Map.lookup
(state keyEvent, modifiers keyEvent, keysym keyEvent)
diff --git a/src/harness_adapter.c b/src/harness_adapter.c
index b18f8d2..8663b6a 100644
--- a/src/harness_adapter.c
+++ b/src/harness_adapter.c
@@ -16,6 +16,8 @@ void* get_foreign_interface()
return foreign_interface;
}
+extern void performMajorGC();
+
void plugin_metaload(int argc, char** argv)
{
hs_init(&argc, &argv);
@@ -25,7 +27,14 @@ void plugin_load(int argc, char **argv, foreign_interface_t* fintf) {
hs_init(&argc, &argv);
foreign_interface = fintf;
}
+
void plugin_teardown(opqst_t st) {
+ // the opaque state should be dereferenced by now. Perform a major GC to help
+ // clean up before doing a reload.
+ //
+ // Used primarily in the case where the RTS is kept alive when performing a
+ // hot-reload.
+ performMajorGC();
hs_exit();
// There's a race condition between when this shared library is unloaded and