diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-12-16 14:07:22 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-12-16 14:07:22 +1100 |
| commit | efabe281732fa4a2cb83ab2adf65c840c251101f (patch) | |
| tree | 6d79605a7a14db665fe3f2747ebf1df2f73844ee /src/window.cc | |
| parent | f8ab9e07804d243b09610b4e8bf7e1edbc5c52c3 (diff) | |
Fix WinResize hook getting triggered during urgent event processing
WinResize hooks could be triggered during shell evaluation, leading
to any state potentially getting mutated after a shell evaluation
call.
Diffstat (limited to 'src/window.cc')
| -rw-r--r-- | src/window.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/window.cc b/src/window.cc index cbc4deab..8acc7a03 100644 --- a/src/window.cc +++ b/src/window.cc @@ -193,8 +193,17 @@ void Window::set_dimensions(DisplayCoord dimensions) if (m_dimensions != dimensions) { m_dimensions = dimensions; - run_hook_in_own_context(Hook::WinResize, format("{}.{}", dimensions.line, - dimensions.column)); + m_resize_hook_pending = true; + } +} + +void Window::run_resize_hook_ifn() +{ + if (m_resize_hook_pending) + { + m_resize_hook_pending = false; + run_hook_in_own_context(Hook::WinResize, + format("{}.{}", m_dimensions.line, m_dimensions.column)); } } |
