summaryrefslogtreecommitdiff
path: root/src/hook_manager.hh
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-06-07 12:15:16 +0100
committerMaxime Coste <mawww@kakoune.org>2017-06-07 12:15:16 +0100
commit4606453fedafefc42392c7c78428d8c649319741 (patch)
tree698fa3a83b16df05117d0b16197fbcc80f2532f6 /src/hook_manager.hh
parent87477cf2bb2e3b1c14adb61a06b926852817a1d7 (diff)
Avoid expensive copies of Hooks in HookManager::run_hooks
Use a deferred deletion mechanism to ensure hooks are kept alive for the duration of run_hooks.
Diffstat (limited to 'src/hook_manager.hh')
-rw-r--r--src/hook_manager.hh4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/hook_manager.hh b/src/hook_manager.hh
index ae27b352..e2e238ea 100644
--- a/src/hook_manager.hh
+++ b/src/hook_manager.hh
@@ -35,8 +35,10 @@ private:
};
SafePtr<HookManager> m_parent;
- HashMap<String, Vector<Hook, MemoryDomain::Hooks>, MemoryDomain::Hooks> m_hooks;
+ HashMap<String, Vector<std::unique_ptr<Hook>, MemoryDomain::Hooks>, MemoryDomain::Hooks> m_hooks;
+
mutable Vector<std::pair<StringView, StringView>, MemoryDomain::Hooks> m_running_hooks;
+ mutable Vector<std::unique_ptr<Hook>, MemoryDomain::Hooks> m_hooks_trash;
};
}