mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:57:44 +00:00
WindowServer: Coordinate double-buffering with the BochsVGA card.
Use the BochsVGA card's virtual-height + virtual-y features to implement a "hardware double buffering" type scheme. This is a performance degradation since we now draw a bunch more than before. But there's also no tearing or cursor flickering. I'm gonna commit this and try to improve upon it. :^)
This commit is contained in:
parent
1f159eaab0
commit
443d1c2237
6 changed files with 52 additions and 15 deletions
|
@ -7,6 +7,7 @@
|
|||
#include <AK/InlineLinkedList.h>
|
||||
#include <AK/WeakPtr.h>
|
||||
#include <AK/Lock.h>
|
||||
#include <AK/CircularQueue.h>
|
||||
#include "WSMessageReceiver.h"
|
||||
|
||||
class WSScreen;
|
||||
|
@ -29,6 +30,7 @@ public:
|
|||
|
||||
void move_to_front(WSWindow&);
|
||||
|
||||
void invalidate_cursor();
|
||||
void draw_cursor();
|
||||
|
||||
void invalidate(const WSWindow&);
|
||||
|
@ -54,6 +56,7 @@ private:
|
|||
|
||||
void compose();
|
||||
void paint_window_frame(WSWindow&);
|
||||
void flip_buffers();
|
||||
|
||||
WSScreen& m_screen;
|
||||
Rect m_screen_rect;
|
||||
|
@ -105,4 +108,5 @@ private:
|
|||
mutable Lock m_lock;
|
||||
|
||||
bool m_flash_flush { false };
|
||||
bool m_buffers_are_flipped { false };
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue