mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +09:00
Issue #1695 - Restore Sleep/Wake timer that was erroneously removed.
This was fallout from PR #929 for Issue #21
This commit is contained in:
parent
ef3947ea75
commit
9f0067af53
2 changed files with 30 additions and 0 deletions
|
|
@ -125,6 +125,7 @@ nsSocketTransportService::nsSocketTransportService()
|
|||
, mServingPendingQueue(false)
|
||||
, mMaxTimePerPollIter(100)
|
||||
, mMaxTimeForPrClosePref(PR_SecondsToInterval(5))
|
||||
, mSleepPhase(false)
|
||||
, mProbedMaxCount(false)
|
||||
#if defined(XP_WIN)
|
||||
, mPolling(false)
|
||||
|
|
@ -566,6 +567,8 @@ nsSocketTransportService::Init()
|
|||
if (obsSvc) {
|
||||
obsSvc->AddObserver(this, "profile-initial-state", false);
|
||||
obsSvc->AddObserver(this, "last-pb-context-exited", false);
|
||||
obsSvc->AddObserver(this, NS_WIDGET_SLEEP_OBSERVER_TOPIC, true);
|
||||
obsSvc->AddObserver(this, NS_WIDGET_WAKE_OBSERVER_TOPIC, true);
|
||||
obsSvc->AddObserver(this, "xpcom-shutdown-threads", false);
|
||||
}
|
||||
|
||||
|
|
@ -632,9 +635,16 @@ nsSocketTransportService::ShutdownThread()
|
|||
if (obsSvc) {
|
||||
obsSvc->RemoveObserver(this, "profile-initial-state");
|
||||
obsSvc->RemoveObserver(this, "last-pb-context-exited");
|
||||
obsSvc->RemoveObserver(this, NS_WIDGET_SLEEP_OBSERVER_TOPIC);
|
||||
obsSvc->RemoveObserver(this, NS_WIDGET_WAKE_OBSERVER_TOPIC);
|
||||
obsSvc->RemoveObserver(this, "xpcom-shutdown-threads");
|
||||
}
|
||||
|
||||
if (mAfterWakeUpTimer) {
|
||||
mAfterWakeUpTimer->Cancel();
|
||||
mAfterWakeUpTimer = nullptr;
|
||||
}
|
||||
|
||||
NetworkActivityMonitor::Shutdown();
|
||||
|
||||
mInitialized = false;
|
||||
|
|
@ -1237,6 +1247,10 @@ nsSocketTransportService::Observe(nsISupports *subject,
|
|||
|
||||
if (!strcmp(topic, NS_TIMER_CALLBACK_TOPIC)) {
|
||||
nsCOMPtr<nsITimer> timer = do_QueryInterface(subject);
|
||||
if (timer == mAfterWakeUpTimer) {
|
||||
mAfterWakeUpTimer = nullptr;
|
||||
mSleepPhase = false;
|
||||
}
|
||||
|
||||
#if defined(XP_WIN)
|
||||
if (timer == mPollRepairTimer) {
|
||||
|
|
@ -1244,6 +1258,19 @@ nsSocketTransportService::Observe(nsISupports *subject,
|
|||
}
|
||||
#endif
|
||||
|
||||
} else if (!strcmp(topic, NS_WIDGET_SLEEP_OBSERVER_TOPIC)) {
|
||||
mSleepPhase = true;
|
||||
if (mAfterWakeUpTimer) {
|
||||
mAfterWakeUpTimer->Cancel();
|
||||
mAfterWakeUpTimer = nullptr;
|
||||
}
|
||||
} else if (!strcmp(topic, NS_WIDGET_WAKE_OBSERVER_TOPIC)) {
|
||||
if (mSleepPhase && !mAfterWakeUpTimer) {
|
||||
mAfterWakeUpTimer = do_CreateInstance("@mozilla.org/timer;1");
|
||||
if (mAfterWakeUpTimer) {
|
||||
mAfterWakeUpTimer->Init(this, 2000, nsITimer::TYPE_ONE_SHOT);
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(topic, "xpcom-shutdown-threads")) {
|
||||
ShutdownThread();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -258,6 +258,9 @@ private:
|
|||
Atomic<int32_t, Relaxed> mMaxTimePerPollIter;
|
||||
Atomic<PRIntervalTime, Relaxed> mMaxTimeForPrClosePref;
|
||||
|
||||
Atomic<bool, Relaxed> mSleepPhase;
|
||||
nsCOMPtr<nsITimer> mAfterWakeUpTimer;
|
||||
|
||||
void OnKeepaliveEnabledPrefChange();
|
||||
void NotifyKeepaliveEnabledPrefChange(SocketContext *sock);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue