Merge remote branch 'corristo/openal'

actorid
Marc Zinnschlag 13 years ago
commit cc9a874f2b

@ -441,12 +441,34 @@ void OpenAL_Output::init(const std::string &devname)
try try
{ {
ALCuint maxtotal = std::min<ALCuint>(maxmono+maxstereo, 256); ALCuint maxtotal = std::min<ALCuint>(maxmono+maxstereo, 256);
for(size_t i = 0;i < maxtotal;i++) if (maxtotal == 0) // workaround for broken implementations
{ {
ALuint src = 0; maxtotal = 256;
alGenSources(1, &src); bool stop = false;
throwALerror(); for(size_t i = 0;i < maxtotal && !stop;i++) // generate source until error returned
mFreeSources.push_back(src); {
ALuint src = 0;
alGenSources(1, &src);
ALenum err = alGetError();
if(err != AL_NO_ERROR)
{
stop = true;
}
else
{
mFreeSources.push_back(src);
}
}
}
else // normal case
{
for(size_t i = 0;i < maxtotal;i++)
{
ALuint src = 0;
alGenSources(1, &src);
throwALerror();
mFreeSources.push_back(src);
}
} }
} }
catch(std::exception &e) catch(std::exception &e)

Loading…
Cancel
Save