summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-02-14 18:09:16 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2021-02-14 18:09:16 +0100
commit3d90a146d8d6d4d9a1354fac5e5368af252ccbaf (patch)
tree957967841f4b72f7ae35bfc66223c9e335935b72
parentfail (diff)
parent(Test) Try to fix streams stop after a while (diff)
downloadre3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar.gz
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar.bz2
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar.lz
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar.xz
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.tar.zst
re3-3d90a146d8d6d4d9a1354fac5e5368af252ccbaf.zip
-rw-r--r--README.md2
-rw-r--r--src/audio/oal/stream.cpp11
-rw-r--r--src/audio/oal/stream.h2
3 files changed, 10 insertions, 5 deletions
diff --git a/README.md b/README.md
index 52628982..45a40ee2 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
<img src="https://github.com/GTAmodding/re3/blob/miami/logo.png?raw=true" alt="reVC logo" width="200">
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami)
-<a href="https://discord.gg/7yyJtQZ93N"><img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" /></a>
+<a href="https://discord.gg/ERYg58ttcE"><img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" /></a>
## Intro
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);
diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h
index b3e96809..9a2a2fbe 100644
--- a/src/audio/oal/stream.h
+++ b/src/audio/oal/stream.h
@@ -100,7 +100,7 @@ public:
uint32 GetPosMS();
uint32 GetLengthMS();
- bool Setup();
+ bool Setup(bool imSureQueueIsEmpty = false);
void Start();
void Stop();
void Update(void);