diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-11-02 10:47:05 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-11-02 10:47:05 +0100 |
commit | 3b2c342f3879705b0cc9919198b984f92aec5e62 (patch) | |
tree | bd903612f46f95cac88f0bb89a4465005b0fbcbf /layout/generic | |
parent | deba73b3bc9168838034c2b5bab4b7d2945bfaaf (diff) | |
download | uxp-3b2c342f3879705b0cc9919198b984f92aec5e62.tar.gz |
Make sure we remove our RefreshDriver observers in CompleteAsyncScroll.
Follow-up to fdbac095968bc952fec6a03765a7156940ae4733
Diffstat (limited to 'layout/generic')
-rw-r--r-- | layout/generic/nsGfxScrollFrame.cpp | 11 | ||||
-rw-r--r-- | layout/generic/nsGfxScrollFrame.h | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/layout/generic/nsGfxScrollFrame.cpp b/layout/generic/nsGfxScrollFrame.cpp index cfa366aa3c..3ed3b0bb33 100644 --- a/layout/generic/nsGfxScrollFrame.cpp +++ b/layout/generic/nsGfxScrollFrame.cpp @@ -2152,8 +2152,7 @@ void ScrollFrameHelper::CompleteAsyncScroll(const nsRect &aRange, nsIAtom* aOrigin) { // Apply desired destination range since this is the last step of scrolling. - mAsyncSmoothMSDScroll = nullptr; - mAsyncScroll = nullptr; + RemoveObservers(); nsWeakFrame weakFrame(mOuter); ScrollToImpl(mDestination, aRange, aOrigin); if (!weakFrame.IsAlive()) { @@ -4588,11 +4587,19 @@ ScrollFrameHelper::Destroy() mScrollActivityTimer->Cancel(); mScrollActivityTimer = nullptr; } + RemoveObservers(); +} + +void +ScrollFrameHelper::RemoveObservers() +{ if (mAsyncScroll) { mAsyncScroll->RemoveObserver(); + mAsyncScroll = nullptr; } if (mAsyncSmoothMSDScroll) { mAsyncSmoothMSDScroll->RemoveObserver(); + mAsyncSmoothMSDScroll = nullptr; } } diff --git a/layout/generic/nsGfxScrollFrame.h b/layout/generic/nsGfxScrollFrame.h index f1ef44ae82..81bbb358fc 100644 --- a/layout/generic/nsGfxScrollFrame.h +++ b/layout/generic/nsGfxScrollFrame.h @@ -638,6 +638,9 @@ protected: bool HasBgAttachmentLocal() const; uint8_t GetScrolledFrameDir() const; + // Removes any RefreshDriver observers we might have registered. + void RemoveObservers(); + static void EnsureFrameVisPrefsCached(); static bool sFrameVisPrefsCached; // The number of scrollports wide/high to expand when tracking frame visibility. |