diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-09-22 00:17:53 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-09-22 00:25:25 +0200 |
commit | bc319d9e8873734bb8e8cea3d762d7fab2ded887 (patch) | |
tree | c8648b92fe32e6c48454a99356f7b3ca59b5e423 /Servers/WindowServer/WSWindowManager.cpp | |
parent | 0c72e0c09f085a371b0abdba172325e56b1e6a06 (diff) | |
download | serenity-bc319d9e8873734bb8e8cea3d762d7fab2ded887.zip |
LibCore: Make CObject reference-counted
Okay, I've spent a whole day on this now, and it finally kinda works!
With this patch, CObject and all of its derived classes are reference
counted instead of tree-owned.
The previous, Qt-like model was nice and familiar, but ultimately also
outdated and difficult to reason about.
CObject-derived types should now be stored in RefPtr/NonnullRefPtr and
each class can be constructed using the forwarding construct() helper:
auto widget = GWidget::construct(parent_widget);
Note that construct() simply forwards all arguments to an existing
constructor. It is inserted into each class by the C_OBJECT macro,
see CObject.h to understand how that works.
CObject::delete_later() disappears in this patch, as there is no longer
a single logical owner of a CObject.
Diffstat (limited to 'Servers/WindowServer/WSWindowManager.cpp')
-rw-r--r-- | Servers/WindowServer/WSWindowManager.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Servers/WindowServer/WSWindowManager.cpp b/Servers/WindowServer/WSWindowManager.cpp index 839e87dcdc..fa5796e827 100644 --- a/Servers/WindowServer/WSWindowManager.cpp +++ b/Servers/WindowServer/WSWindowManager.cpp @@ -57,7 +57,7 @@ WSWindowManager::WSWindowManager() }; u8 system_menu_name[] = { 0xc3, 0xb8, 0 }; - m_system_menu = make<WSMenu>(nullptr, -1, String((const char*)system_menu_name)); + m_system_menu = WSMenu::construct(nullptr, -1, String((const char*)system_menu_name)); int appIndex = 1; for (const auto& app : apps) { |