summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-03-22 14:26:44 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-03-22 14:26:44 +0100
commit5bba01ca9cdd8c5ca84b475d305ee5e55dd82da3 (patch)
treed3db56a891c6020181691a1351be710f52251a21 /src
parent9494fbbd87eb9601bd9a82940c84995d17de1a6a (diff)
BufferManager notify the ClientManager when a buffer dies
Diffstat (limited to 'src')
-rw-r--r--src/buffer_manager.cc3
-rw-r--r--src/commands.cc1
-rw-r--r--src/utils.hh5
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()
{