SoundEmitter: Optimize source allocation strategy a bit
If no source is free, instead of seizing the lowest priority one, first try to find the lowest priority source with the same buffer that is about to be played and use it. Otherwise, take lowest priority one as before.
This commit is contained in:
parent
ce72e6d0ee
commit
5ee62ba0fd
|
@ -128,6 +128,13 @@ void SoundEmitter::play(const std::string &filename,
|
||||||
if (AL::Source::getState(alSrcs[srcPrio[i]]) != AL_PLAYING)
|
if (AL::Source::getState(alSrcs[srcPrio[i]]) != AL_PLAYING)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* If we didn't find any, try to find the lowest priority source
|
||||||
|
* with the same buffer to overtake */
|
||||||
|
if (i == SE_SOURCES)
|
||||||
|
for (size_t j = 0; j < SE_SOURCES; ++j)
|
||||||
|
if (atchBufs[srcPrio[j]] == buffer)
|
||||||
|
i = j;
|
||||||
|
|
||||||
/* If we didn't find any, overtake the one with lowest priority */
|
/* If we didn't find any, overtake the one with lowest priority */
|
||||||
if (i == SE_SOURCES)
|
if (i == SE_SOURCES)
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
Loading…
Reference in New Issue