mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-09 23:34:20 +00:00
CoreAudio: Return the correct index when the list of devices change
This commit is contained in:
parent
27fad0f975
commit
3540152d71
2 changed files with 11 additions and 14 deletions
|
|
@ -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 @@ public:
|
|||
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 @@ public:
|
|||
bool shouldRestartDevice() const noexcept { return restartDevice; }
|
||||
|
||||
WeakReference<CoreAudioIODeviceType> deviceType;
|
||||
int inputIndex, outputIndex;
|
||||
bool hadDiscontinuity;
|
||||
|
||||
private:
|
||||
|
|
@ -2265,12 +2262,12 @@ public:
|
|||
: outputDeviceName;
|
||||
|
||||
if (inputDeviceID == outputDeviceID)
|
||||
return std::make_unique<CoreAudioIODevice> (this, combinedName, inputDeviceID, inputIndex, outputDeviceID, outputIndex).release();
|
||||
return std::make_unique<CoreAudioIODevice> (this, combinedName, inputDeviceID, outputDeviceID).release();
|
||||
|
||||
auto in = inputDeviceID != 0 ? std::make_unique<CoreAudioIODevice> (this, inputDeviceName, inputDeviceID, inputIndex, 0, -1)
|
||||
auto in = inputDeviceID != 0 ? std::make_unique<CoreAudioIODevice> (this, inputDeviceName, inputDeviceID, 0)
|
||||
: nullptr;
|
||||
|
||||
auto out = outputDeviceID != 0 ? std::make_unique<CoreAudioIODevice> (this, outputDeviceName, 0, -1, outputDeviceID, outputIndex)
|
||||
auto out = outputDeviceID != 0 ? std::make_unique<CoreAudioIODevice> (this, outputDeviceName, 0, outputDeviceID)
|
||||
: nullptr;
|
||||
|
||||
if (in == nullptr) return out.release();
|
||||
|
|
|
|||
|
|
@ -227,6 +227,8 @@ public:
|
|||
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<AudioDeviceSettingsPanel> (*type, details, hideAdvancedOptionsWithButton);
|
||||
addAndMakeVisible (*sp);
|
||||
sp->updateAllControls();
|
||||
audioDeviceSettingsComp = std::move (sp);
|
||||
audioDeviceSettingsComp = std::make_unique<AudioDeviceSettingsPanel> (*type, details, hideAdvancedOptionsWithButton);
|
||||
addAndMakeVisible (audioDeviceSettingsComp.get());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue