Closed
Bug 638804
Opened 14 years ago
Closed 14 years ago
Ensure that flush and markdirty are called for cairo surfaces
Categories
(Core :: Graphics, defect)
Core
Graphics
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: stechz, Unassigned)
References
Details
Attachments
(1 file)
10.45 KB,
patch
|
mwu
:
review+
|
Details | Diff | Splinter Review |
Corruptions can occur for surfaces if we don't tell cairo when a surface is being changed outside of cairo or if we don't have cairo flush any pending operations before a surface is changed outside of cairo.
Reporter | ||
Comment 1•14 years ago
|
||
Reporter | ||
Comment 2•14 years ago
|
||
Comment on attachment 516903 [details] [diff] [review]
Ensure that flush and makedirty are called for cairo surfaces
This catches:
* code in gfxUtils that touches surfaces
* code in IPC layers that flushes surfaces before forwarding a transaction
* code in gfxImageSurface that touches surfaces
* Android code that flushes cairo surfaces before giving Android the surface back
There still may be more. I'm looking at you, layout and canvas.
Attachment #516903 -
Flags: review?(mwu)
Attachment #516903 -
Flags: review?(matt.woodrow+bugzilla)
Reporter | ||
Comment 3•14 years ago
|
||
Adding as blocker for bug 638594 because it may help fix ref tests.
Blocks: 638594
Updated•14 years ago
|
Attachment #516903 -
Flags: review?(mwu) → review+
Reporter | ||
Updated•14 years ago
|
Attachment #516903 -
Flags: review?(matt.woodrow+bugzilla) → review?(jmuizelaar)
Comment 4•14 years ago
|
||
Comment on attachment 516903 [details] [diff] [review]
Ensure that flush and makedirty are called for cairo surfaces
Overall, no objections. It seems like we will be doing some extra flushing/dirtying with no benefit here, but it does make us follow the api more closely.
>
> NS_ABORT_IF_FALSE(IsSurfaceDescriptorValid(mBackBuffer),
> "should have a back buffer by now");
>+ mBuffer.GetBuffer()->Flush();
> BasicManager()->PaintedThebesBuffer(BasicManager()->Hold(this),
> updatedRegion,
> mBuffer.BufferRect(),
> mBuffer.BufferRotation(),
> mBackBuffer);
It's not obvious to me what these Flushes are for.
Reporter | ||
Comment 5•14 years ago
|
||
> It's not obvious to me what these Flushes are for.
This is right before surfaces are getting shared to the other process. I'm not sure, but I figured that whatever cairo is coalescing would not come with the data that's being shared.
Comment 6•14 years ago
|
||
Comment on attachment 516903 [details] [diff] [review]
Ensure that flush and makedirty are called for cairo surfaces
Do we still want this?
Attachment #516903 -
Flags: review?(jmuizelaar)
Reporter | ||
Comment 7•14 years ago
|
||
I'd say no.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•