diff options
| author | Maxime Coste <mawww@kakoune.org> | 2017-06-07 12:15:16 +0100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2017-06-07 12:15:16 +0100 |
| commit | 4606453fedafefc42392c7c78428d8c649319741 (patch) | |
| tree | 698fa3a83b16df05117d0b16197fbcc80f2532f6 /src/hook_manager.hh | |
| parent | 87477cf2bb2e3b1c14adb61a06b926852817a1d7 (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.hh | 4 |
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; }; } |
