EndTransaction can run after EndEmptyTransaction without the paint thread being flushed

RESOLVED FIXED in Firefox 58

Status

()

enhancement
RESOLVED FIXED
2 years ago
2 years ago

People

(Reporter: rhunt, Assigned: rhunt)

Tracking

unspecified
mozilla58
Points:
---

Firefox Tracking Flags

(firefox58 fixed)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 attachment)

This isn't a problem because empty transaction's don't queue anything on the paint thread usually, but with bug 1399692 we can get buffer operations queued on the paint thread.

There's not really an easy way to prevent the buffer operations from being queued as ContentClient just assumes that they will happen if it returns them and updates it's internal state. And normally the content client would just do the buffer operations during the empty transaction.

We could potentially pass whether this is an empty transaction to the content client and not do the buffer operations. Or we could flush any async paints/buffer ops before the EndTransaction. I think the second option is the easiest.
Attachment #8927401 - Flags: review?(dvander)
Whiteboard: [gfx-noted]
Comment on attachment 8927401 [details] [diff] [review]
flush-empty-transaction.patch

Review of attachment 8927401 [details] [diff] [review]:
-----------------------------------------------------------------

Yup, seems reasonable.
Attachment #8927401 - Flags: review?(dvander) → review+
Pushed by rhunt@eqrion.net:
https://hg.mozilla.org/integration/mozilla-inbound/rev/dcb005c6e64b
Flush any buffer operations that may be running after EndEmptyTransaction before EndTransaction (bug 1416308, r=dvander)
https://hg.mozilla.org/mozilla-central/rev/dcb005c6e64b
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
You need to log in before you can comment on or make changes to this bug.