Skip to content

Commit c4703be

Browse files
committed
WindowServer: Get rid of the WSWindow lock now that accesses are serial.
1 parent e5df2a5 commit c4703be

File tree

4 files changed

+17
-43
lines changed

4 files changed

+17
-43
lines changed

WindowServer/WSMenu.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ WSWindow& WSMenu::ensure_menu_window()
6868
}
6969

7070
auto window = make<WSWindow>(*this);
71-
WSWindowLocker locker(*window);
7271
window->set_rect(0, 0, width(), height());
7372
m_menu_window = move(window);
7473
draw();
@@ -79,7 +78,6 @@ WSWindow& WSMenu::ensure_menu_window()
7978
void WSMenu::draw()
8079
{
8180
ASSERT(menu_window());
82-
WSWindowLocker locker(*menu_window());
8381
ASSERT(menu_window()->backing());
8482
Painter painter(*menu_window()->backing());
8583

@@ -105,7 +103,6 @@ void WSMenu::draw()
105103

106104
void WSMenu::on_window_message(WSMessage& message)
107105
{
108-
WSWindowLocker locker(*menu_window());
109106
ASSERT(menu_window());
110107
if (message.type() == WSMessage::MouseMove) {
111108
auto* item = item_at(static_cast<WSMouseEvent&>(message).position());

WindowServer/WSWindow.cpp

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@
55
#include <WindowServer/WSClientConnection.h>
66

77
WSWindow::WSWindow(WSMenu& menu)
8-
: m_lock("WSWindow (menu)")
9-
, m_type(WSWindowType::Menu)
8+
: m_type(WSWindowType::Menu)
109
, m_menu(&menu)
1110
{
1211
WSWindowManager::the().add_window(*this);
1312
}
1413

1514
WSWindow::WSWindow(int client_id, int window_id)
16-
: m_lock("WSWindow (normal)")
17-
, m_client_id(client_id)
15+
: m_client_id(client_id)
1816
, m_type(WSWindowType::Normal)
1917
, m_window_id(window_id)
2018
{
@@ -28,35 +26,28 @@ WSWindow::~WSWindow()
2826

2927
void WSWindow::set_title(String&& title)
3028
{
31-
{
32-
WSWindowLocker locker(*this);
33-
if (m_title == title)
34-
return;
35-
m_title = move(title);
36-
}
37-
29+
if (m_title == title)
30+
return;
31+
m_title = move(title);
3832
WSWindowManager::the().notify_title_changed(*this);
3933
}
4034

4135
void WSWindow::set_rect(const Rect& rect)
4236
{
4337
Rect old_rect;
44-
{
45-
WSWindowLocker locker(*this);
46-
auto* client = WSClientConnection::from_client_id(m_client_id);
47-
if (!client && !m_menu)
48-
return;
49-
if (m_rect == rect)
50-
return;
51-
old_rect = m_rect;
52-
m_rect = rect;
53-
if (!m_backing || old_rect.size() != rect.size()) {
54-
if (m_menu)
55-
m_backing = GraphicsBitmap::create_kernel_only(m_rect.size());
56-
else if (client)
57-
m_backing = client->create_bitmap(m_rect.size());
38+
auto* client = WSClientConnection::from_client_id(m_client_id);
39+
if (!client && !m_menu)
40+
return;
41+
if (m_rect == rect)
42+
return;
43+
old_rect = m_rect;
44+
m_rect = rect;
45+
if (!m_backing || old_rect.size() != rect.size()) {
46+
if (m_menu)
47+
m_backing = GraphicsBitmap::create_kernel_only(m_rect.size());
48+
else if (client)
49+
m_backing = client->create_bitmap(m_rect.size());
5850

59-
}
6051
}
6152
WSWindowManager::the().notify_rect_changed(*this, old_rect, rect);
6253
}

WindowServer/WSWindow.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@
44
#include <SharedGraphics/GraphicsBitmap.h>
55
#include <AK/AKString.h>
66
#include <AK/InlineLinkedList.h>
7-
#include <AK/Lock.h>
8-
#include <AK/Badge.h>
97
#include "WSMessageReceiver.h"
108
#include <WindowServer/WSWindowType.h>
119

1210
class WSMenu;
1311

1412
class WSWindow final : public WSMessageReceiver, public InlineLinkedListNode<WSWindow> {
15-
friend class WSWindowLocker;
1613
public:
1714
WSWindow(int client_id, int window_id);
1815
explicit WSWindow(WSMenu&);
@@ -66,7 +63,6 @@ class WSWindow final : public WSMessageReceiver, public InlineLinkedListNode<WSW
6663
WSWindow* m_prev { nullptr };
6764

6865
private:
69-
Lock m_lock;
7066
int m_client_id { 0 };
7167
String m_title;
7268
Rect m_rect;
@@ -80,12 +76,3 @@ class WSWindow final : public WSMessageReceiver, public InlineLinkedListNode<WSW
8076
RetainPtr<GraphicsBitmap> m_backing;
8177
int m_window_id { -1 };
8278
};
83-
84-
class WSWindowLocker {
85-
public:
86-
WSWindowLocker(WSWindow& window) : m_locker(window.m_lock) { }
87-
~WSWindowLocker() { }
88-
private:
89-
Locker m_locker;
90-
};
91-

WindowServer/WSWindowManager.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,6 @@ void WSWindowManager::compose()
633633
}
634634

635635
for_each_visible_window_from_back_to_front([&] (WSWindow& window) {
636-
WSWindowLocker locker(window);
637636
RetainPtr<GraphicsBitmap> backing = window.backing();
638637
if (!backing)
639638
return IterationDecision::Continue;

0 commit comments

Comments
 (0)