mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-22 17:10:01 +00:00
Try to fix streams stop after a while
This commit is contained in:
parent
0b6e46b1e4
commit
be55085303
|
@ -1095,6 +1095,7 @@ void CStream::SetPan(uint8 nPan)
|
||||||
m_nPan = nPan;
|
m_nPan = nPan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Should only be called if source is stopped
|
||||||
void CStream::SetPosMS(uint32 nPos)
|
void CStream::SetPosMS(uint32 nPos)
|
||||||
{
|
{
|
||||||
if ( !IsOpened() ) return;
|
if ( !IsOpened() ) return;
|
||||||
|
@ -1177,12 +1178,16 @@ void CStream::ClearBuffers()
|
||||||
alSourceUnqueueBuffers(m_pAlSources[1], 1, &value);
|
alSourceUnqueueBuffers(m_pAlSources[1], 1, &value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CStream::Setup()
|
bool CStream::Setup(bool imSureQueueIsEmpty)
|
||||||
{
|
{
|
||||||
if ( IsOpened() )
|
if ( IsOpened() )
|
||||||
{
|
{
|
||||||
alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE);
|
alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE);
|
||||||
alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE);
|
alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE);
|
||||||
|
if (!imSureQueueIsEmpty) {
|
||||||
|
SetPlay(false);
|
||||||
|
ClearBuffers();
|
||||||
|
}
|
||||||
m_pSoundFile->Seek(0);
|
m_pSoundFile->Seek(0);
|
||||||
//SetPosition(0.0f, 0.0f, 0.0f);
|
//SetPosition(0.0f, 0.0f, 0.0f);
|
||||||
SetPitch(1.0f);
|
SetPitch(1.0f);
|
||||||
|
@ -1286,7 +1291,7 @@ void CStream::Update()
|
||||||
// We should wait queue to be cleared to loop track, because position calculation relies on queue.
|
// 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)
|
if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0)
|
||||||
{
|
{
|
||||||
Setup();
|
Setup(true);
|
||||||
buffersRefilled = FillBuffers() != 0;
|
buffersRefilled = FillBuffers() != 0;
|
||||||
if (m_nLoopCount != 0)
|
if (m_nLoopCount != 0)
|
||||||
m_nLoopCount--;
|
m_nLoopCount--;
|
||||||
|
@ -1319,7 +1324,7 @@ void CStream::ProviderInit()
|
||||||
{
|
{
|
||||||
if ( m_bReset )
|
if ( m_bReset )
|
||||||
{
|
{
|
||||||
if ( Setup() )
|
if ( Setup(true) )
|
||||||
{
|
{
|
||||||
SetPan(m_nPan);
|
SetPan(m_nPan);
|
||||||
SetVolume(m_nVolume);
|
SetVolume(m_nVolume);
|
||||||
|
|
|
@ -100,7 +100,7 @@ public:
|
||||||
uint32 GetPosMS();
|
uint32 GetPosMS();
|
||||||
uint32 GetLengthMS();
|
uint32 GetLengthMS();
|
||||||
|
|
||||||
bool Setup();
|
bool Setup(bool imSureQueueIsEmpty = false);
|
||||||
void Start();
|
void Start();
|
||||||
void Stop();
|
void Stop();
|
||||||
void Update(void);
|
void Update(void);
|
||||||
|
|
Loading…
Reference in a new issue