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 _NumberOfPatchComputed;
uint _ProcessCount; uint _ProcessCount;
uint64 _CPUMask; uint64 _CPUMask;
NLMISC::CMutex _ProcessExitedMutex;
volatile uint _ProcessExited; volatile uint _ProcessExited;
// *** Bitmap sharing // *** Bitmap sharing

View file

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