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

git-svn-id: svn://10.0.0.236/trunk@119597 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dougt%netscape.com
2002-04-23 03:15:52 +00:00
parent a8131904c6
commit dd8e7742e1
2 changed files with 5 additions and 6 deletions

View File

@@ -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,