mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-03-16 18:36:22 +00:00
WindowServer+Magnifier: Make Magnifier buttery smooth :^)
This patch moves the magnifier rect computation over to the server side to ensure that the mouse cursor position and the screen image never get out of sync.
This commit is contained in:
@@ -904,6 +904,20 @@ Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bit
|
||||
return bitmap.to_shareable_bitmap();
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetScreenBitmapAroundCursorResponse ClientConnection::get_screen_bitmap_around_cursor(Gfx::IntSize const& size)
|
||||
{
|
||||
auto scale_factor = WindowManager::the().scale_factor();
|
||||
auto cursor_location = Screen::the().cursor_location();
|
||||
Gfx::Rect rect { (cursor_location.x() * scale_factor) - (size.width() / 2), (cursor_location.y() * scale_factor) - (size.height() / 2), size.width(), size.height() };
|
||||
|
||||
// Recompose the screen to make sure the cursor is painted in the location we think it is.
|
||||
// FIXME: This is rather wasteful. We can probably think of a way to avoid this.
|
||||
Compositor::the().compose();
|
||||
|
||||
auto bitmap = Compositor::the().front_bitmap_for_screenshot({}).cropped(rect);
|
||||
return bitmap->to_shareable_bitmap();
|
||||
}
|
||||
|
||||
Messages::WindowServer::IsWindowModifiedResponse ClientConnection::is_window_modified(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
|
||||
Reference in New Issue
Block a user