summaryrefslogtreecommitdiff
path: root/Userland/Services
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-05-20 21:42:31 +0200
committerAndreas Kling <kling@serenityos.org>2021-05-20 22:12:42 +0200
commitec8363aec373bc38a642360659901b1b4f671df2 (patch)
treed7ea84f1840fdd795e29ea8f6633c6b5e8e0d114 /Userland/Services
parent1150e9fe7987d2824ac4a63c8b7bc5d7d33c65ca (diff)
downloadserenity-ec8363aec373bc38a642360659901b1b4f671df2.zip
WindowServer+LibGUI: Make client/server greeting faster
Instead of doing a full IPC round-trip for the client and server to greet each other upon connecting, the server now automatically sends a "fast_greet" message when a client connects. The client simply waits for that message to arrive before proceeding. (Waiting is necessary since LibGUI relies on the palette information included in the greeting.)
Diffstat (limited to 'Userland/Services')
-rw-r--r--Userland/Services/WindowServer/ClientConnection.cpp7
-rw-r--r--Userland/Services/WindowServer/ClientConnection.h1
-rw-r--r--Userland/Services/WindowServer/WindowClient.ipc2
-rw-r--r--Userland/Services/WindowServer/WindowServer.ipc2
4 files changed, 4 insertions, 8 deletions
diff --git a/Userland/Services/WindowServer/ClientConnection.cpp b/Userland/Services/WindowServer/ClientConnection.cpp
index 923e5f4834..0132c3a872 100644
--- a/Userland/Services/WindowServer/ClientConnection.cpp
+++ b/Userland/Services/WindowServer/ClientConnection.cpp
@@ -53,6 +53,8 @@ ClientConnection::ClientConnection(NonnullRefPtr<Core::LocalSocket> client_socke
if (!s_connections)
s_connections = new HashMap<int, NonnullRefPtr<ClientConnection>>;
s_connections->set(client_id, *this);
+
+ async_fast_greet(Screen::the().rect(), Gfx::current_system_theme_buffer());
}
ClientConnection::~ClientConnection()
@@ -681,11 +683,6 @@ void ClientConnection::start_window_resize(i32 window_id)
WindowManager::the().start_window_resize(window, Screen::the().cursor_location(), MouseButton::Left);
}
-Messages::WindowServer::GreetResponse ClientConnection::greet()
-{
- return { Screen::the().rect(), Gfx::current_system_theme_buffer() };
-}
-
Messages::WindowServer::StartDragResponse ClientConnection::start_drag(String const& text, HashMap<String, ByteBuffer> const& mime_data, Gfx::ShareableBitmap const& drag_bitmap)
{
auto& wm = WindowManager::the();
diff --git a/Userland/Services/WindowServer/ClientConnection.h b/Userland/Services/WindowServer/ClientConnection.h
index 9b2c75ec17..46e69bed5f 100644
--- a/Userland/Services/WindowServer/ClientConnection.h
+++ b/Userland/Services/WindowServer/ClientConnection.h
@@ -88,7 +88,6 @@ private:
void set_unresponsive(bool);
void destroy_window(Window&, Vector<i32>& destroyed_window_ids);
- virtual Messages::WindowServer::GreetResponse greet() override;
virtual void create_menubar(i32) override;
virtual void destroy_menubar(i32) override;
virtual void create_menu(i32, String const&) override;
diff --git a/Userland/Services/WindowServer/WindowClient.ipc b/Userland/Services/WindowServer/WindowClient.ipc
index bd63d70d9b..b4dfe9548c 100644
--- a/Userland/Services/WindowServer/WindowClient.ipc
+++ b/Userland/Services/WindowServer/WindowClient.ipc
@@ -1,5 +1,7 @@
endpoint WindowClient
{
+ fast_greet(Gfx::IntRect screen_rect, Core::AnonymousBuffer theme_buffer) =|
+
paint(i32 window_id, Gfx::IntSize window_size, Vector<Gfx::IntRect> rects) =|
mouse_move(i32 window_id, Gfx::IntPoint mouse_position, u32 button, u32 buttons, u32 modifiers, i32 wheel_delta, bool is_drag, Vector<String> mime_types) =|
mouse_down(i32 window_id, Gfx::IntPoint mouse_position, u32 button, u32 buttons, u32 modifiers, i32 wheel_delta) =|
diff --git a/Userland/Services/WindowServer/WindowServer.ipc b/Userland/Services/WindowServer/WindowServer.ipc
index 704c3338b0..bb8b70dd90 100644
--- a/Userland/Services/WindowServer/WindowServer.ipc
+++ b/Userland/Services/WindowServer/WindowServer.ipc
@@ -1,7 +1,5 @@
endpoint WindowServer
{
- greet() => (Gfx::IntRect screen_rect, Core::AnonymousBuffer theme_buffer)
-
create_menubar(i32 menubar_id) =|
destroy_menubar(i32 menubar_id) =|