diff options
author | erorcun <erorcunerorcun@hotmail.com.tr> | 2021-02-14 16:07:21 +0100 |
---|---|---|
committer | erorcun <erorcunerorcun@hotmail.com.tr> | 2021-02-14 16:07:21 +0100 |
commit | 70b919137d7468404a34f20986de5fbf45352bf1 (patch) | |
tree | 489dda245616b94087d635b02c88d7c2f4daae5d /src/audio/oal/stream.cpp | |
parent | update invite link (diff) | |
download | re3-70b919137d7468404a34f20986de5fbf45352bf1.tar re3-70b919137d7468404a34f20986de5fbf45352bf1.tar.gz re3-70b919137d7468404a34f20986de5fbf45352bf1.tar.bz2 re3-70b919137d7468404a34f20986de5fbf45352bf1.tar.lz re3-70b919137d7468404a34f20986de5fbf45352bf1.tar.xz re3-70b919137d7468404a34f20986de5fbf45352bf1.tar.zst re3-70b919137d7468404a34f20986de5fbf45352bf1.zip |
Diffstat (limited to '')
-rw-r--r-- | src/audio/oal/stream.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 4817d6d5..8f074fb4 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -1152,6 +1152,7 @@ void CStream::SetPan(uint8 nPan) m_nPan = nPan; } +// Should only be called if source is stopped void CStream::SetPosMS(uint32 nPos) { if ( !IsOpened() ) return; @@ -1234,12 +1235,16 @@ void CStream::ClearBuffers() alSourceUnqueueBuffers(m_pAlSources[1], 1, &value); } -bool CStream::Setup() +bool CStream::Setup(bool imSureQueueIsEmpty) { if ( IsOpened() ) { alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE); alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE); + if (!imSureQueueIsEmpty) { + SetPlay(false); + ClearBuffers(); + } m_pSoundFile->Seek(0); //SetPosition(0.0f, 0.0f, 0.0f); SetPitch(1.0f); @@ -1343,7 +1348,7 @@ void CStream::Update() // We should wait queue to be cleared to loop track, because position calculation relies on queue. if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0) { - Setup(); + Setup(true); buffersRefilled = FillBuffers() != 0; if (m_nLoopCount != 0) m_nLoopCount--; @@ -1376,7 +1381,7 @@ void CStream::ProviderInit() { if ( m_bReset ) { - if ( Setup() ) + if ( Setup(true) ) { SetPan(m_nPan); SetVolume(m_nVolume); |