aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--al/source.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/al/source.cpp b/al/source.cpp
index d3468628..8e323445 100644
--- a/al/source.cpp
+++ b/al/source.cpp
@@ -649,7 +649,8 @@ bool SetVoiceOffset(Voice *oldvoice, const VoicePos &vpos, ALsource *source, ALC
newvoice->mCurrentBuffer.store(vpos.bufferitem, std::memory_order_relaxed);
newvoice->mStartTime = oldvoice->mStartTime;
newvoice->mFlags.reset();
- if(vpos.pos > 0 || vpos.frac > 0 || vpos.bufferitem != &source->mQueue.front())
+ if(vpos.pos > 0 || (vpos.pos == 0 && vpos.frac > 0)
+ || vpos.bufferitem != &source->mQueue.front())
newvoice->mFlags.set(VoiceIsFading);
InitVoice(newvoice, source, vpos.bufferitem, context, device);
source->VoiceIdx = vidx;
@@ -2649,7 +2650,8 @@ void StartSources(ALCcontext *const context, const al::span<ALsource*> srchandle
voice->mPosition.store(vpos->pos, std::memory_order_relaxed);
voice->mPositionFrac.store(vpos->frac, std::memory_order_relaxed);
voice->mCurrentBuffer.store(vpos->bufferitem, std::memory_order_relaxed);
- if(vpos->pos!=0 || vpos->frac!=0 || vpos->bufferitem!=&source->mQueue.front())
+ if(vpos->pos > 0 || (vpos->pos == 0 && vpos->frac > 0)
+ || vpos->bufferitem != &source->mQueue.front())
voice->mFlags.set(VoiceIsFading);
}
}