Bug 1342863 - (Part 5) DocGroup labeling for runnables dispatched by NS_DispatchTo(Main|Current)Thread in nsRefreshDriver. r?dholbert
MozReview-Commit-ID: CzddDOagdfZ
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -2106,18 +2106,27 @@ nsRefreshDriver::Thaw()
}
if (mFreezeCount == 0) {
if (ObserverCount() || ImageRequestCount()) {
// FIXME: This isn't quite right, since our EnsureTimerStarted call
// updates our mMostRecentRefresh, but the DoRefresh call won't run
// and notify our observers until we get back to the event loop.
// Thus MostRecentRefresh() will lie between now and the DoRefresh.
- NS_DispatchToCurrentThread(NewRunnableMethod(this, &nsRefreshDriver::DoRefresh));
- EnsureTimerStarted();
+ RefPtr<nsRunnableMethod<nsRefreshDriver>> event =
+ NewRunnableMethod(this, &nsRefreshDriver::DoRefresh);
+ nsPresContext* pc = GetPresContext();
+ if (pc) {
+ pc->Document()->Dispatch("nsRefreshDriver::DoRefresh",
+ TaskCategory::Other,
+ event.forget());
+ EnsureTimerStarted();
+ } else {
+ NS_ERROR("Thawing while document is being destroyed");
+ }
}
}
}
void
nsRefreshDriver::FinishedWaitingForTransaction()
{
mWaitingForTransaction = false;