Summary: | [chromium] race between CCLayerTreeHostImpl::releaseContentsTextures and CCThreadProxy::beginFrameCompleteOnImplThread | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Antoine Labour <piman> | ||||||
Component: | Platform | Assignee: | Antoine Labour <piman> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | ccameron, cc-bugs, enne, jamesr, nduca, webkit.review.bot | ||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Antoine Labour
2012-08-09 20:46:53 PDT
Created attachment 157850 [details]
Patch
I'll write tests before landing, but please check the approach and/or if I'm missing something. My assumption if the frame is "aborted" (because we got invisible in the mean time) is that I can keep the state as is, and a commit will be kicked when the tab becomes visible again, causing a new beginFrame post that will validate the textures then. Comment on attachment 157850 [details]
Patch
Can this get unit tested? This might fit with some of the CCLayerTreeHostTest tests that test other proxy interactions.
Yes, that's the plan (as I wrote in #2). Comment on attachment 157850 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=157850&action=review > Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:272 > + bool m_beginFramePosted; > + bool m_contentsTexturesWerePurgedSinceLastBeginFrame; > + bool m_contentsTexturesPurged; could you keep the more stateful bits up on CCThreadProxy? It's the class responsible for handling state transitions (which it mostly delegates to the scheduler) and the details of the commit flow, so I think it should keep track of what it has posted to the main thread and what it needs to preserve. Also, the single thread proxy doesn't have to worry about any of this stuff. Created attachment 158195 [details]
Patch
(In reply to comment #3) > (From update of attachment 157850 [details]) > Can this get unit tested? Done (In reply to comment #5) > (From update of attachment 157850 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=157850&action=review > > > Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:272 > > + bool m_beginFramePosted; > > + bool m_contentsTexturesWerePurgedSinceLastBeginFrame; > > + bool m_contentsTexturesPurged; > > could you keep the more stateful bits up on CCThreadProxy? It's the class responsible for handling state transitions (which it mostly delegates to the scheduler) and the details of the commit flow, so I think it should keep track of what it has posted to the main thread and what it needs to preserve. Also, the single thread proxy doesn't have to worry about any of this stuff. Done. Comment on attachment 158195 [details]
Patch
R=me - nice test!
Comment on attachment 158195 [details] Patch Clearing flags on attachment: 158195 Committed r125577: <http://trac.webkit.org/changeset/125577> All reviewed patches have been landed. Closing bug. |