1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 11:55:08 +00:00

GraphicsBitmap: create_wrapper() should take pitch as a parameter

We shouldn't assume that the pitch of some arbitrary bitmap memory that
we're wrapping is going to be 16-byte aligned. Instead, just take the
pitch as a parameter.

Also update WindowServer to pass the pitch to the framebuffer bitmaps.
This commit is contained in:
Andreas Kling 2019-08-19 13:29:19 +02:00
parent d11d847161
commit 7038935f74
4 changed files with 13 additions and 9 deletions

View file

@ -24,9 +24,9 @@ GraphicsBitmap::GraphicsBitmap(Format format, const Size& size)
m_needs_munmap = true;
}
NonnullRefPtr<GraphicsBitmap> GraphicsBitmap::create_wrapper(Format format, const Size& size, RGBA32* data)
NonnullRefPtr<GraphicsBitmap> GraphicsBitmap::create_wrapper(Format format, const Size& size, size_t pitch, RGBA32* data)
{
return adopt(*new GraphicsBitmap(format, size, data));
return adopt(*new GraphicsBitmap(format, size, pitch, data));
}
RefPtr<GraphicsBitmap> GraphicsBitmap::load_from_file(const StringView& path)
@ -42,10 +42,10 @@ RefPtr<GraphicsBitmap> GraphicsBitmap::load_from_file(Format format, const Strin
return adopt(*new GraphicsBitmap(format, size, move(mapped_file)));
}
GraphicsBitmap::GraphicsBitmap(Format format, const Size& size, RGBA32* data)
GraphicsBitmap::GraphicsBitmap(Format format, const Size& size, size_t pitch, RGBA32* data)
: m_size(size)
, m_data(data)
, m_pitch(round_up_to_power_of_two(size.width() * sizeof(RGBA32), 16))
, m_pitch(pitch)
, m_format(format)
{
ASSERT(format != Format::Indexed8);