mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-30 18:31:08 +00:00
PAC instantiation hangs Regxpcom Solaris nightly build packaging process. Fixing timer logic. Patch by Kenneth Herron. r=dougt@netscape.com, sr=brendan@mozilla.org, b=106009
This commit is contained in:
parent
2f1030b6c4
commit
1938b600bf
@ -46,7 +46,7 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(TimerThread, nsIRunnable)
|
||||
TimerThread::TimerThread() :
|
||||
mLock(nsnull),
|
||||
mCondVar(nsnull),
|
||||
mProcessing(PR_FALSE),
|
||||
mShutdown(PR_FALSE),
|
||||
mWaiting(PR_FALSE),
|
||||
mDelayLineCounter(0),
|
||||
mMinTimerPeriod(0),
|
||||
@ -108,7 +108,7 @@ nsresult TimerThread::Shutdown()
|
||||
{ // lock scope
|
||||
nsAutoLock lock(mLock);
|
||||
|
||||
mProcessing = PR_FALSE;
|
||||
mShutdown = PR_TRUE;
|
||||
|
||||
// notify the cond var so that Run() can return
|
||||
if (mCondVar && mWaiting)
|
||||
@ -184,9 +184,8 @@ void TimerThread::UpdateFilter(PRUint32 aDelay, PRIntervalTime aTimeout,
|
||||
NS_IMETHODIMP TimerThread::Run()
|
||||
{
|
||||
nsAutoLock lock(mLock);
|
||||
mProcessing = PR_TRUE;
|
||||
|
||||
while (mProcessing) {
|
||||
while (!mShutdown) {
|
||||
PRIntervalTime now = PR_IntervalNow();
|
||||
nsTimerImpl *timer = nsnull;
|
||||
|
||||
@ -225,7 +224,7 @@ NS_IMETHODIMP TimerThread::Run()
|
||||
timer = nsnull;
|
||||
|
||||
lock.lock();
|
||||
if (!mProcessing)
|
||||
if (mShutdown)
|
||||
break;
|
||||
|
||||
// Update now, as PostTimerEvent plus the locking may have taken a tick or two,
|
||||
|
@ -83,7 +83,7 @@ private:
|
||||
PRLock *mLock;
|
||||
PRCondVar *mCondVar;
|
||||
|
||||
PRPackedBool mProcessing;
|
||||
PRPackedBool mShutdown;
|
||||
PRPackedBool mWaiting;
|
||||
|
||||
nsVoidArray mTimers;
|
||||
|
Loading…
x
Reference in New Issue
Block a user