mirror of https://github.com/PCSX2/pcsx2.git
spu2x: tentative fix for SDL 2.0.4
This commit is contained in:
parent
91362f938d
commit
90c5f0e1ae
|
@ -45,13 +45,19 @@ namespace {
|
||||||
std::unique_ptr<StereoOut_SDL[]> buffer;
|
std::unique_ptr<StereoOut_SDL[]> buffer;
|
||||||
|
|
||||||
void callback_fillBuffer(void *userdata, Uint8 *stream, int len) {
|
void callback_fillBuffer(void *userdata, Uint8 *stream, int len) {
|
||||||
|
Uint16 sdl_samples = samples;
|
||||||
|
|
||||||
// Length should always be samples in bytes.
|
// Length should always be samples in bytes.
|
||||||
assert(len / sizeof(StereoOut_SDL) == samples);
|
assert(len / sizeof(StereoOut_SDL) == samples);
|
||||||
|
|
||||||
#if SDL_MAJOR_VERSION >= 2
|
#if SDL_MAJOR_VERSION >= 2
|
||||||
memset(stream, 0, len);
|
memset(stream, 0, len);
|
||||||
|
#if SDL_PATCHLEVEL >= 4
|
||||||
|
sdl_samples = len / sizeof(StereoOut_SDL);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(Uint16 i = 0; i < samples; i += SndOutPacketSize)
|
for(Uint16 i = 0; i < sdl_samples; i += SndOutPacketSize)
|
||||||
SndBuffer::ReadSamples(&buffer[i]);
|
SndBuffer::ReadSamples(&buffer[i]);
|
||||||
SDL_MixAudio(stream, (Uint8*) buffer.get() , len, SDL_MIX_MAXVOLUME);
|
SDL_MixAudio(stream, (Uint8*) buffer.get() , len, SDL_MIX_MAXVOLUME);
|
||||||
}
|
}
|
||||||
|
@ -103,6 +109,8 @@ struct SDLAudioMod : public SndOutModule {
|
||||||
if(samples != spec.samples || buffer == NULL)
|
if(samples != spec.samples || buffer == NULL)
|
||||||
buffer = std::unique_ptr<StereoOut_SDL[]>(new StereoOut_SDL[spec.samples]);
|
buffer = std::unique_ptr<StereoOut_SDL[]>(new StereoOut_SDL[spec.samples]);
|
||||||
if(samples != spec.samples) {
|
if(samples != spec.samples) {
|
||||||
|
fprintf(stderr, "SPU2-X: SDL failed to get desired samples (%d) got %d samples instead\n", samples, spec.samples);
|
||||||
|
|
||||||
// Samples must always be a multiple of packet size.
|
// Samples must always be a multiple of packet size.
|
||||||
assert(spec.samples % SndOutPacketSize == 0);
|
assert(spec.samples % SndOutPacketSize == 0);
|
||||||
samples = spec.samples;
|
samples = spec.samples;
|
||||||
|
|
Loading…
Reference in New Issue