mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Fixed SoundStream::GetPlayingOffset looping after a few seconds
This commit is contained in:
parent
d5ced60dec
commit
7f11d16f3b
@ -286,7 +286,7 @@ private :
|
||||
unsigned int mySampleRate; ///< Frequency (samples / second)
|
||||
unsigned long myFormat; ///< Format of the internal sound buffers
|
||||
bool myLoop; ///< Loop flag (true to loop, false to play once)
|
||||
unsigned int mySamplesProcessed; ///< Number of buffers processed since beginning of the stream
|
||||
Uint64 mySamplesProcessed; ///< Number of buffers processed since beginning of the stream
|
||||
bool myEndBuffers[BuffersCount]; ///< Each buffer is marked as "end buffer" or not, for proper duration calculation
|
||||
};
|
||||
|
||||
|
@ -159,7 +159,7 @@ void SoundStream::SetPlayingOffset(Uint32 timeOffset)
|
||||
OnSeek(timeOffset);
|
||||
|
||||
// Restart streaming
|
||||
mySamplesProcessed = timeOffset * mySampleRate * myChannelsCount / 1000;
|
||||
mySamplesProcessed = static_cast<Uint64>(timeOffset) * mySampleRate * myChannelsCount / 1000;
|
||||
myIsStreaming = true;
|
||||
myThread.Launch();
|
||||
}
|
||||
@ -171,7 +171,7 @@ Uint32 SoundStream::GetPlayingOffset() const
|
||||
ALfloat seconds = 0.f;
|
||||
ALCheck(alGetSourcef(mySource, AL_SEC_OFFSET, &seconds));
|
||||
|
||||
return static_cast<Uint32>(1000 * seconds) + 1000 * mySamplesProcessed / mySampleRate / myChannelsCount;
|
||||
return static_cast<Uint32>(1000 * seconds + 1000 * mySamplesProcessed / mySampleRate / myChannelsCount);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user