mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-12-27 20:30:39 +00:00
#446: reduce throttle interval
This commit is contained in:
parent
0580d4c4c1
commit
a6dbf7e8ad
@ -6024,6 +6024,11 @@ nsDocShell::SetIsActive(bool aIsActive)
|
||||
nsresult
|
||||
nsDocShell::SetIsActiveInternal(bool aIsActive, bool aIsHidden)
|
||||
{
|
||||
// We disallow setting active on chrome docshells.
|
||||
if (mItemType == nsIDocShellTreeItem::typeChrome) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
// Keep track ourselves.
|
||||
mIsActive = aIsActive;
|
||||
|
||||
|
@ -426,11 +426,9 @@ private:
|
||||
|
||||
void OnTimerStart()
|
||||
{
|
||||
#if(0)
|
||||
if (!XRE_IsParentProcess()) {
|
||||
mLastChildTick = TimeStamp::Now();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
private:
|
||||
@ -438,7 +436,6 @@ private:
|
||||
|
||||
void RecordTelemetryProbes(TimeStamp aVsyncTimestamp)
|
||||
{
|
||||
#if(0)
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
#ifndef ANDROID /* bug 1142079 */
|
||||
if (XRE_IsParentProcess()) {
|
||||
@ -466,21 +463,20 @@ private:
|
||||
mVsyncRate = mVsyncRefreshDriverTimer->mVsyncChild->GetVsyncRate();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void TickRefreshDriver(TimeStamp aVsyncTimestamp)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
//RecordTelemetryProbes(aVsyncTimestamp);
|
||||
//if (XRE_IsParentProcess()) {
|
||||
RecordTelemetryProbes(aVsyncTimestamp);
|
||||
if (XRE_IsParentProcess()) {
|
||||
MonitorAutoLock lock(mRefreshTickLock);
|
||||
aVsyncTimestamp = mRecentVsync;
|
||||
mProcessedVsync = true;
|
||||
//} else {
|
||||
// mLastChildTick = TimeStamp::Now();
|
||||
//}
|
||||
} else {
|
||||
mLastChildTick = TimeStamp::Now();
|
||||
}
|
||||
MOZ_ASSERT(aVsyncTimestamp <= TimeStamp::Now());
|
||||
|
||||
// We might have a problem that we call ~VsyncRefreshDriverTimer() before
|
||||
@ -504,10 +500,9 @@ private:
|
||||
|
||||
virtual ~VsyncRefreshDriverTimer()
|
||||
{
|
||||
//if (XRE_IsParentProcess()) {
|
||||
if (XRE_IsParentProcess()) {
|
||||
mVsyncDispatcher->SetParentRefreshTimer(nullptr);
|
||||
mVsyncDispatcher = nullptr;
|
||||
#if(0)
|
||||
} else {
|
||||
// Since the PVsyncChild actors live through the life of the process, just
|
||||
// send the unobserveVsync message to disable vsync event. We don't need
|
||||
@ -517,7 +512,6 @@ private:
|
||||
mVsyncChild->SetVsyncObserver(nullptr);
|
||||
mVsyncChild = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Detach current vsync timer from this VsyncObserver. The observer will no
|
||||
// longer tick this timer.
|
||||
@ -548,11 +542,11 @@ private:
|
||||
// Protect updates to `sActiveVsyncTimers`.
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
//if (XRE_IsParentProcess()) {
|
||||
if (XRE_IsParentProcess()) {
|
||||
mVsyncDispatcher->SetParentRefreshTimer(nullptr);
|
||||
//} else {
|
||||
// Unused << mVsyncChild->SendUnobserve();
|
||||
//}
|
||||
} else {
|
||||
Unused << mVsyncChild->SendUnobserve();
|
||||
}
|
||||
|
||||
MOZ_ASSERT(sActiveVsyncTimers > 0);
|
||||
--sActiveVsyncTimers;
|
||||
@ -685,8 +679,6 @@ protected:
|
||||
|
||||
virtual void ScheduleNextTick(TimeStamp aNowTime)
|
||||
{
|
||||
return; // speculative from bug 1352205 and TenFourFox issue 446
|
||||
|
||||
if (mDisableAfterMilliseconds > 0.0 &&
|
||||
mNextTickDuration > mDisableAfterMilliseconds)
|
||||
{
|
||||
@ -836,14 +828,14 @@ CreateVsyncRefreshTimer()
|
||||
return;
|
||||
}
|
||||
|
||||
//if (XRE_IsParentProcess()) {
|
||||
if (XRE_IsParentProcess()) {
|
||||
// Make sure all vsync systems are ready.
|
||||
gfxPlatform::GetPlatform();
|
||||
// In parent process, we don't need to use ipc. We can create the
|
||||
// VsyncRefreshDriverTimer directly.
|
||||
sRegularRateTimer = new VsyncRefreshDriverTimer();
|
||||
return;
|
||||
//}
|
||||
}
|
||||
|
||||
#ifdef MOZ_NUWA_PROCESS
|
||||
// NUWA process will just use software timer. Use NuwaAddFinalConstructor()
|
||||
@ -1882,7 +1874,7 @@ nsRefreshDriver::Tick(int64_t aNowEpoch, TimeStamp aNowTime)
|
||||
}
|
||||
}
|
||||
|
||||
#if(0)
|
||||
#ifndef ANDROID /* bug 1142079 */
|
||||
mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::REFRESH_DRIVER_TICK, mTickStart);
|
||||
#endif
|
||||
|
||||
|
@ -237,12 +237,6 @@ XRE_SetProcessType(const char* aProcessTypeString)
|
||||
i < (int) ArrayLength(kGeckoProcessTypeString);
|
||||
++i) {
|
||||
if (!strcmp(kGeckoProcessTypeString[i], aProcessTypeString)) {
|
||||
// For purposes of TenFourFox issue 441, assert that we never, ever
|
||||
// launch a child process (it would immediately crash anyway due to
|
||||
// defective IPC, but let's be paranoid and make it crash predictably).
|
||||
if (MOZ_UNLIKELY(static_cast<GeckoProcessType>(i) != GeckoProcessType_Default))
|
||||
MOZ_CRASH("TenFourFox does not support E10S child processes.");
|
||||
|
||||
sChildProcessType = static_cast<GeckoProcessType>(i);
|
||||
return;
|
||||
}
|
||||
|
@ -132,30 +132,33 @@ nsAppShellService::CreateHiddenWindowHelper(bool aIsPrivate)
|
||||
rv = NS_NewURI(getter_AddRefs(url), hiddenWindowURL);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (aIsPrivate) {
|
||||
chromeMask |= nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW;
|
||||
}
|
||||
|
||||
RefPtr<nsWebShellWindow> newWindow;
|
||||
rv = JustCreateTopWindow(nullptr, url,
|
||||
chromeMask, initialWidth, initialHeight,
|
||||
true, nullptr, getter_AddRefs(newWindow));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!aIsPrivate) {
|
||||
rv = JustCreateTopWindow(nullptr, url,
|
||||
chromeMask, initialWidth, initialHeight,
|
||||
true, nullptr, getter_AddRefs(newWindow));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIDocShell> docShell;
|
||||
newWindow->GetDocShell(getter_AddRefs(docShell));
|
||||
if (docShell) {
|
||||
docShell->SetIsActive(false);
|
||||
if (aIsPrivate) {
|
||||
mHiddenWindow.swap(newWindow);
|
||||
} else {
|
||||
// Create the hidden private window
|
||||
chromeMask |= nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW;
|
||||
|
||||
rv = JustCreateTopWindow(nullptr, url,
|
||||
chromeMask, initialWidth, initialHeight,
|
||||
true, nullptr, getter_AddRefs(newWindow));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIDocShell> docShell;
|
||||
newWindow->GetDocShell(getter_AddRefs(docShell));
|
||||
if (docShell) {
|
||||
docShell->SetAffectPrivateSessionLifetime(false);
|
||||
}
|
||||
|
||||
mHiddenPrivateWindow.swap(newWindow);
|
||||
}
|
||||
|
||||
if (aIsPrivate) {
|
||||
mHiddenPrivateWindow.swap(newWindow);
|
||||
} else {
|
||||
mHiddenWindow.swap(newWindow);
|
||||
}
|
||||
// RegisterTopLevelWindow(newWindow); -- Mac only
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user