//============================================================================== String AudioDeviceManager::initialise (const int numInputChannelsNeeded, const int numOutputChannelsNeeded, const XmlElement* const xml, const bool selectDefaultDeviceOnFailure, const String& preferredDefaultDeviceName, const AudioDeviceSetup* preferredSetupOptions) { scanDevicesIfNeeded(); numInputChansNeeded = numInputChannelsNeeded; numOutputChansNeeded = numOutputChannelsNeeded; if (xml != nullptr && xml->hasTagName ("DEVICESETUP")) return initialiseFromXML (*xml, selectDefaultDeviceOnFailure, preferredDefaultDeviceName, preferredSetupOptions); return initialiseDefault (preferredDefaultDeviceName, preferredSetupOptions); }
void AudioDeviceManager::audioDeviceListChanged() { if (currentAudioDevice != nullptr) { auto isCurrentDeviceStillAvailable = [&] { for (auto* dt : availableDeviceTypes) if (currentAudioDevice->getTypeName() == dt->getTypeName()) for (auto& dn : dt->getDeviceNames()) if (currentAudioDevice->getName() == dn) return true; return false; }; if (! isCurrentDeviceStillAvailable()) { closeAudioDevice(); std::unique_ptr<XmlElement> e (createStateXml()); if (e == nullptr) initialiseDefault (preferredDeviceName, ¤tSetup); else initialiseFromXML (*e, true, preferredDeviceName, ¤tSetup); } if (currentAudioDevice != nullptr) { currentSetup.sampleRate = currentAudioDevice->getCurrentSampleRate(); currentSetup.bufferSize = currentAudioDevice->getCurrentBufferSizeSamples(); currentSetup.inputChannels = currentAudioDevice->getActiveInputChannels(); currentSetup.outputChannels = currentAudioDevice->getActiveOutputChannels(); } } sendChangeMessage(); }