зеркало из https://github.com/mozilla/pjs.git
Bug 563327 part 1. Expose an nsIPresShell API for refresh observers. r=roc
This commit is contained in:
Родитель
44545d494f
Коммит
075d271004
|
@ -11835,8 +11835,7 @@ nsCSSFrameConstructor::PostRestyleEventInternal(PRBool aForLazyConstruction)
|
||||||
// add ourselves as a refresh observer until then.
|
// add ourselves as a refresh observer until then.
|
||||||
PRBool inRefresh = aForLazyConstruction ? mInLazyFCRefresh : mInStyleRefresh;
|
PRBool inRefresh = aForLazyConstruction ? mInLazyFCRefresh : mInStyleRefresh;
|
||||||
if (!mObservingRefreshDriver && !inRefresh) {
|
if (!mObservingRefreshDriver && !inRefresh) {
|
||||||
mObservingRefreshDriver = mPresShell->GetPresContext()->
|
mObservingRefreshDriver = mPresShell->AddRefreshObserver(this, Flush_Style);
|
||||||
RefreshDriver()->AddRefreshObserver(this, Flush_Style);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11848,8 +11847,7 @@ nsCSSFrameConstructor::WillRefresh(mozilla::TimeStamp aTime)
|
||||||
// a refresh so we don't restart due to animation-triggered
|
// a refresh so we don't restart due to animation-triggered
|
||||||
// restyles. The actual work of processing our restyles will get
|
// restyles. The actual work of processing our restyles will get
|
||||||
// done when the refresh driver flushes styles.
|
// done when the refresh driver flushes styles.
|
||||||
mPresShell->GetPresContext()->RefreshDriver()->
|
mPresShell->RemoveRefreshObserver(this, Flush_Style);
|
||||||
RemoveRefreshObserver(this, Flush_Style);
|
|
||||||
mObservingRefreshDriver = PR_FALSE;
|
mObservingRefreshDriver = PR_FALSE;
|
||||||
mInLazyFCRefresh = PR_TRUE;
|
mInLazyFCRefresh = PR_TRUE;
|
||||||
mInStyleRefresh = PR_TRUE;
|
mInStyleRefresh = PR_TRUE;
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
#include "mozFlushType.h"
|
#include "mozFlushType.h"
|
||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
#include <stdio.h> // for FILE definition
|
#include <stdio.h> // for FILE definition
|
||||||
|
#include "nsRefreshDriver.h"
|
||||||
|
|
||||||
class nsIContent;
|
class nsIContent;
|
||||||
class nsIDocument;
|
class nsIDocument;
|
||||||
|
@ -999,6 +1000,37 @@ public:
|
||||||
PRUint64 GetPaintCount() { return mPaintCount; }
|
PRUint64 GetPaintCount() { return mPaintCount; }
|
||||||
void IncrementPaintCount() { ++mPaintCount; }
|
void IncrementPaintCount() { ++mPaintCount; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh observer management.
|
||||||
|
*/
|
||||||
|
protected:
|
||||||
|
virtual PRBool AddRefreshObserverExternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType);
|
||||||
|
PRBool AddRefreshObserverInternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType);
|
||||||
|
virtual PRBool RemoveRefreshObserverExternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType);
|
||||||
|
PRBool RemoveRefreshObserverInternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType);
|
||||||
|
public:
|
||||||
|
PRBool AddRefreshObserver(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType) {
|
||||||
|
#ifdef _IMPL_NS_LAYOUT
|
||||||
|
return AddRefreshObserverInternal(aObserver, aFlushType);
|
||||||
|
#else
|
||||||
|
return AddRefreshObserverExternal(aObserver, aFlushType);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
PRBool RemoveRefreshObserver(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType) {
|
||||||
|
#ifdef _IMPL_NS_LAYOUT
|
||||||
|
return RemoveRefreshObserverInternal(aObserver, aFlushType);
|
||||||
|
#else
|
||||||
|
return RemoveRefreshObserverExternal(aObserver, aFlushType);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize and shut down static variables.
|
* Initialize and shut down static variables.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -7761,6 +7761,36 @@ PresShell::Observe(nsISupports* aSubject,
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRBool
|
||||||
|
nsIPresShell::AddRefreshObserverInternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType)
|
||||||
|
{
|
||||||
|
return GetPresContext()->RefreshDriver()->
|
||||||
|
AddRefreshObserver(aObserver, aFlushType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* virtual */ PRBool
|
||||||
|
nsIPresShell::AddRefreshObserverExternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType)
|
||||||
|
{
|
||||||
|
return AddRefreshObserverInternal(aObserver, aFlushType);
|
||||||
|
}
|
||||||
|
|
||||||
|
PRBool
|
||||||
|
nsIPresShell::RemoveRefreshObserverInternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType)
|
||||||
|
{
|
||||||
|
return GetPresContext()->RefreshDriver()->
|
||||||
|
RemoveRefreshObserver(aObserver, aFlushType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* virtual */ PRBool
|
||||||
|
nsIPresShell::RemoveRefreshObserverExternal(nsARefreshObserver* aObserver,
|
||||||
|
mozFlushType aFlushType)
|
||||||
|
{
|
||||||
|
return RemoveRefreshObserverInternal(aObserver, aFlushType);
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
// End of protected and private methods on the PresShell
|
// End of protected and private methods on the PresShell
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
Загрузка…
Ссылка в новой задаче