int QMixer::qsWaveMixPlayEx(int iChannel, uint flags, CWaveFile *waveFile, int loops, const QMIXPLAYPARAMS ¶ms) { if (iChannel == -1) { // Find a free channel for (iChannel = 0; iChannel < (int)_channels.size(); ++iChannel) { if (_channels[iChannel]._sounds.empty()) break; } assert(iChannel != (int)_channels.size()); } // If the new sound replaces current ones, then clear the channel ChannelEntry &channel = _channels[iChannel]; if (flags & QMIX_CLEARQUEUE) { if (!channel._sounds.empty() && channel._sounds.front()._started) _mixer->stopHandle(channel._sounds.front()._soundHandle); channel._sounds.clear(); } // Add the sound to the channel channel._sounds.push_back(SoundEntry(waveFile, params.callback, loops, params.dwUser)); qsWaveMixPump(); return 0; }
void QSoundManager::waveMixPump() { qsWaveMixPump(); }