Closed
Bug 951415
Opened 11 years ago
Closed 11 years ago
White edge when scrolling
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 935219
People
(Reporter: ajones, Assigned: ajones)
References
()
Details
Attachments
(1 file)
|
3.49 KB,
patch
|
Details | Diff | Splinter Review |
Composition bounds are being update incorrectly and applied incorrectly.
Steps to reproduce:
1. Navigate to daringfireball.net
2. Scroll down
3. Zoom all the way out
4. Scroll left and right
Expected results:
Dark background
Actual results:
White bar on the right of the screen
| Assignee | ||
Updated•11 years ago
|
OS: Linux → Gonk (Firefox OS)
Hardware: x86_64 → ARM
| Assignee | ||
Comment 1•11 years ago
|
||
Attachment #8349051 -
Flags: review?(bugmail.mozilla)
| Assignee | ||
Updated•11 years ago
|
Assignee: nobody → ajones
Status: NEW → ASSIGNED
Comment 2•11 years ago
|
||
Way to steal my patch. See bug 951320. We should coordinate more about what you're working on so this doesn't happen again.
Comment 3•11 years ago
|
||
Comment on attachment 8349051 [details] [diff] [review]
Fix GetExpandedScrollRect() mixed co-ordinate spaces;
Review of attachment 8349051 [details] [diff] [review]:
-----------------------------------------------------------------
::: gfx/layers/FrameMetrics.h
@@ +122,5 @@
> // down. i.e. we know that scrollableRect can go back as far as zero.
> // but we don't know how much further ahead it can go.
> CSSRect GetExpandedScrollableRect() const
> {
> + CSSRect cssCompositionBounds = mCompositionBounds / mZoom;
This should probably just use CalculateCompositedRectInCssPixels. Feel free to fix bug 948377 while you're at it.
::: gfx/layers/ipc/AsyncPanZoomController.cpp
@@ +1456,5 @@
> // in some things into our local mFrameMetrics because these things are
> // determined by Gecko and our copy in mFrameMetrics may be stale.
> mFrameMetrics.mScrollableRect = aLayerMetrics.mScrollableRect;
> + // We only want to use the child's composition bounds if we've no the
> + // top level APZC.
I don't understand why you made this change. Can you explain?
| Assignee | ||
Comment 4•11 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #2)
> Way to steal my patch. See bug 951320. We should coordinate more about what
> you're working on so this doesn't happen again.
I just stumbled across the issue so I thought I'd include the fix in my patch. It is fairly obviously wrong but perhaps it works on metro where the scale is more often 1:1.
> ::: gfx/layers/ipc/AsyncPanZoomController.cpp
> @@ +1456,5 @@
> > // in some things into our local mFrameMetrics because these things are
> > // determined by Gecko and our copy in mFrameMetrics may be stale.
> > mFrameMetrics.mScrollableRect = aLayerMetrics.mScrollableRect;
> > + // We only want to use the child's composition bounds if we've no the
> > + // top level APZC.
>
> I don't understand why you made this change. Can you explain?
At the top level APZCTreeManager::UpdateRootCompositionBounds() sets the composition bounds based on the local tree. Right now the composition bounds are being wiped out by a old value being sent back from TabChild when a paint completes. It possibly makes more sense to move all the composition bounds logic inside APZCTreeManager rather than having it split between two classes.
Comment 5•11 years ago
|
||
(In reply to Anthony Jones (:kentuckyfriedtakahe, :k17e) from comment #4)
> At the top level APZCTreeManager::UpdateRootCompositionBounds() sets the
> composition bounds based on the local tree. Right now the composition bounds
> are being wiped out by a old value being sent back from TabChild when a
> paint completes. It possibly makes more sense to move all the composition
> bounds logic inside APZCTreeManager rather than having it split between two
> classes.
Ah. I just removed UpdateRootCompositionBounds as part of bug 950487. Now the composition bounds is only ever updated by the NotifyLayersUpdated code path.
| Assignee | ||
Comment 6•11 years ago
|
||
Your change seems to make the b2g bug worse. I'll have to trace the composition bounds back to see where we're getting the wrong value from.
Comment 7•11 years ago
|
||
Yeah, please do. When I removed UpdateRootCompositionBounds it was my understanding based on the code that we should always get the same composition bounds coming in on the next call to NotifyLayersUpdate so if there's a bad value sneaking in somewhere we should track it down.
Comment 8•11 years ago
|
||
Note also that there is a bug on file and being worked on to fix the composition bounds calculation in RecordFrameMetrics. bug 935219.
Updated•11 years ago
|
Attachment #8349051 -
Flags: review?(bugmail.mozilla)
| Assignee | ||
Comment 9•11 years ago
|
||
UpdateRootCompositionBounds was giving us the right answer and RecordFrameMetrics (in nsDisplayList.cpp) is giving us the wrong answer. Fixing RecordFrameMetrics should fix this issue.
Comment 10•11 years ago
|
||
Bug 935219 is fixed now; is there anything left here that needs to be addressed?
Flags: needinfo?(ajones)
| Assignee | ||
Updated•11 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Flags: needinfo?(ajones)
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•