diff --git a/mozilla/content/base/src/nsDocumentViewer.cpp b/mozilla/content/base/src/nsDocumentViewer.cpp index 8924a45c9e6..9bd62c14e91 100644 --- a/mozilla/content/base/src/nsDocumentViewer.cpp +++ b/mozilla/content/base/src/nsDocumentViewer.cpp @@ -468,7 +468,7 @@ DocumentViewerImpl::Init(nsNativeWidget aNativeParent, // Now trigger a refresh if (mEnableRendering) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } } @@ -758,7 +758,7 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) mEnableRendering = aOn; if (mViewManager) { if (aOn) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); nsIView* view; mViewManager->GetRootView(view); // views are not refCounted if (view) { diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 8ce2c9ead52..6932b3882af 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -3231,7 +3231,7 @@ HTMLContentSink::RefreshIfEnabled(nsIViewManager* vm) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(contentViewer); } diff --git a/mozilla/content/html/document/src/nsImageDocument.cpp b/mozilla/content/html/document/src/nsImageDocument.cpp index d923d9b9f5b..0506be4cb49 100644 --- a/mozilla/content/html/document/src/nsImageDocument.cpp +++ b/mozilla/content/html/document/src/nsImageDocument.cpp @@ -315,7 +315,7 @@ nsImageDocument::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(shell); diff --git a/mozilla/content/xml/document/src/nsXMLContentSink.cpp b/mozilla/content/xml/document/src/nsXMLContentSink.cpp index 5875069f1db..8dda68d3dd3 100644 --- a/mozilla/content/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/content/xml/document/src/nsXMLContentSink.cpp @@ -1867,7 +1867,7 @@ nsXMLContentSink::RefreshIfEnabled(nsIViewManager* vm) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(contentViewer); } diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index 80bcb59826b..c919a6fc680 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -3520,7 +3520,7 @@ nsXULDocument::StartLayout(void) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } } } diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index ba4c0de3e67..b7bd818af20 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -310,7 +310,7 @@ nsDocShell::SetDocument(nsIDOMDocument *aDOMDoc, nsIDOMElement *aRootNode) PRBool enabled; documentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_ENSURE_SUCCESS(vm->SetWindowDimensions(NSToCoordRound(r.width * p2t), NSToCoordRound(r.height * p2t)), diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index e2aae707214..943fae7a1a3 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -4258,7 +4258,7 @@ NS_IMETHODIMP nsWebShell::SetDocument(nsIDOMDocument *aDOMDoc, PRBool enabled; documentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_ENSURE_SUCCESS(vm->SetWindowDimensions(NSToCoordRound(r.width * p2t), NSToCoordRound(r.height * p2t)), diff --git a/mozilla/editor/base/nsEditor.cpp b/mozilla/editor/base/nsEditor.cpp index 07d81c33772..1d18032b55e 100644 --- a/mozilla/editor/base/nsEditor.cpp +++ b/mozilla/editor/base/nsEditor.cpp @@ -4383,10 +4383,10 @@ nsresult nsEditor::EndUpdateViewBatch() if (0==mUpdateCount) { #ifdef HACK_FORCE_REDRAW - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); HACKForceRedraw(); #else - mViewManager->EndUpdateViewBatch(); + mViewManager->EndUpdateViewBatch(NS_VMREFRESH_IMMEDIATE); #endif presShell->EndBatchingReflows(PR_TRUE); } diff --git a/mozilla/editor/libeditor/base/nsEditor.cpp b/mozilla/editor/libeditor/base/nsEditor.cpp index 07d81c33772..1d18032b55e 100644 --- a/mozilla/editor/libeditor/base/nsEditor.cpp +++ b/mozilla/editor/libeditor/base/nsEditor.cpp @@ -4383,10 +4383,10 @@ nsresult nsEditor::EndUpdateViewBatch() if (0==mUpdateCount) { #ifdef HACK_FORCE_REDRAW - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); HACKForceRedraw(); #else - mViewManager->EndUpdateViewBatch(); + mViewManager->EndUpdateViewBatch(NS_VMREFRESH_IMMEDIATE); #endif presShell->EndBatchingReflows(PR_TRUE); } diff --git a/mozilla/gfx/src/windows/nsRenderingContextWin.cpp b/mozilla/gfx/src/windows/nsRenderingContextWin.cpp index 82f2b17bfb0..29c2244fd17 100644 --- a/mozilla/gfx/src/windows/nsRenderingContextWin.cpp +++ b/mozilla/gfx/src/windows/nsRenderingContextWin.cpp @@ -404,6 +404,7 @@ nsresult nsRenderingContextWin :: SetupDC(HDC aOldDC, HDC aNewDC) ::SetBkMode(aNewDC, TRANSPARENT); ::SetPolyFillMode(aNewDC, WINDING); ::SetStretchBltMode(aNewDC, COLORONCOLOR); + ::SetTextAlign(aNewDC, TA_BASELINE); if (nsnull != aOldDC) { @@ -1760,7 +1761,6 @@ NS_IMETHODIMP nsRenderingContextWin :: DrawString(const char *aString, PRUint32 nscoord ascent; mFontMetrics->GetMaxAscent(ascent); aY += ascent; - ::SetTextAlign(mDC, TA_BASELINE); PRInt32 x = aX; PRInt32 y = aY; @@ -1797,7 +1797,6 @@ NS_IMETHODIMP nsRenderingContextWin :: DrawString(const PRUnichar *aString, PRUi nscoord ascent; mFontMetrics->GetMaxAscent(ascent); aY += ascent; - ::SetTextAlign(mDC, TA_BASELINE); PRInt32 x = aX; PRInt32 y = aY; @@ -2588,7 +2587,6 @@ NS_IMETHODIMP nsRenderingContextWinA :: DrawString(const PRUnichar *aString, PRU nscoord ascent; mFontMetrics->GetMaxAscent(ascent); aY += ascent; - ::SetTextAlign(mDC, TA_BASELINE); PRInt32 x = aX; PRInt32 y = aY; diff --git a/mozilla/layout/base/nsCSSFrameConstructor.cpp b/mozilla/layout/base/nsCSSFrameConstructor.cpp index 12c6f74a7c5..16257c4c4ad 100644 --- a/mozilla/layout/base/nsCSSFrameConstructor.cpp +++ b/mozilla/layout/base/nsCSSFrameConstructor.cpp @@ -7285,7 +7285,19 @@ ApplyRenderingChangeToTree(nsIPresContext* aPresContext, } if (viewManager) { - viewManager->EndUpdateViewBatch(); + nsCOMPtr presShell; + nsresult rv = aPresContext->GetShell(getter_AddRefs(presShell)); + if (NS_SUCCEEDED(rv)) { + PRBool isReflowLocked = PR_FALSE; + presShell->IsReflowLocked(&isReflowLocked); + if (isReflowLocked) { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC); + } else { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_IMMEDIATE); + } + } else { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC); + } // viewManager->Composite(); NS_RELEASE(viewManager); } diff --git a/mozilla/layout/base/nsDocumentViewer.cpp b/mozilla/layout/base/nsDocumentViewer.cpp index 8924a45c9e6..9bd62c14e91 100644 --- a/mozilla/layout/base/nsDocumentViewer.cpp +++ b/mozilla/layout/base/nsDocumentViewer.cpp @@ -468,7 +468,7 @@ DocumentViewerImpl::Init(nsNativeWidget aNativeParent, // Now trigger a refresh if (mEnableRendering) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } } @@ -758,7 +758,7 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) mEnableRendering = aOn; if (mViewManager) { if (aOn) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); nsIView* view; mViewManager->GetRootView(view); // views are not refCounted if (view) { diff --git a/mozilla/layout/base/nsIPresShell.h b/mozilla/layout/base/nsIPresShell.h index c3c695b72b0..6b95969e7a0 100644 --- a/mozilla/layout/base/nsIPresShell.h +++ b/mozilla/layout/base/nsIPresShell.h @@ -383,6 +383,12 @@ public: */ NS_IMETHOD FlushPendingNotifications() = 0; + /** + * Determine if reflow is currently locked + * @param aIsReflowLocked returns PR_TRUE if reflow is locked, PR_FALSE otherwise + */ + NS_IMETHOD IsReflowLocked(PRBool* aIsLocked) = 0; + /** * See if reflow verification is enabled. To enable reflow verification add * "verifyreflow:1" to your NSPR_LOG_MODULES environment variable diff --git a/mozilla/layout/base/nsPresShell.cpp b/mozilla/layout/base/nsPresShell.cpp index 70447a02f2f..8ba7c6ab4c5 100644 --- a/mozilla/layout/base/nsPresShell.cpp +++ b/mozilla/layout/base/nsPresShell.cpp @@ -355,6 +355,7 @@ public: NS_IMETHOD FlushPendingNotifications(); + NS_IMETHOD IsReflowLocked(PRBool* aIsLocked); //nsIViewObserver interface @@ -2416,6 +2417,15 @@ PresShell::FlushPendingNotifications() return NS_OK; } +NS_IMETHODIMP +PresShell::IsReflowLocked(PRBool* aIsReflowLocked) +{ + *aIsReflowLocked = (mReflowLockCount > 0); + return NS_OK; +} + + + NS_IMETHODIMP PresShell::BeginBatchingReflows() { diff --git a/mozilla/layout/base/public/nsIPresShell.h b/mozilla/layout/base/public/nsIPresShell.h index c3c695b72b0..6b95969e7a0 100644 --- a/mozilla/layout/base/public/nsIPresShell.h +++ b/mozilla/layout/base/public/nsIPresShell.h @@ -383,6 +383,12 @@ public: */ NS_IMETHOD FlushPendingNotifications() = 0; + /** + * Determine if reflow is currently locked + * @param aIsReflowLocked returns PR_TRUE if reflow is locked, PR_FALSE otherwise + */ + NS_IMETHOD IsReflowLocked(PRBool* aIsLocked) = 0; + /** * See if reflow verification is enabled. To enable reflow verification add * "verifyreflow:1" to your NSPR_LOG_MODULES environment variable diff --git a/mozilla/layout/base/src/nsDocumentViewer.cpp b/mozilla/layout/base/src/nsDocumentViewer.cpp index 8924a45c9e6..9bd62c14e91 100644 --- a/mozilla/layout/base/src/nsDocumentViewer.cpp +++ b/mozilla/layout/base/src/nsDocumentViewer.cpp @@ -468,7 +468,7 @@ DocumentViewerImpl::Init(nsNativeWidget aNativeParent, // Now trigger a refresh if (mEnableRendering) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } } @@ -758,7 +758,7 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) mEnableRendering = aOn; if (mViewManager) { if (aOn) { - mViewManager->EnableRefresh(); + mViewManager->EnableRefresh(NS_VMREFRESH_IMMEDIATE); nsIView* view; mViewManager->GetRootView(view); // views are not refCounted if (view) { diff --git a/mozilla/layout/html/base/src/nsPresShell.cpp b/mozilla/layout/html/base/src/nsPresShell.cpp index 70447a02f2f..8ba7c6ab4c5 100644 --- a/mozilla/layout/html/base/src/nsPresShell.cpp +++ b/mozilla/layout/html/base/src/nsPresShell.cpp @@ -355,6 +355,7 @@ public: NS_IMETHOD FlushPendingNotifications(); + NS_IMETHOD IsReflowLocked(PRBool* aIsLocked); //nsIViewObserver interface @@ -2416,6 +2417,15 @@ PresShell::FlushPendingNotifications() return NS_OK; } +NS_IMETHODIMP +PresShell::IsReflowLocked(PRBool* aIsReflowLocked) +{ + *aIsReflowLocked = (mReflowLockCount > 0); + return NS_OK; +} + + + NS_IMETHODIMP PresShell::BeginBatchingReflows() { diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp index 8ce2c9ead52..6932b3882af 100644 --- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp @@ -3231,7 +3231,7 @@ HTMLContentSink::RefreshIfEnabled(nsIViewManager* vm) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(contentViewer); } diff --git a/mozilla/layout/html/document/src/nsImageDocument.cpp b/mozilla/layout/html/document/src/nsImageDocument.cpp index d923d9b9f5b..0506be4cb49 100644 --- a/mozilla/layout/html/document/src/nsImageDocument.cpp +++ b/mozilla/layout/html/document/src/nsImageDocument.cpp @@ -315,7 +315,7 @@ nsImageDocument::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(shell); diff --git a/mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp b/mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp index 12c6f74a7c5..16257c4c4ad 100644 --- a/mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp +++ b/mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp @@ -7285,7 +7285,19 @@ ApplyRenderingChangeToTree(nsIPresContext* aPresContext, } if (viewManager) { - viewManager->EndUpdateViewBatch(); + nsCOMPtr presShell; + nsresult rv = aPresContext->GetShell(getter_AddRefs(presShell)); + if (NS_SUCCEEDED(rv)) { + PRBool isReflowLocked = PR_FALSE; + presShell->IsReflowLocked(&isReflowLocked); + if (isReflowLocked) { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC); + } else { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_IMMEDIATE); + } + } else { + viewManager->EndUpdateViewBatch(NS_VMREFRESH_NO_SYNC); + } // viewManager->Composite(); NS_RELEASE(viewManager); } diff --git a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp index 5875069f1db..8dda68d3dd3 100644 --- a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp @@ -1867,7 +1867,7 @@ nsXMLContentSink::RefreshIfEnabled(nsIViewManager* vm) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_RELEASE(contentViewer); } diff --git a/mozilla/rdf/content/src/nsXULDocument.cpp b/mozilla/rdf/content/src/nsXULDocument.cpp index 80bcb59826b..c919a6fc680 100644 --- a/mozilla/rdf/content/src/nsXULDocument.cpp +++ b/mozilla/rdf/content/src/nsXULDocument.cpp @@ -3520,7 +3520,7 @@ nsXULDocument::StartLayout(void) PRBool enabled; contentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } } } diff --git a/mozilla/view/public/nsIViewManager.h b/mozilla/view/public/nsIViewManager.h index e3b74cc324e..de4a3fa0e5f 100644 --- a/mozilla/view/public/nsIViewManager.h +++ b/mozilla/view/public/nsIViewManager.h @@ -379,9 +379,10 @@ public: /** * allow the view manager to refresh. this may cause a synchronous * paint to occur inside the call. + * @param aUpdateFlags see bottom of nsIViewManager.h for description * @return error status */ - NS_IMETHOD EnableRefresh(void) = 0; + NS_IMETHOD EnableRefresh(PRUint32 aUpdateFlags) = 0; /** * prevents the view manager from refreshing. allows UpdateView() @@ -394,10 +395,11 @@ public: /** * allow the view manager to refresh any damaged areas accumulated * after the BeginUpdateViewBatch() call. this may cause a - * synchronous paint to occur inside the call. + * synchronous paint to occur inside the call if aUpdateFlags NS_VMREFRESH_IMMEDIATE is set + * @param aUpdateFlags see bottom of nsIViewManager.h for description * @return error status */ - NS_IMETHOD EndUpdateViewBatch(void) = 0; + NS_IMETHOD EndUpdateViewBatch(PRUint32 aUpdateFlags) = 0; /** * set the view that is is considered to be the root scrollable diff --git a/mozilla/view/src/nsViewManager.cpp b/mozilla/view/src/nsViewManager.cpp index a559f8ddb9c..45c550ee2ce 100644 --- a/mozilla/view/src/nsViewManager.cpp +++ b/mozilla/view/src/nsViewManager.cpp @@ -264,7 +264,6 @@ NS_IMETHODIMP nsViewManager :: Init(nsIDeviceContext* aContext) } mContext = aContext; - mDSBounds.Empty(); mTimer = nsnull; mFrameRate = 0; mTrueFrameRate = 0; @@ -2339,7 +2338,7 @@ NS_IMETHODIMP nsViewManager :: DisableRefresh(void) return NS_OK; } -NS_IMETHODIMP nsViewManager :: EnableRefresh(void) +NS_IMETHODIMP nsViewManager :: EnableRefresh(PRUint32 aUpdateFlags) { if (mUpdateBatchCnt > 0) return NS_OK; @@ -2349,14 +2348,18 @@ NS_IMETHODIMP nsViewManager :: EnableRefresh(void) if (mUpdateCnt > 0) ProcessPendingUpdates(mRootView); - if (mTrueFrameRate > 0) - { - PRInt32 deltams = PR_IntervalToMilliseconds(PR_IntervalNow() - mLastRefresh); + if (aUpdateFlags & NS_VMREFRESH_IMMEDIATE) { + + if (mTrueFrameRate > 0) + { + PRInt32 deltams = PR_IntervalToMilliseconds(PR_IntervalNow() - mLastRefresh); - if (deltams > (1000 / (PRInt32)mTrueFrameRate)) - Composite(); + if (deltams > (1000 / (PRInt32)mTrueFrameRate)) + Composite(); + } } + return NS_OK; } @@ -2373,7 +2376,7 @@ NS_IMETHODIMP nsViewManager :: BeginUpdateViewBatch(void) return result; } -NS_IMETHODIMP nsViewManager :: EndUpdateViewBatch(void) +NS_IMETHODIMP nsViewManager :: EndUpdateViewBatch(PRUint32 aUpdateFlags) { nsresult result = NS_OK; @@ -2388,7 +2391,7 @@ NS_IMETHODIMP nsViewManager :: EndUpdateViewBatch(void) } if (mUpdateBatchCnt == 0) - result = EnableRefresh(); + result = EnableRefresh(aUpdateFlags); return result; } diff --git a/mozilla/view/src/nsViewManager.h b/mozilla/view/src/nsViewManager.h index 1d17853773d..66064514a3b 100644 --- a/mozilla/view/src/nsViewManager.h +++ b/mozilla/view/src/nsViewManager.h @@ -114,10 +114,10 @@ public: NS_IMETHOD SetQuality(nsContentQuality aQuality); NS_IMETHOD DisableRefresh(void); - NS_IMETHOD EnableRefresh(void); + NS_IMETHOD EnableRefresh(PRUint32 aUpdateFlags); NS_IMETHOD BeginUpdateViewBatch(void); - NS_IMETHOD EndUpdateViewBatch(void); + NS_IMETHOD EndUpdateViewBatch(PRUint32 aUpdateFlags); NS_IMETHOD SetRootScrollableView(nsIScrollableView *aScrollable); NS_IMETHOD GetRootScrollableView(nsIScrollableView **aScrollable); diff --git a/mozilla/view/src/nsViewManager2.cpp b/mozilla/view/src/nsViewManager2.cpp index 5f4ee562a09..ab53fedacc8 100755 --- a/mozilla/view/src/nsViewManager2.cpp +++ b/mozilla/view/src/nsViewManager2.cpp @@ -1832,7 +1832,7 @@ NS_IMETHODIMP nsViewManager2::DisableRefresh(void) return NS_OK; } -NS_IMETHODIMP nsViewManager2::EnableRefresh(void) +NS_IMETHODIMP nsViewManager2::EnableRefresh(PRUint32 aUpdateFlags) { if (mUpdateBatchCnt > 0) return NS_OK; @@ -1842,14 +1842,18 @@ NS_IMETHODIMP nsViewManager2::EnableRefresh(void) if (mUpdateCnt > 0) ProcessPendingUpdates(mRootView); - if (mTrueFrameRate > 0) - { - PRInt32 deltams = PR_IntervalToMilliseconds(PR_IntervalNow() - mLastRefresh); + if (aUpdateFlags & NS_VMREFRESH_IMMEDIATE) { + + if (mTrueFrameRate > 0) + { + PRInt32 deltams = PR_IntervalToMilliseconds(PR_IntervalNow() - mLastRefresh); - if (deltams > (1000 / (PRInt32)mTrueFrameRate)) - Composite(); + if (deltams > (1000 / (PRInt32)mTrueFrameRate)) + Composite(); + } } + return NS_OK; } @@ -1866,7 +1870,7 @@ NS_IMETHODIMP nsViewManager2::BeginUpdateViewBatch(void) return result; } -NS_IMETHODIMP nsViewManager2::EndUpdateViewBatch(void) +NS_IMETHODIMP nsViewManager2::EndUpdateViewBatch(PRUint32 aUpdateFlags) { nsresult result = NS_OK; @@ -1881,7 +1885,7 @@ NS_IMETHODIMP nsViewManager2::EndUpdateViewBatch(void) } if (mUpdateBatchCnt == 0) - result = EnableRefresh(); + result = EnableRefresh(aUpdateFlags); return result; } diff --git a/mozilla/view/src/nsViewManager2.h b/mozilla/view/src/nsViewManager2.h index cc90ee1dd5f..3c3942549a5 100755 --- a/mozilla/view/src/nsViewManager2.h +++ b/mozilla/view/src/nsViewManager2.h @@ -115,10 +115,10 @@ public: NS_IMETHOD SetQuality(nsContentQuality aQuality); NS_IMETHOD DisableRefresh(void); - NS_IMETHOD EnableRefresh(void); + NS_IMETHOD EnableRefresh(PRUint32 aUpdateFlags); NS_IMETHOD BeginUpdateViewBatch(void); - NS_IMETHOD EndUpdateViewBatch(void); + NS_IMETHOD EndUpdateViewBatch(PRUint32 aUpdateFlags); NS_IMETHOD SetRootScrollableView(nsIScrollableView *aScrollable); NS_IMETHOD GetRootScrollableView(nsIScrollableView **aScrollable); diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index e2aae707214..943fae7a1a3 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -4258,7 +4258,7 @@ NS_IMETHODIMP nsWebShell::SetDocument(nsIDOMDocument *aDOMDoc, PRBool enabled; documentViewer->GetEnableRendering(&enabled); if (enabled) { - vm->EnableRefresh(); + vm->EnableRefresh(NS_VMREFRESH_IMMEDIATE); } NS_ENSURE_SUCCESS(vm->SetWindowDimensions(NSToCoordRound(r.width * p2t), NSToCoordRound(r.height * p2t)),