diff --git a/sources/appl/BufferManager.cpp b/sources/appl/BufferManager.cpp index 9eb152b..bbb4a56 100644 --- a/sources/appl/BufferManager.cpp +++ b/sources/appl/BufferManager.cpp @@ -71,6 +71,7 @@ std::shared_ptr appl::BufferManager::get(const std::string& _fileN APPL_ERROR("Can not allocate the Buffer class : " << _fileName); return nullptr; } + tmp->setParent(shared_from_this()); tmp->loadFile(_fileName); m_list.push_back(tmp); APPL_INFO("Creata a open Buffer"); @@ -128,3 +129,19 @@ void appl::BufferManager::open(const std::string& _fileName) { signalSelectFile.emit(_fileName); } + +void appl::BufferManager::requestDestroyFromChild(const std::shared_ptr& _child) { + APPL_WARNING("Buffer request a close..."); + auto it = m_list.begin(); + while(it != m_list.end()) { + if (*it == nullptr) { + it = m_list.erase(it); + continue; + } + if (*it == _child) { + it = m_list.erase(it); + return; + } + ++it; + } +} diff --git a/sources/appl/BufferManager.h b/sources/appl/BufferManager.h index 812dd4c..4437a52 100644 --- a/sources/appl/BufferManager.h +++ b/sources/appl/BufferManager.h @@ -81,6 +81,8 @@ namespace appl { std::shared_ptr getBufferSelected() { return m_bufferSelected; }; + private: + void requestDestroyFromChild(const std::shared_ptr& _child); }; };