From 5f23958abd45559d7882629a4554a671c98aa249 Mon Sep 17 00:00:00 2001 From: Mustafa Quraish Date: Fri, 27 Aug 2021 22:58:31 -0400 Subject: [PATCH] WindowServer: Always return properly cropped bitmap Previously, when `screen_index` was not provided when calling `ClientConnection::get_screen_bitmap`, the bitmap that was created was always the size of the bounding rect of the screen. The actual screen bitmap was being cropped, but the bitmap being returned was of the original size with just black pixels everywhere else. --- Userland/Services/WindowServer/ClientConnection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Services/WindowServer/ClientConnection.cpp b/Userland/Services/WindowServer/ClientConnection.cpp index 38ae778882..3b98050d6d 100644 --- a/Userland/Services/WindowServer/ClientConnection.cpp +++ b/Userland/Services/WindowServer/ClientConnection.cpp @@ -973,7 +973,8 @@ Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bit return bitmap.to_shareable_bitmap(); } // TODO: Mixed scale setups at what scale? Lowest? Highest? Configurable? - if (auto bitmap = Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRx8888, Screen::bounding_rect().size(), 1)) { + auto bitmap_size = rect.value_or(Screen::bounding_rect()).size(); + if (auto bitmap = Gfx::Bitmap::try_create(Gfx::BitmapFormat::BGRx8888, bitmap_size, 1)) { Gfx::Painter painter(*bitmap); Screen::for_each([&](auto& screen) { auto screen_rect = screen.rect();