Bug 1351148 Part2: Add a priority queue for input events. r=smaug.

MozReview-Commit-ID: 5ud1Ex9UNVo
This commit is contained in:
Stone Shih
2017-03-21 15:44:12 +08:00
parent b38e4d9094
commit e0dd0293e8
36 changed files with 751 additions and 109 deletions

View File

@@ -11,7 +11,9 @@
#include "nsTArray.h"
#include "nsAutoPtr.h"
#include "mozilla/AbstractThread.h"
#include "mozilla/InputEventStatistics.h"
#include "mozilla/ThreadLocal.h"
#include "mozilla/Preferences.h"
#ifdef MOZ_CANARY
#include <fcntl.h>
#include <unistd.h>
@@ -397,6 +399,25 @@ nsThreadManager::DispatchToMainThread(nsIRunnable *aEvent)
return mMainThread->DispatchFromScript(aEvent, 0);
}
void
nsThreadManager::EnableMainThreadEventPrioritization()
{
static bool sIsInitialized = false;
if (sIsInitialized) {
return;
}
sIsInitialized = true;
MOZ_ASSERT(Preferences::IsServiceAvailable());
bool enable =
Preferences::GetBool("prioritized_input_events.enabled", false);
if (!enable) {
return;
}
InputEventStatistics::Get().SetEnable(true);
mMainThread->EnableEventPrioritization();
}
NS_IMETHODIMP
nsThreadManager::IdleDispatchToMainThread(nsIRunnable *aEvent, uint32_t aTimeout)
{