diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-03-22 14:26:44 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-03-22 14:26:44 +0100 |
| commit | 5bba01ca9cdd8c5ca84b475d305ee5e55dd82da3 (patch) | |
| tree | d3db56a891c6020181691a1351be710f52251a21 /src | |
| parent | 9494fbbd87eb9601bd9a82940c84995d17de1a6a (diff) | |
BufferManager notify the ClientManager when a buffer dies
Diffstat (limited to 'src')
| -rw-r--r-- | src/buffer_manager.cc | 3 | ||||
| -rw-r--r-- | src/commands.cc | 1 | ||||
| -rw-r--r-- | src/utils.hh | 5 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index d482f28a..0fae2a17 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -4,6 +4,7 @@ #include "buffer.hh" #include "exception.hh" #include "string.hh" +#include "client_manager.hh" namespace Kakoune { @@ -35,6 +36,8 @@ void BufferManager::unregister_buffer(Buffer& buffer) { if (*it == &buffer) { + if (ClientManager::has_instance()) + ClientManager::instance().ensure_no_client_uses_buffer(buffer); m_buffers.erase(it); return; } diff --git a/src/commands.cc b/src/commands.cc index d720359e..0baec150 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -234,7 +234,6 @@ void delete_buffer(const CommandParameters& params, Context& context) if (manager.count() == 1) throw runtime_error("buffer " + buffer.name() + " is the last one"); - ClientManager::instance().ensure_no_client_uses_buffer(buffer); delete &buffer; } diff --git a/src/utils.hh b/src/utils.hh index 6337bc24..0db71f40 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -33,6 +33,11 @@ public: ms_instance = nullptr; } + static bool has_instance() + { + return ms_instance != nullptr; + } + protected: Singleton() { |
