[XPCOM] xpcom/threads misc cleanup

This commit is contained in:
Moonchild 2022-04-08 21:54:05 +02:00 committed by roytam1
commit 7de4e86727
3 changed files with 24 additions and 11 deletions

View file

@ -137,10 +137,15 @@ LazyIdleThread::EnsureThread()
return NS_OK;
}
MOZ_ASSERT(!mPendingEventCount, "Shouldn't have events yet!");
MOZ_ASSERT(!mIdleNotificationCount, "Shouldn't have idle events yet!");
MOZ_ASSERT(!mIdleTimer, "Should have killed this long ago!");
MOZ_ASSERT(!mThreadIsShuttingDown, "Should have cleared that!");
#ifdef DEBUG
{ // Lock scope
MutexAutoLock lock(mMutex);
MOZ_ASSERT(!mPendingEventCount, "Shouldn't have events yet!");
MOZ_ASSERT(!mIdleNotificationCount, "Shouldn't have idle events yet!");
MOZ_ASSERT(!mIdleTimer, "Should have killed this long ago!");
MOZ_ASSERT(!mThreadIsShuttingDown, "Should have cleared that!");
}
#endif
nsresult rv;

View file

@ -152,9 +152,10 @@ private:
nsCOMPtr<nsIThread> mThread;
/**
* Protected by mMutex. Created when mThread has no pending events and fired
* Created when mThread has no pending events and fired
* at mOwningThread. Any thread that dispatches to mThread will take ownership
* of the timer and fire a separate cancel event to the owning thread.
* Only accessed from the owning thread.
*/
nsCOMPtr<nsITimer> mIdleTimer;

View file

@ -280,10 +280,13 @@ nsProcess::ProcessComplete()
}
const char* topic;
if (mExitValue < 0) {
topic = "process-failed";
} else {
topic = "process-finished";
{ // Lock scope
MutexAutoLock lock(mLock);
if (mExitValue < 0) {
topic = "process-failed";
} else {
topic = "process-finished";
}
}
mPid = -1;
@ -412,8 +415,11 @@ nsProcess::RunProcess(bool aBlocking, char** aMyArgv, nsIObserver* aObserver,
}
}
mExitValue = -1;
mPid = -1;
{
MutexAutoLock lock(mLock);
mExitValue = -1;
mPid = -1;
}
#if defined(PROCESSMODEL_WINAPI)
BOOL retVal;
@ -477,6 +483,7 @@ nsProcess::RunProcess(bool aBlocking, char** aMyArgv, nsIObserver* aObserver,
mBlocking = aBlocking;
if (aBlocking) {
Monitor(this);
MutexAutoLock lock(mLock);
if (mExitValue < 0) {
return NS_ERROR_FILE_EXECUTION_FAILED;
}