Fix thread lockup in zone lighter

This commit is contained in:
kaetemi 2014-02-07 02:01:23 +01:00
parent 7ed267dd7d
commit 9dce6793b2
2 changed files with 7 additions and 0 deletions

View file

@ -466,6 +466,7 @@ private:
uint _NumberOfPatchComputed;
uint _ProcessCount;
uint64 _CPUMask;
NLMISC::CMutex _ProcessExitedMutex;
volatile uint _ProcessExited;
// *** Bitmap sharing

View file

@ -373,7 +373,9 @@ public:
setCPUMask (Thread, _Process);
_ZoneLighter->processCalc (_Process, *_Description);
_ZoneLighter->_ProcessExitedMutex.enter();
_ZoneLighter->_ProcessExited++;
_ZoneLighter->_ProcessExitedMutex.leave();
}
};
@ -649,7 +651,9 @@ void NL3D::CRenderZBuffer::run()
}
// Exit
_ZoneLighter->_ProcessExitedMutex.enter();
_ZoneLighter->_ProcessExited++;
_ZoneLighter->_ProcessExitedMutex.leave();
}
// ***************************************************************************
@ -676,7 +680,9 @@ public:
void run()
{
_ZoneLighter->processLightableShapeCalc(_Process, _ShapesToLit, _FirstShape, _LastShape, *_Description);
_ZoneLighter->_ProcessExitedMutex.enter();
_ZoneLighter->_ProcessExited++;
_ZoneLighter->_ProcessExitedMutex.leave();
}
private:
CZoneLighter *_ZoneLighter;