From 6ea8ce500c535797d19e853daad616d414f69523 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 13 Oct 2018 14:26:37 +0200 Subject: [PATCH] Use HashMap::remove() in some places that I wanted it. --- VirtualFileSystem/FileSystem.cpp | 3 +-- VirtualFileSystem/VirtualFileSystem.cpp | 3 +-- Widgets/Window.cpp | 2 +- Widgets/WindowManager.cpp | 6 ++++++ Widgets/WindowManager.h | 1 + 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/VirtualFileSystem/FileSystem.cpp b/VirtualFileSystem/FileSystem.cpp index 4deada6972..d7fb622694 100644 --- a/VirtualFileSystem/FileSystem.cpp +++ b/VirtualFileSystem/FileSystem.cpp @@ -18,8 +18,7 @@ FileSystem::FileSystem() FileSystem::~FileSystem() { - // FIXME: Needs HashMap::remove()! - //fileSystems().remove(m_id); + fileSystems().remove(m_id); } FileSystem* FileSystem::fromID(dword id) diff --git a/VirtualFileSystem/VirtualFileSystem.cpp b/VirtualFileSystem/VirtualFileSystem.cpp index afb1966ff4..c8302028f2 100644 --- a/VirtualFileSystem/VirtualFileSystem.cpp +++ b/VirtualFileSystem/VirtualFileSystem.cpp @@ -115,11 +115,10 @@ void VirtualFileSystem::freeNode(Node* node) { ASSERT(node); ASSERT(node->inUse()); + m_inode2vnode.remove(node->inode); node->inode.fileSystem()->release(); node->inode = InodeIdentifier(); m_nodeFreeList.append(std::move(node)); - // FIXME: Need HashMap::remove. - //m_inode2vnode.remove(node); } bool VirtualFileSystem::isDirectory(const String& path) diff --git a/Widgets/Window.cpp b/Widgets/Window.cpp index 9cd670481e..eb701f2970 100644 --- a/Widgets/Window.cpp +++ b/Widgets/Window.cpp @@ -11,6 +11,7 @@ Window::Window(Object* parent) Window::~Window() { + WindowManager::the().removeWindow(*this); } void Window::setMainWidget(Widget* widget) @@ -31,7 +32,6 @@ void Window::setTitle(String&& title) WindowManager::the().notifyTitleChanged(*this); } - void Window::setRect(const Rect& rect) { if (m_rect == rect) diff --git a/Widgets/WindowManager.cpp b/Widgets/WindowManager.cpp index df0a695f83..d2cb5e5470 100644 --- a/Widgets/WindowManager.cpp +++ b/Widgets/WindowManager.cpp @@ -118,6 +118,12 @@ void WindowManager::addWindow(Window& window) m_windows.set(&window); } +void WindowManager::removeWindow(Window& window) +{ + ASSERT(m_windows.contains(&window)); + m_windows.remove(&window); +} + void WindowManager::notifyTitleChanged(Window& window) { //printf("[WM] Window{%p} title set to '%s'\n", &window, window.title().characters()); diff --git a/Widgets/WindowManager.h b/Widgets/WindowManager.h index 08995bc00d..cb43e393f5 100644 --- a/Widgets/WindowManager.h +++ b/Widgets/WindowManager.h @@ -14,6 +14,7 @@ class WindowManager : public Object { public: static WindowManager& the(); void addWindow(Window&); + void removeWindow(Window&); void paintWindowFrames(); void notifyTitleChanged(Window&);