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

LibGfx: Short-circuit ShareableBitmap construction in IPC decoder

When decoding a ShareableBitmap that came over IPC, it's safe to assume
that it's backed by an anonymous file (since we just decoded it.)
This commit is contained in:
Andreas Kling 2021-01-16 11:23:22 +01:00
parent f18d89b36d
commit 58b435f49e
2 changed files with 11 additions and 1 deletions

View file

@ -38,6 +38,11 @@ ShareableBitmap::ShareableBitmap(const Bitmap& bitmap)
{
}
ShareableBitmap::ShareableBitmap(NonnullRefPtr<Bitmap> bitmap, Tag)
: m_bitmap(move(bitmap))
{
}
}
namespace IPC {
@ -70,7 +75,9 @@ bool decode(Decoder& decoder, Gfx::ShareableBitmap& shareable_bitmap)
return false;
auto bitmap = Gfx::Bitmap::create_with_anon_fd(Gfx::BitmapFormat::RGBA32, anon_file.take_fd(), size, Gfx::Bitmap::ShouldCloseAnonymousFile::Yes);
shareable_bitmap = bitmap->to_shareable_bitmap();
if (!bitmap)
return false;
shareable_bitmap = Gfx::ShareableBitmap { bitmap.release_nonnull(), Gfx::ShareableBitmap::ConstructWithKnownGoodBitmap };
return true;
}