1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:37:34 +00:00

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.
This commit is contained in:
Mustafa Quraish 2021-08-27 22:58:31 -04:00 committed by Linus Groh
parent 16830a60ec
commit 5f23958abd

View file

@ -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();