Async: Drop-in SyncCancelerForAsyncWork without execUncancelableSegment*
We're doing this to prep for the coro port
This commit is contained in:
@@ -464,8 +464,10 @@ public:
|
||||
void produceFrameReq1_doAssemble_posted(
|
||||
std::shared_ptr<ProduceFrameReq> context)
|
||||
{
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
sscl::SpinLock::Guard guard(
|
||||
pcloudProducer.stimulusProducerCanceler.s.lock);
|
||||
if (pcloudProducer.stimulusProducerCanceler
|
||||
.isCancellationRequestedUnlocked())
|
||||
{
|
||||
callOriginalCallback();
|
||||
return;
|
||||
@@ -482,8 +484,10 @@ public:
|
||||
std::shared_ptr<ProduceFrameReq> context,
|
||||
bool success, sscl::AsynchronousLoop loop)
|
||||
{
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
sscl::SpinLock::Guard guard(
|
||||
pcloudProducer.stimulusProducerCanceler.s.lock);
|
||||
if (pcloudProducer.stimulusProducerCanceler
|
||||
.isCancellationRequestedUnlocked())
|
||||
{
|
||||
callOriginalCallback();
|
||||
return;
|
||||
@@ -615,8 +619,10 @@ public:
|
||||
context->darkAmbienceStimFrame->get().lock.writeRelease();
|
||||
}
|
||||
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
sscl::SpinLock::Guard guard(
|
||||
pcloudProducer.stimulusProducerCanceler.s.lock);
|
||||
if (pcloudProducer.stimulusProducerCanceler
|
||||
.isCancellationRequestedUnlocked())
|
||||
{
|
||||
callOriginalCallback();
|
||||
return;
|
||||
@@ -626,7 +632,7 @@ public:
|
||||
std::cerr << __func__ << ": Failed to compact and collate frame" << std::endl;
|
||||
} else
|
||||
{
|
||||
lock.unlockPrematurely();
|
||||
guard.unlockPrematurely();
|
||||
if (pcloudProducer.pcloudFrameDumper.isEnabled())
|
||||
{
|
||||
try
|
||||
@@ -748,7 +754,7 @@ void PcloudStimulusProducer::produceFrameReq(
|
||||
sscl::cps::Callback<produceFrameReqCbFn> callback)
|
||||
{
|
||||
/** EXPLANATION:
|
||||
* We shouldn't acquire the StimulusProducer::shouldContinueLock here because
|
||||
* We shouldn't acquire stimulusProducerCanceler.s.lock here because
|
||||
* this function is called from
|
||||
* StimulusProducer::stimFrameProductionTimesliceInd(), which is already
|
||||
* holding the lock.
|
||||
|
||||
Reference in New Issue
Block a user