forked from mirrors/gecko-dev
		
	Bug 1786513 - Make SimpleResizeReflow not flush by default. r=jfkthame,layout-reviewers
Only GeckoMVMContext really needs the flush, to measure scrolled height afterwards. Do that explicitly. This shouldn't change behavior, for the most part; there was a preload test that relied on the flush when changing DPI to start a run really clean, but other than that this looks green on try. Should at best be neutral (just code clean-up), or be a performance improvement. In a follow-up, we can possibly remove the DelayedResize code from the view manager, though I need to think how to possibly coalesce the MVM reflows, so let's not do that yet. Differential Revision: https://phabricator.services.mozilla.com/D155385
This commit is contained in:
		
							parent
							
								
									abbd3773c9
								
							
						
					
					
						commit
						f32093456d
					
				
					 13 changed files with 56 additions and 121 deletions
				
			
		|  | @ -470,33 +470,7 @@ nsDocShellTreeOwner::SizeShellTo(nsIDocShellTreeItem* aShellItem, int32_t aCX, | |||
|     return NS_ERROR_NOT_IMPLEMENTED; | ||||
|   } | ||||
| 
 | ||||
|   NS_ENSURE_TRUE(aShellItem, NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   RefPtr<Document> document = aShellItem->GetDocument(); | ||||
|   NS_ENSURE_TRUE(document, NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   NS_ENSURE_TRUE(document->GetDocumentElement(), NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   // Set the preferred Size
 | ||||
|   // XXX
 | ||||
|   NS_ERROR("Implement this"); | ||||
|   /*
 | ||||
|   Set the preferred size on the aShellItem. | ||||
|   */ | ||||
| 
 | ||||
|   RefPtr<nsPresContext> presContext = mWebBrowser->mDocShell->GetPresContext(); | ||||
|   NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   RefPtr<PresShell> presShell = presContext->GetPresShell(); | ||||
|   NS_ENSURE_TRUE(presShell, NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   NS_ENSURE_SUCCESS( | ||||
|       presShell->ResizeReflow(NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE), | ||||
|       NS_ERROR_FAILURE); | ||||
| 
 | ||||
|   // XXX: this is weird, but we used to call a method here
 | ||||
|   // (webBrowserChrome->SizeBrowserTo()) whose implementations all failed like
 | ||||
|   // this, so...
 | ||||
|   MOZ_ASSERT_UNREACHABLE("This is unimplemented, API should be cleaned up"); | ||||
|   return NS_ERROR_NOT_IMPLEMENTED; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1041,9 +1041,8 @@ nsRect Element::GetClientAreaRect() { | |||
|       doc->IsScrollingElement(this)) { | ||||
|     if (PresShell* presShell = doc->GetPresShell()) { | ||||
|       // Ensure up to date dimensions, but don't reflow
 | ||||
|       RefPtr<nsViewManager> viewManager = presShell->GetViewManager(); | ||||
|       if (viewManager) { | ||||
|         viewManager->FlushDelayedResize(false); | ||||
|       if (RefPtr<nsViewManager> viewManager = presShell->GetViewManager()) { | ||||
|         viewManager->FlushDelayedResize(); | ||||
|       } | ||||
|       return nsRect(nsPoint(), presContext->GetVisibleArea().Size()); | ||||
|     } | ||||
|  |  | |||
|  | @ -3496,9 +3496,8 @@ nsresult nsGlobalWindowOuter::GetInnerSize(CSSSize& aSize) { | |||
| 
 | ||||
|   // Whether or not the css viewport has been overridden, we can get the
 | ||||
|   // correct value by looking at the visible area of the presContext.
 | ||||
|   RefPtr<nsViewManager> viewManager = presShell->GetViewManager(); | ||||
|   if (viewManager) { | ||||
|     viewManager->FlushDelayedResize(false); | ||||
|   if (RefPtr<nsViewManager> viewManager = presShell->GetViewManager()) { | ||||
|     viewManager->FlushDelayedResize(); | ||||
|   } | ||||
| 
 | ||||
|   // FIXME: Bug 1598487 - Return the layout viewport instead of the ICB.
 | ||||
|  |  | |||
|  | @ -194,12 +194,16 @@ void GeckoMVMContext::UpdateDisplayPortMargins() { | |||
| } | ||||
| 
 | ||||
| void GeckoMVMContext::Reflow(const CSSSize& aNewSize) { | ||||
|   MOZ_ASSERT(mPresShell); | ||||
|   RefPtr doc = mDocument; | ||||
|   RefPtr ps = mPresShell; | ||||
| 
 | ||||
|   RefPtr<PresShell> presShell = mPresShell; | ||||
|   presShell->ResizeReflowIgnoreOverride(CSSPixel::ToAppUnits(aNewSize.width), | ||||
|                                         CSSPixel::ToAppUnits(aNewSize.height), | ||||
|                                         ResizeReflowOptions::NoOption); | ||||
|   MOZ_ASSERT(doc); | ||||
|   MOZ_ASSERT(ps); | ||||
| 
 | ||||
|   if (ps->ResizeReflowIgnoreOverride(CSSPixel::ToAppUnits(aNewSize.width), | ||||
|                                      CSSPixel::ToAppUnits(aNewSize.height))) { | ||||
|     doc->FlushPendingNotifications(FlushType::InterruptibleLayout); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| }  // namespace mozilla
 | ||||
|  |  | |||
|  | @ -1967,7 +1967,7 @@ void PresShell::RefreshZoomConstraintsForScreenSizeChange() { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| nsresult PresShell::ResizeReflow(nscoord aWidth, nscoord aHeight, | ||||
| void PresShell::ResizeReflow(nscoord aWidth, nscoord aHeight, | ||||
|                              ResizeReflowOptions aOptions) { | ||||
|   if (mZoomConstraintsClient) { | ||||
|     // If we have a ZoomConstraintsClient and the available screen area
 | ||||
|  | @ -1983,21 +1983,19 @@ nsresult PresShell::ResizeReflow(nscoord aWidth, nscoord aHeight, | |||
|     // the MVM.
 | ||||
|     MOZ_ASSERT(mMobileViewportManager); | ||||
|     mMobileViewportManager->RequestReflow(false); | ||||
|     return NS_OK; | ||||
|     return; | ||||
|   } | ||||
|   ResizeReflowIgnoreOverride(aWidth, aHeight, aOptions); | ||||
| } | ||||
| 
 | ||||
|   return ResizeReflowIgnoreOverride(aWidth, aHeight, aOptions); | ||||
| } | ||||
| 
 | ||||
| void PresShell::SimpleResizeReflow(nscoord aWidth, nscoord aHeight, | ||||
|                                    ResizeReflowOptions aOptions) { | ||||
| bool PresShell::SimpleResizeReflow(nscoord aWidth, nscoord aHeight) { | ||||
|   MOZ_ASSERT(aWidth != NS_UNCONSTRAINEDSIZE); | ||||
|   MOZ_ASSERT(aHeight != NS_UNCONSTRAINEDSIZE); | ||||
|   nsSize oldSize = mPresContext->GetVisibleArea().Size(); | ||||
|   mPresContext->SetVisibleArea(nsRect(0, 0, aWidth, aHeight)); | ||||
|   nsIFrame* rootFrame = GetRootFrame(); | ||||
|   if (!rootFrame) { | ||||
|     return; | ||||
|     return false; | ||||
|   } | ||||
|   WritingMode wm = rootFrame->GetWritingMode(); | ||||
|   bool isBSizeChanging = | ||||
|  | @ -2011,14 +2009,7 @@ void PresShell::SimpleResizeReflow(nscoord aWidth, nscoord aHeight, | |||
|   if (mMobileViewportManager) { | ||||
|     mMobileViewportManager->UpdateSizesBeforeReflow(); | ||||
|   } | ||||
| 
 | ||||
|   // For compat with the old code path which always reflowed as long as there
 | ||||
|   // was a root frame.
 | ||||
|   bool suppressReflow = (aOptions & ResizeReflowOptions::SuppressReflow) || | ||||
|                         mPresContext->SuppressingResizeReflow(); | ||||
|   if (!suppressReflow) { | ||||
|     mDocument->FlushPendingNotifications(FlushType::InterruptibleLayout); | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| void PresShell::AddResizeEventFlushObserverIfNeeded() { | ||||
|  | @ -2029,7 +2020,7 @@ void PresShell::AddResizeEventFlushObserverIfNeeded() { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| nsresult PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, | ||||
| bool PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, | ||||
|                                            ResizeReflowOptions aOptions) { | ||||
|   MOZ_ASSERT(!mIsReflowing, "Shouldn't be in reflow here!"); | ||||
| 
 | ||||
|  | @ -2047,18 +2038,14 @@ nsresult PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, | |||
|   if (!(aOptions & ResizeReflowOptions::BSizeLimit)) { | ||||
|     nsSize oldSize = mPresContext->GetVisibleArea().Size(); | ||||
|     if (oldSize == nsSize(aWidth, aHeight)) { | ||||
|       return NS_OK; | ||||
|       return false; | ||||
|     } | ||||
| 
 | ||||
|     SimpleResizeReflow(aWidth, aHeight, aOptions); | ||||
|     bool changed = SimpleResizeReflow(aWidth, aHeight); | ||||
|     postResizeEventIfNeeded(); | ||||
|     return NS_OK; | ||||
|     return changed; | ||||
|   } | ||||
| 
 | ||||
|   MOZ_ASSERT(!mPresContext->SuppressingResizeReflow() && | ||||
|                  !(aOptions & ResizeReflowOptions::SuppressReflow), | ||||
|              "Can't suppress resize reflow and shrink-wrap at the same time"); | ||||
| 
 | ||||
|   // Make sure that style is flushed before setting the pres context
 | ||||
|   // VisibleArea.
 | ||||
|   //
 | ||||
|  | @ -2075,13 +2062,13 @@ nsresult PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, | |||
|     if (aHeight == NS_UNCONSTRAINEDSIZE || aWidth == NS_UNCONSTRAINEDSIZE) { | ||||
|       // We can't do the work needed for SizeToContent without a root
 | ||||
|       // frame, and we want to return before setting the visible area.
 | ||||
|       return NS_ERROR_NOT_AVAILABLE; | ||||
|       return false; | ||||
|     } | ||||
| 
 | ||||
|     mPresContext->SetVisibleArea(nsRect(0, 0, aWidth, aHeight)); | ||||
|     // There isn't anything useful we can do if the initial reflow hasn't
 | ||||
|     // happened.
 | ||||
|     return NS_OK; | ||||
|     return true; | ||||
|   } | ||||
| 
 | ||||
|   WritingMode wm = rootFrame->GetWritingMode(); | ||||
|  | @ -2141,7 +2128,7 @@ nsresult PresShell::ResizeReflowIgnoreOverride(nscoord aWidth, nscoord aHeight, | |||
|       "height should not be NS_UNCONSTRAINEDSIZE after reflow"); | ||||
| 
 | ||||
|   postResizeEventIfNeeded(); | ||||
|   return NS_OK;  // XXX this needs to be real. MMP
 | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| void PresShell::FireResizeEvent() { | ||||
|  | @ -4329,7 +4316,7 @@ void PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush aFlush) { | |||
|     // Process pending restyles, since any flush of the presshell wants
 | ||||
|     // up-to-date style data.
 | ||||
|     if (MOZ_LIKELY(!mIsDestroying)) { | ||||
|       viewManager->FlushDelayedResize(false); | ||||
|       viewManager->FlushDelayedResize(); | ||||
|       mPresContext->FlushPendingMediaFeatureValuesChanged(); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -346,15 +346,17 @@ class PresShell final : public nsStubDocumentObserver, | |||
|   MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult Initialize(); | ||||
| 
 | ||||
|   /**
 | ||||
|    * Reflow the frame model into a new width and height.  The | ||||
|    * Schedule a reflow for the frame model into a new width and height.  The | ||||
|    * coordinates for aWidth and aHeight must be in standard nscoord's. | ||||
|    * | ||||
|    * Returns whether layout might have changed. | ||||
|    */ | ||||
|   MOZ_CAN_RUN_SCRIPT nsresult | ||||
|   ResizeReflow(nscoord aWidth, nscoord aHeight, | ||||
|   MOZ_CAN_RUN_SCRIPT void ResizeReflow( | ||||
|       nscoord aWidth, nscoord aHeight, | ||||
|       ResizeReflowOptions = ResizeReflowOptions::NoOption); | ||||
|   MOZ_CAN_RUN_SCRIPT bool ResizeReflowIgnoreOverride( | ||||
|       nscoord aWidth, nscoord aHeight, | ||||
|       ResizeReflowOptions = ResizeReflowOptions::NoOption); | ||||
|   MOZ_CAN_RUN_SCRIPT nsresult ResizeReflowIgnoreOverride(nscoord aWidth, | ||||
|                                                          nscoord aHeight, | ||||
|                                                          ResizeReflowOptions); | ||||
| 
 | ||||
|   /**
 | ||||
|    * Add this pres shell to the refresh driver to be observed for resize | ||||
|  | @ -382,7 +384,7 @@ class PresShell final : public nsStubDocumentObserver, | |||
|    * This is what ResizeReflowIgnoreOverride does when not shrink-wrapping (that | ||||
|    * is, when ResizeReflowOptions::BSizeLimit is not specified). | ||||
|    */ | ||||
|   void SimpleResizeReflow(nscoord aWidth, nscoord aHeight, ResizeReflowOptions); | ||||
|   bool SimpleResizeReflow(nscoord aWidth, nscoord aHeight); | ||||
| 
 | ||||
|  public: | ||||
|   /**
 | ||||
|  |  | |||
|  | @ -36,12 +36,6 @@ enum class ResizeReflowOptions : uint32_t { | |||
|   // the resulting BSize can be less than the given one, producing
 | ||||
|   // shrink-to-fit sizing in the block dimension
 | ||||
|   BSizeLimit = 1 << 0, | ||||
|   // Invalidate layout, but don't reflow.
 | ||||
|   //
 | ||||
|   // TODO(emilio): Ideally this should just become the default, or we should
 | ||||
|   // unconditionally not reflow and rely on the caller to do so, having a
 | ||||
|   // separate API for shrink-to-fit.
 | ||||
|   SuppressReflow = 1 << 1, | ||||
| }; | ||||
| 
 | ||||
| MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(ResizeReflowOptions) | ||||
|  |  | |||
|  | @ -2634,9 +2634,8 @@ nsresult nsDocumentViewer::GetContentSizeInternal(int32_t* aWidth, | |||
| 
 | ||||
|   nscoord height = wm.IsVertical() ? prefISize : aMaxHeight; | ||||
|   nscoord width = wm.IsVertical() ? aMaxWidth : prefISize; | ||||
|   nsresult rv = | ||||
| 
 | ||||
|   presShell->ResizeReflow(width, height, ResizeReflowOptions::BSizeLimit); | ||||
|   NS_ENSURE_SUCCESS(rv, rv); | ||||
| 
 | ||||
|   RefPtr<nsPresContext> presContext = GetPresContext(); | ||||
|   NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE); | ||||
|  |  | |||
|  | @ -278,7 +278,6 @@ nsPresContext::nsPresContext(dom::Document* aDocument, nsPresContextType aType) | |||
|       mUsesFontMetricDependentFontUnits(false), | ||||
|       mCounterStylesDirty(true), | ||||
|       mFontFeatureValuesDirty(true), | ||||
|       mSuppressResizeReflow(false), | ||||
|       mIsVisual(false), | ||||
|       mHasWarnedAboutPositionedTableParts(false), | ||||
|       mHasWarnedAboutTooLargeDashedOrDottedRadius(false), | ||||
|  | @ -1285,15 +1284,6 @@ void nsPresContext::SetFullZoom(float aZoom) { | |||
|   float oldHeightDevPixels = oldHeightAppUnits / float(mCurAppUnitsPerDevPixel); | ||||
|   mDeviceContext->SetFullZoom(aZoom); | ||||
| 
 | ||||
|   NS_ASSERTION(!mSuppressResizeReflow, | ||||
|                "two zooms happening at the same time? Impossible!"); | ||||
| 
 | ||||
|   // We can't suppress the resize reflow if we support APZ zooming, as MVM
 | ||||
|   // relies on ResizeReflowIgnoreOverride() actually updating layout to update
 | ||||
|   // the viewport based on that.
 | ||||
|   RefPtr<MobileViewportManager> mvm = mPresShell->GetMobileViewportManager(); | ||||
|   mSuppressResizeReflow = !mvm; | ||||
| 
 | ||||
|   mFullZoom = aZoom; | ||||
| 
 | ||||
|   AppUnitsPerDevPixelChanged(); | ||||
|  | @ -1301,8 +1291,6 @@ void nsPresContext::SetFullZoom(float aZoom) { | |||
|   mPresShell->GetViewManager()->SetWindowDimensions( | ||||
|       NSToCoordRound(oldWidthDevPixels * AppUnitsPerDevPixel()), | ||||
|       NSToCoordRound(oldHeightDevPixels * AppUnitsPerDevPixel())); | ||||
| 
 | ||||
|   mSuppressResizeReflow = false; | ||||
| } | ||||
| 
 | ||||
| void nsPresContext::SetOverrideDPPX(float aDPPX) { | ||||
|  | @ -2836,8 +2824,7 @@ void nsPresContext::SetDynamicToolbarMaxHeight(ScreenIntCoord aHeight) { | |||
|     nscoord currentWidth, currentHeight; | ||||
|     presShell->GetViewManager()->GetWindowDimensions(¤tWidth, | ||||
|                                                      ¤tHeight); | ||||
|     presShell->ResizeReflow(currentWidth, currentHeight, | ||||
|                             ResizeReflowOptions::NoOption); | ||||
|     presShell->ResizeReflow(currentWidth, currentHeight); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -906,8 +906,6 @@ class nsPresContext : public nsISupports, public mozilla::SupportsWeakPtr { | |||
|   // Is this presentation in a chrome docshell?
 | ||||
|   bool IsChrome() const; | ||||
| 
 | ||||
|   bool SuppressingResizeReflow() const { return mSuppressResizeReflow; } | ||||
| 
 | ||||
|   gfxUserFontSet* GetUserFontSet(); | ||||
| 
 | ||||
|   // Should be called whenever the set of fonts available in the user
 | ||||
|  | @ -1364,10 +1362,6 @@ class nsPresContext : public nsISupports, public mozilla::SupportsWeakPtr { | |||
|   // Is the current mFontFeatureValuesLookup valid?
 | ||||
|   unsigned mFontFeatureValuesDirty : 1; | ||||
| 
 | ||||
|   // resize reflow is suppressed when the only change has been to zoom
 | ||||
|   // the document rather than to change the document's dimensions
 | ||||
|   unsigned mSuppressResizeReflow : 1; | ||||
| 
 | ||||
|   unsigned mIsVisual : 1; | ||||
| 
 | ||||
|   unsigned mHasWarnedAboutPositionedTableParts : 1; | ||||
|  |  | |||
|  | @ -9,8 +9,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1067345 | |||
|   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> | ||||
| </head> | ||||
| <body> | ||||
| 
 | ||||
|   <script type="text/javascript"> | ||||
|   <script> | ||||
|     // Ensure srcset/picture are enabled, re-run the test at different DPI | ||||
|     // levels to ensure preload step does the right responsive image selection | ||||
| 
 | ||||
|  | @ -67,6 +66,9 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1067345 | |||
|         iframe.addEventListener("load", function() { | ||||
|           SpecialPowers.pushPrefEnv({"set": [ [ "layout.css.devPixelsPerPx", currentDPI ]] }, | ||||
|                                     function() { | ||||
|             // Make sure we trigger a layout flush so that the frame is sized | ||||
|             // appropriately after the DPI changes. | ||||
|             iframe.getBoundingClientRect(); | ||||
|             // Clear image cache for next run (we don't try to validate cached items | ||||
|             // in preload). | ||||
|             SpecialPowers.Cc["@mozilla.org/image/tools;1"] | ||||
|  |  | |||
|  | @ -165,8 +165,7 @@ void nsViewManager::GetWindowDimensions(nscoord* aWidth, nscoord* aHeight) { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| void nsViewManager::DoSetWindowDimensions(nscoord aWidth, nscoord aHeight, | ||||
|                                           bool aDoReflow) { | ||||
| void nsViewManager::DoSetWindowDimensions(nscoord aWidth, nscoord aHeight) { | ||||
|   nsRect oldDim = mRootView->GetDimensions(); | ||||
|   nsRect newDim(0, 0, aWidth, aHeight); | ||||
|   // We care about resizes even when one dimension is already zero.
 | ||||
|  | @ -176,11 +175,7 @@ void nsViewManager::DoSetWindowDimensions(nscoord aWidth, nscoord aHeight, | |||
|   // Don't resize the widget. It is already being set elsewhere.
 | ||||
|   mRootView->SetDimensions(newDim, true, false); | ||||
|   if (RefPtr<PresShell> presShell = mPresShell) { | ||||
|     auto options = ResizeReflowOptions::NoOption; | ||||
|     if (!aDoReflow) { | ||||
|       options |= ResizeReflowOptions::SuppressReflow; | ||||
|     } | ||||
|     presShell->ResizeReflow(aWidth, aHeight, options); | ||||
|     presShell->ResizeReflow(aWidth, aHeight); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | @ -210,10 +205,10 @@ void nsViewManager::SetWindowDimensions(nscoord aWidth, nscoord aHeight, | |||
|         // root view's current size then DoSetWindowDimensions will not
 | ||||
|         // request a resize reflow (which would correct it). See bug 617076.
 | ||||
|         mDelayedResize = nsSize(aWidth, aHeight); | ||||
|         FlushDelayedResize(false); | ||||
|         FlushDelayedResize(); | ||||
|       } | ||||
|       mDelayedResize.SizeTo(NSCOORD_NONE, NSCOORD_NONE); | ||||
|       DoSetWindowDimensions(aWidth, aHeight, /* aDoReflow = */ true); | ||||
|       DoSetWindowDimensions(aWidth, aHeight); | ||||
|     } else { | ||||
|       mDelayedResize.SizeTo(aWidth, aHeight); | ||||
|       if (mPresShell) { | ||||
|  | @ -224,10 +219,9 @@ void nsViewManager::SetWindowDimensions(nscoord aWidth, nscoord aHeight, | |||
|   } | ||||
| } | ||||
| 
 | ||||
| void nsViewManager::FlushDelayedResize(bool aDoReflow) { | ||||
| void nsViewManager::FlushDelayedResize() { | ||||
|   if (mDelayedResize != nsSize(NSCOORD_NONE, NSCOORD_NONE)) { | ||||
|     DoSetWindowDimensions(mDelayedResize.width, mDelayedResize.height, | ||||
|                           aDoReflow); | ||||
|     DoSetWindowDimensions(mDelayedResize.width, mDelayedResize.height); | ||||
|     mDelayedResize.SizeTo(NSCOORD_NONE, NSCOORD_NONE); | ||||
|   } | ||||
| } | ||||
|  | @ -410,7 +404,7 @@ void nsViewManager::ProcessPendingUpdatesPaint(nsIWidget* aWidget) { | |||
|       if (vm->mDelayedResize != nsSize(NSCOORD_NONE, NSCOORD_NONE) && | ||||
|           vm->mRootView->IsEffectivelyVisible() && vm->mPresShell && | ||||
|           vm->mPresShell->IsVisible()) { | ||||
|         vm->FlushDelayedResize(true); | ||||
|         vm->FlushDelayedResize(); | ||||
|       } | ||||
|     } | ||||
|     nsView* view = nsView::GetViewFor(aWidget); | ||||
|  |  | |||
|  | @ -99,7 +99,7 @@ class nsViewManager final { | |||
|   /**
 | ||||
|    * Do any resizes that are pending. | ||||
|    */ | ||||
|   void FlushDelayedResize(bool aDoReflow); | ||||
|   void FlushDelayedResize(); | ||||
| 
 | ||||
|   /**
 | ||||
|    * Called to inform the view manager that the entire area of a view | ||||
|  | @ -365,7 +365,7 @@ class nsViewManager final { | |||
|   LayoutDeviceIntRect ViewToWidget(nsView* aView, const nsRect& aRect) const; | ||||
| 
 | ||||
|   MOZ_CAN_RUN_SCRIPT_BOUNDARY | ||||
|   void DoSetWindowDimensions(nscoord aWidth, nscoord aHeight, bool aDoReflow); | ||||
|   void DoSetWindowDimensions(nscoord aWidth, nscoord aHeight); | ||||
|   bool ShouldDelayResize() const; | ||||
| 
 | ||||
|   bool IsPainting() const { return RootViewManager()->mPainting; } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Emilio Cobos Álvarez
						Emilio Cobos Álvarez