diff --git a/modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp b/modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp index 2697ff0419dc..d5d9b44515f4 100644 --- a/modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp +++ b/modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp @@ -1207,12 +1207,10 @@ class CoreAudioIODevice : public AudioIODevice, public: CoreAudioIODevice (CoreAudioIODeviceType* dt, const String& deviceName, - AudioDeviceID inputDeviceId, int inputIndex_, - AudioDeviceID outputDeviceId, int outputIndex_) + AudioDeviceID inputDeviceId, + AudioDeviceID outputDeviceId) : AudioIODevice (deviceName, "CoreAudio"), - deviceType (dt), - inputIndex (inputIndex_), - outputIndex (outputIndex_) + deviceType (dt) { internal = [this, &inputDeviceId, &outputDeviceId] { @@ -1260,7 +1258,7 @@ class CoreAudioIODevice : public AudioIODevice, int getCurrentBufferSizeSamples() override { return internal->getBufferSize(); } int getXRunCount() const noexcept override { return internal->xruns; } - int getIndexOfDevice (bool asInput) const { return asInput ? inputIndex : outputIndex; } + int getIndexOfDevice (bool asInput) const { return deviceType->getDeviceNames (asInput).indexOf (getName()); } int getDefaultBufferSize() override { @@ -1389,7 +1387,6 @@ class CoreAudioIODevice : public AudioIODevice, bool shouldRestartDevice() const noexcept { return restartDevice; } WeakReference deviceType; - int inputIndex, outputIndex; bool hadDiscontinuity; private: @@ -2265,12 +2262,12 @@ class CoreAudioIODeviceType : public AudioIODeviceType, : outputDeviceName; if (inputDeviceID == outputDeviceID) - return std::make_unique (this, combinedName, inputDeviceID, inputIndex, outputDeviceID, outputIndex).release(); + return std::make_unique (this, combinedName, inputDeviceID, outputDeviceID).release(); - auto in = inputDeviceID != 0 ? std::make_unique (this, inputDeviceName, inputDeviceID, inputIndex, 0, -1) + auto in = inputDeviceID != 0 ? std::make_unique (this, inputDeviceName, inputDeviceID, 0) : nullptr; - auto out = outputDeviceID != 0 ? std::make_unique (this, outputDeviceName, 0, -1, outputDeviceID, outputIndex) + auto out = outputDeviceID != 0 ? std::make_unique (this, outputDeviceName, 0, outputDeviceID) : nullptr; if (in == nullptr) return out.release(); diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp index c14e66149ae2..af082356435c 100644 --- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp @@ -227,6 +227,8 @@ class AudioDeviceSettingsPanel : public Component, type.scanForDevices(); setup.manager->addChangeListener (this); + + updateAllControls(); } ~AudioDeviceSettingsPanel() override @@ -1154,10 +1156,8 @@ void AudioDeviceSelectorComponent::updateAllControls() details.maxNumOutputChannels = maxOutputChannels; details.useStereoPairs = showChannelsAsStereoPairs; - auto sp = std::make_unique (*type, details, hideAdvancedOptionsWithButton); - addAndMakeVisible (*sp); - sp->updateAllControls(); - audioDeviceSettingsComp = std::move (sp); + audioDeviceSettingsComp = std::make_unique (*type, details, hideAdvancedOptionsWithButton); + addAndMakeVisible (audioDeviceSettingsComp.get()); } }