mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 20:17:44 +00:00
Userland: Add FB_FLUSH ioctl for fbdev
This commit is contained in:
parent
34e9fa4d3b
commit
974e996d33
5 changed files with 27 additions and 0 deletions
|
@ -662,6 +662,7 @@ void Compositor::flush(Screen& screen)
|
|||
from_ptr = (const Gfx::RGBA32*)((const u8*)from_ptr + pitch);
|
||||
to_ptr = (Gfx::RGBA32*)((u8*)to_ptr + pitch);
|
||||
}
|
||||
screen.flush_display(a_rect.intersected(screen.rect()));
|
||||
};
|
||||
for (auto& rect : screen_data.m_flush_rects.rects())
|
||||
do_flush(rect);
|
||||
|
|
|
@ -316,4 +316,14 @@ void ScreenInput::on_receive_keyboard_data(::KeyEvent kernel_event)
|
|||
Core::EventLoop::current().post_event(WindowManager::the(), move(message));
|
||||
}
|
||||
|
||||
void Screen::flush_display(const Gfx::IntRect& flush_region)
|
||||
{
|
||||
FBRect rect {
|
||||
.x = static_cast<unsigned>(flush_region.x()) * scale_factor(),
|
||||
.y = static_cast<unsigned>(flush_region.y()) * scale_factor(),
|
||||
.width = static_cast<unsigned>(flush_region.width()) * scale_factor(),
|
||||
.height = static_cast<unsigned>(flush_region.height() * scale_factor())
|
||||
};
|
||||
fb_flush_buffer(m_framebuffer_fd, &rect);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,6 +160,8 @@ public:
|
|||
Gfx::IntSize size() const { return { m_virtual_rect.width(), m_virtual_rect.height() }; }
|
||||
Gfx::IntRect rect() const { return m_virtual_rect; }
|
||||
|
||||
void flush_display(const Gfx::IntRect& rect);
|
||||
|
||||
private:
|
||||
Screen(ScreenLayout::Screen&);
|
||||
bool open_device();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue