Opened 5 years ago
Last modified 5 years ago
#15920 new bug
app_server: back buffer is flushed before drawing is finished
Reported by: | X512 | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Servers/app_server | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
This is hrev54101.
In some situations app_server screen back buffer is flushed before drawing is finished causing flickering artifacts:
- When moving cursor (#15645).
- When move window (#15631).
- When BView::DrawBitmap is called on overlapping window with lower z-order (#15574).
I created test program that helps to catch bug. Nested red, green and blue rectangles should be displayed. Flickering or artifacts means that this bug is triggered.
Attachments (1)
Change History (3)
by , 5 years ago
Attachment: | BackBufferTest.cpp added |
---|
comment:2 by , 5 years ago
At least in the case of the cursor, when we are using a video driver that supports accelerated cursor (like intel_extreme) that is not a problem. The BScreen::ReadBitmap case does sound relevant though.
An additional screen buffer sounds OK as long as we can fall back to not using it under especially low memory, as I think we already do for the back/front buffer.
Introducing second back buffer that contains same contents as front buffer, but without overlay layer seems to be only solution that completely fix problem. It will also significantly speed up screen capture (
BScreen::ReadBitmap
), because no front buffer reading will be needed.