diff options
author | Andreas Kling <kling@serenityos.org> | 2020-03-22 21:13:23 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-03-22 21:13:23 +0100 |
commit | 424a3f5ac3c659d57d38aba36f4062c8ecbc4044 (patch) | |
tree | c9b64b14cde9dd11d7b159beff12a89e2e470d2e /Servers/WindowServer/ClientConnection.h | |
parent | bb70d0692b4aab9ec4cf24cc35abb35e2f8ef2a2 (diff) | |
download | serenity-424a3f5ac3c659d57d38aba36f4062c8ecbc4044.zip |
WindowServer+LibGUI: Add a way to get notified at display refresh rate
This patch adds GUI::DisplayLink, a mechanism for registering callbacks
that will fire at the display refresh rate.
Note that we don't actually know the screen refresh rate, but this is
instead completely driven by WindowServer's compositing timer. For all
current intents and purposes it does the job well enough. :^)
Diffstat (limited to 'Servers/WindowServer/ClientConnection.h')
-rw-r--r-- | Servers/WindowServer/ClientConnection.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Servers/WindowServer/ClientConnection.h b/Servers/WindowServer/ClientConnection.h index b17c384b21..a5ebdd5a65 100644 --- a/Servers/WindowServer/ClientConnection.h +++ b/Servers/WindowServer/ClientConnection.h @@ -26,6 +26,7 @@ #pragma once +#include <AK/Badge.h> #include <AK/Function.h> #include <AK/HashMap.h> #include <AK/OwnPtr.h> @@ -38,6 +39,7 @@ namespace WindowServer { +class Compositor; class Window; class Menu; class MenuBar; @@ -72,6 +74,8 @@ public: return const_cast<Menu*>(menu.value().ptr()); } + void notify_display_link(Badge<Compositor>); + private: explicit ClientConnection(Core::LocalSocket&, int client_id); @@ -117,6 +121,8 @@ private: virtual OwnPtr<Messages::WindowServer::SetSystemMenuResponse> handle(const Messages::WindowServer::SetSystemMenu&) override; virtual OwnPtr<Messages::WindowServer::SetSystemThemeResponse> handle(const Messages::WindowServer::SetSystemTheme&) override; virtual OwnPtr<Messages::WindowServer::SetWindowBaseSizeAndSizeIncrementResponse> handle(const Messages::WindowServer::SetWindowBaseSizeAndSizeIncrement&) override; + virtual void handle(const Messages::WindowServer::EnableDisplayLink&) override; + virtual void handle(const Messages::WindowServer::DisableDisplayLink&) override; HashMap<int, NonnullRefPtr<Window>> m_windows; HashMap<int, NonnullOwnPtr<MenuBar>> m_menubars; @@ -127,6 +133,8 @@ private: int m_next_menu_id { 20000 }; int m_next_window_id { 1982 }; + bool m_has_display_link { false }; + RefPtr<SharedBuffer> m_last_sent_clipboard_content; }; |