Closed
Bug 1127794
Opened 10 years ago
Closed 10 years ago
Windowed plugin origin doesn't always match rendered content after a scroll
Categories
(Core Graveyard :: Plug-ins, defect)
Tracking
(e10sm5+, firefox39 fixed)
RESOLVED
FIXED
mozilla39
People
(Reporter: jimm, Assigned: jimm)
References
Details
Attachments
(3 files, 2 obsolete files)
1.54 KB,
text/html
|
Details | |
792 bytes,
text/html
|
Details | |
7.04 KB,
patch
|
Details | Diff | Splinter Review |
STR: 1) load test case and let flash load completely 2) scroll the page up and then back to the original stop at the top of the page result: Sometimes the plugin window never makes it back to its original origin in the page. I've dumped these coordinates in debug mode and can confirm that the last layer update with plugin data holds coordinates that are slightly out of sync. A few potential causes: 1) the location of the final viewport the compositor chooses in the parent doesn't match the information sent to the content process when reflow was triggered. 2) It might have something to do with this weird delayed plugin geometry update timer [1] we have for non-e10s. 3) ?? Roc suggested in the original compositor / plugin work that we might have problems with pushing plugin data over from layout in the content process, and that it might behoove us to use an actual layer injected into the layer tree for plugin position calculations. This solution might help here. [1] http://mxr.mozilla.org/mozilla-central/source/layout/base/nsPresContext.cpp#2933
Assignee | ||
Comment 1•10 years ago
|
||
Assignee | ||
Comment 2•10 years ago
|
||
Assignee | ||
Comment 3•10 years ago
|
||
This bug wasn't as bad as I thought. Currently we collect up plugin geometry updates for content a little too late for the updates to get shipped over with the shadow layer updates, which occurs in nsDisplayList::PaintRoot. We need to make sure we've computed and collected the updates before the call to EndTransaction on the layer manager.
Assignee | ||
Comment 4•10 years ago
|
||
Assignee | ||
Comment 5•10 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=405767bacf32
Assignee | ||
Comment 6•10 years ago
|
||
Hey roc, do you remember why you introduced this geometry timer? http://mxr.mozilla.org/mozilla-central/source/layout/base/nsPresContext.cpp#2923 From InitApplyPluginGeometryTimer - "paints might get optimized away if the old plugin geometry covers the invalid region" and somehow making a delayed call to ApplyPluginGeometryUpdates fixes this. I'm wondering if we need to get this hooked up in e10s.
Flags: needinfo?(roc)
Assignee | ||
Comment 8•10 years ago
|
||
also please see comment 6.
Attachment #8570704 -
Attachment is obsolete: true
Flags: needinfo?(roc)
Attachment #8571033 -
Flags: review?(roc)
(In reply to Jim Mathies [:jimm] from comment #6) > Hey roc, do you remember why you introduced this geometry timer? > > http://mxr.mozilla.org/mozilla-central/source/layout/base/nsPresContext. > cpp#2923 > > From InitApplyPluginGeometryTimer - > > "paints might get optimized away if the old plugin geometry covers the > invalid region" > > and somehow making a delayed call to ApplyPluginGeometryUpdates fixes this. > I'm wondering if we need to get this hooked up in e10s. Consider the case where a plugin window covers the entire content area and then the plugin is supposed to move. We would request a paint by invalidating some area of the content, but that invalidation would be suppressed by Windows since it's still covered by the plugin's old window area, so we'd never get A WM_PAINT, never get around to painting, and hence never get around to moving the plugin window. I don't think this should be a problem anymore since we're not relying on Windows' WM_PAINT events to drive painting.
Attachment #8571033 -
Flags: review?(roc) → review+
Assignee | ||
Comment 10•10 years ago
|
||
(In reply to Robert O'Callahan (:roc) (Mozilla Corporation) from comment #9) > (In reply to Jim Mathies [:jimm] from comment #6) > > Hey roc, do you remember why you introduced this geometry timer? > > > > http://mxr.mozilla.org/mozilla-central/source/layout/base/nsPresContext. > > cpp#2923 > > > > From InitApplyPluginGeometryTimer - > > > > "paints might get optimized away if the old plugin geometry covers the > > invalid region" > > > > and somehow making a delayed call to ApplyPluginGeometryUpdates fixes this. > > I'm wondering if we need to get this hooked up in e10s. > > Consider the case where a plugin window covers the entire content area and > then the plugin is supposed to move. We would request a paint by > invalidating some area of the content, but that invalidation would be > suppressed by Windows since it's still covered by the plugin's old window > area, so we'd never get A WM_PAINT, never get around to painting, and hence > never get around to moving the plugin window. > > I don't think this should be a problem anymore since we're not relying on > Windows' WM_PAINT events to drive painting. Excellent, thanks for the update.
Assignee | ||
Updated•10 years ago
|
Keywords: checkin-needed
Comment 13•10 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/702f6a2260ed
Status: NEW → RESOLVED
Closed: 10 years ago
status-firefox39:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla39
Updated•2 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•