From 876fb99ca4763c4345581a63717eb9e4ae6ec42c Mon Sep 17 00:00:00 2001 From: "kmcclusk%netscape.com" Date: Fri, 17 Mar 2000 22:27:26 +0000 Subject: [PATCH] #ifdef'ed out timer used to flush paints. It is not needed b=31407 r=attanasi@netscape.com Changed mVMCount from PRUint32 to PRInt32 to make ASSERTION checking for a negative value in mWMCount valid b=11674 r=attanasi@netscape.com git-svn-id: svn://10.0.0.236/trunk@63326 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/view/src/nsViewManager.cpp | 19 +++++++++++++++---- mozilla/view/src/nsViewManager.h | 10 +++++++++- mozilla/view/src/nsViewManager2.cpp | 18 ++++++++++++++++-- mozilla/view/src/nsViewManager2.h | 11 ++++++++++- 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/mozilla/view/src/nsViewManager.cpp b/mozilla/view/src/nsViewManager.cpp index 6976e333e3d..d4c20018b90 100644 --- a/mozilla/view/src/nsViewManager.cpp +++ b/mozilla/view/src/nsViewManager.cpp @@ -64,9 +64,12 @@ struct DisplayListElement { PRUint32 mFlags; }; +#ifdef NS_VIEWMANAGER_NEEDS_TIMER + static void vm_timer_callback(nsITimer *aTimer, void *aClosure) { nsViewManager *vm = (nsViewManager *)aClosure; + printf("ViewManager timer callback\n"); //restart the timer @@ -88,6 +91,7 @@ static void vm_timer_callback(nsITimer *aTimer, void *aClosure) vm->Composite(); #endif } +#endif #if 0 static void blinkRect(nsIRenderingContext* context, const nsRect& r) @@ -98,7 +102,7 @@ static void blinkRect(nsIRenderingContext* context, const nsRect& r) } #endif -PRUint32 nsViewManager::mVMCount = 0; +PRInt32 nsViewManager::mVMCount = 0; nsDrawingSurface nsViewManager::mDrawingSurface = nsnull; nsRect nsViewManager::mDSBounds = nsRect(0, 0, 0, 0); @@ -120,11 +124,13 @@ nsViewManager :: nsViewManager() nsViewManager :: ~nsViewManager() { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER if (nsnull != mTimer) { mTimer->Cancel(); //XXX this should not be necessary. MMP NS_RELEASE(mTimer); } +#endif NS_IF_RELEASE(mRootWindow); @@ -263,8 +269,9 @@ NS_IMETHODIMP nsViewManager :: Init(nsIDeviceContext* aContext) return NS_ERROR_ALREADY_INITIALIZED; } mContext = aContext; - +#ifdef NS_VIEWMANAGER_NEEDS_TIMER mTimer = nsnull; +#endif mFrameRate = 0; mTrueFrameRate = 0; mTransCnt = 0; @@ -344,21 +351,26 @@ NS_IMETHODIMP nsViewManager :: SetFrameRate(PRUint32 aFrameRate) if (aFrameRate != mFrameRate) { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER + //XXX: Reimplement using a repeating timer if (nsnull != mTimer) { mTimer->Cancel(); //XXX this should not be necessary. MMP NS_RELEASE(mTimer); } +#endif mFrameRate = aFrameRate; mTrueFrameRate = aFrameRate; if (mFrameRate != 0) { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER rv = NS_NewTimer(&mTimer); if (NS_OK == rv) mTimer->Init(vm_timer_callback, this, 1000 / mFrameRate); +#endif } else rv = NS_OK; @@ -2854,8 +2866,7 @@ nsresult nsViewManager::GetVisibleRect(nsRect& aVisibleRect) // Determine the visible rect in the scrolled view's coordinate space. // The size of the visible area is the clip view size const nsIView* clipView; - nsRect visibleRect; - + scrollingView->GetScrollPosition(aVisibleRect.x, aVisibleRect.y); scrollingView->GetClipView(&clipView); clipView->GetDimensions(&aVisibleRect.width, &aVisibleRect.height); diff --git a/mozilla/view/src/nsViewManager.h b/mozilla/view/src/nsViewManager.h index 115a20c24c7..23708ff5919 100644 --- a/mozilla/view/src/nsViewManager.h +++ b/mozilla/view/src/nsViewManager.h @@ -37,6 +37,12 @@ class nsISupportsArray; +// Dont want to get rid of timer code, because we may want to use it +// if we go to a implementation where we have invalidates that have been queued +// within the view manager, instead of doing invalidates on the widget. +// The timer would be used to cause the paints to happen. +//#define NS_VIEWMANAGER_NEEDS_TIMER 1 + class nsViewManager : public nsIViewManager { public: nsViewManager(); @@ -225,7 +231,7 @@ private: nsIScrollableView *mRootScrollable; //from here to public should be static and locked... MMP - static PRUint32 mVMCount; //number of viewmanagers + static PRInt32 mVMCount; //number of viewmanagers static nsDrawingSurface mDrawingSurface; //single drawing surface static nsRect mDSBounds; //for all VMs @@ -253,7 +259,9 @@ private: public: //these are public so that our timer callback can poke them. +#if NS_VIEWMANAGER_NEEDS_TIMER nsITimer *mTimer; +#endif nsRect mDirtyRect; nsIView *mRootView; PRUint32 mFrameRate; diff --git a/mozilla/view/src/nsViewManager2.cpp b/mozilla/view/src/nsViewManager2.cpp index cbda2c14170..f70f77d99d8 100755 --- a/mozilla/view/src/nsViewManager2.cpp +++ b/mozilla/view/src/nsViewManager2.cpp @@ -39,6 +39,7 @@ static NS_DEFINE_IID(kRenderingContextCID, NS_RENDERING_CONTEXT_CID); #define UPDATE_QUANTUM 1000 / 40 + //#define NO_DOUBLE_BUFFER // display list flags @@ -63,10 +64,15 @@ struct DisplayListElement2 { inline nscoord max(nscoord x, nscoord y) { return (x > y ? x : y); } inline nscoord min(nscoord x, nscoord y) { return (x < y ? x : y); } + +#ifdef NS_VIEWMANAGER_NEEDS_TIMER + static void vm_timer_callback(nsITimer *aTimer, void *aClosure) { nsViewManager2 *vm = (nsViewManager2 *)aClosure; + printf("ViewManager2 timer callback\n"); + //restart the timer if (vm->mTrueFrameRate == vm->mFrameRate) @@ -87,6 +93,7 @@ static void vm_timer_callback(nsITimer *aTimer, void *aClosure) vm->Composite(); #endif } +#endif #if 0 static void blinkRect(nsIRenderingContext* context, const nsRect& r) @@ -97,7 +104,7 @@ static void blinkRect(nsIRenderingContext* context, const nsRect& r) } #endif -PRUint32 nsViewManager2::mVMCount = 0; +PRInt32 nsViewManager2::mVMCount = 0; nsDrawingSurface nsViewManager2::mDrawingSurface = nsnull; nsRect nsViewManager2::mDSBounds = nsRect(0, 0, 0, 0); @@ -119,10 +126,12 @@ nsViewManager2::nsViewManager2() nsViewManager2::~nsViewManager2() { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER if (nsnull != mTimer) { mTimer->Cancel(); //XXX this should not be necessary. MMP NS_RELEASE(mTimer); } +#endif NS_IF_RELEASE(mRootWindow); @@ -260,7 +269,9 @@ NS_IMETHODIMP nsViewManager2::Init(nsIDeviceContext* aContext) mContext->GetAppUnitsToDevUnits(mTwipsToPixels); mContext->GetDevUnitsToAppUnits(mPixelsToTwips); +#ifdef NS_VIEWMANAGER_NEEDS_TIMER mTimer = nsnull; +#endif mFrameRate = 0; mTrueFrameRate = 0; mTransCnt = 0; @@ -340,21 +351,25 @@ NS_IMETHODIMP nsViewManager2::SetFrameRate(PRUint32 aFrameRate) if (aFrameRate != mFrameRate) { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER if (nsnull != mTimer) { mTimer->Cancel(); //XXX this should not be necessary. MMP NS_RELEASE(mTimer); } +#endif mFrameRate = aFrameRate; mTrueFrameRate = aFrameRate; if (mFrameRate != 0) { +#ifdef NS_VIEWMANAGER_NEEDS_TIMER rv = NS_NewTimer(&mTimer); if (NS_OK == rv) mTimer->Init(vm_timer_callback, this, 1000 / mFrameRate); +#endif } else rv = NS_OK; @@ -2463,7 +2478,6 @@ nsresult nsViewManager2::GetVisibleRect(nsRect& aVisibleRect) // Determine the visible rect in the scrolled view's coordinate space. // The size of the visible area is the clip view size const nsIView* clipView; - nsRect visibleRect; scrollingView->GetScrollPosition(aVisibleRect.x, aVisibleRect.y); scrollingView->GetClipView(&clipView); diff --git a/mozilla/view/src/nsViewManager2.h b/mozilla/view/src/nsViewManager2.h index 431b4288b6f..21f5f6c69a8 100755 --- a/mozilla/view/src/nsViewManager2.h +++ b/mozilla/view/src/nsViewManager2.h @@ -38,6 +38,13 @@ class nsISupportsArray; struct DisplayListElement2; + +// Dont want to get rid of timer code, because we may want to use it +// if we go to a implementation where we have invalidates that have been queued +// within the view manager, instead of doing invalidates on the widget. +// The timer would be used to cause the paints to happen. +//#define NS_VIEWMANAGER_NEEDS_TIMER 1 + class nsViewManager2 : public nsIViewManager { public: nsViewManager2(); @@ -245,7 +252,7 @@ private: nsIScrollableView *mRootScrollable; //from here to public should be static and locked... MMP - static PRUint32 mVMCount; //number of viewmanagers + static PRInt32 mVMCount; //number of viewmanagers static nsDrawingSurface mDrawingSurface; //single drawing surface static nsRect mDSBounds; //for all VMs @@ -273,7 +280,9 @@ private: public: //these are public so that our timer callback can poke them. +#ifdef NS_VIEWMANAGER_NEEDS_TIMER nsITimer *mTimer; +#endif nsRect mDirtyRect; nsIView *mRootView; PRUint32 mFrameRate;