diff --git a/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp b/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp index 28b51e5bcd..d6f9c55804 100644 --- a/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp +++ b/modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp @@ -163,20 +163,11 @@ class CoreAudioIODevice; class CoreAudioInternal : private Timer { public: - CoreAudioInternal (CoreAudioIODevice& d, AudioDeviceID id) + CoreAudioInternal (CoreAudioIODevice& d, AudioDeviceID id, bool input, bool output) : owner (d), - inputLatency (0), - outputLatency (0), - bitDepth (32), - callback (nullptr), - audioProcID (0), deviceID (id), - started (false), - sampleRate (0), - bufferSize (512), - numInputChans (0), - numOutputChans (0), - callbacksAllowed (true) + isInputDevice (input), + isOutputDevice (output) { jassert (deviceID != 0); @@ -443,11 +434,11 @@ public: const int newOutputLatency = getLatencyFromDevice (kAudioDevicePropertyScopeOutput); Array newInChans, newOutChans; - StringArray newInNames (getChannelInfo (true, newInChans)); - StringArray newOutNames (getChannelInfo (false, newOutChans)); + auto newInNames = isInputDevice ? getChannelInfo (true, newInChans) : StringArray(); + auto newOutNames = isOutputDevice ? getChannelInfo (false, newOutChans) : StringArray(); - const int newBitDepth = jmax (getBitDepthFromDevice (kAudioDevicePropertyScopeInput), - getBitDepthFromDevice (kAudioDevicePropertyScopeOutput)); + const int newBitDepth = jmax (getBitDepthFromDevice (kAudioDevicePropertyScopeInput), + getBitDepthFromDevice (kAudioDevicePropertyScopeOutput)); { const ScopedLock sl (callbackLock); @@ -805,24 +796,27 @@ public: //============================================================================== CoreAudioIODevice& owner; - int inputLatency, outputLatency; - int bitDepth; + int inputLatency = 0; + int outputLatency = 0; + int bitDepth = 32; BigInteger activeInputChans, activeOutputChans; StringArray inChanNames, outChanNames; Array sampleRates; Array bufferSizes; - AudioIODeviceCallback* callback; - AudioDeviceIOProcID audioProcID; + AudioIODeviceCallback* callback = nullptr; + AudioDeviceIOProcID audioProcID = 0; private: CriticalSection callbackLock; AudioDeviceID deviceID; - bool started; - double sampleRate; - int bufferSize; + bool started = false; + double sampleRate = 0; + int bufferSize = 512; HeapBlock audioBuffer; - int numInputChans, numOutputChans; - bool callbacksAllowed; + int numInputChans = 0; + int numOutputChans = 0; + bool callbacksAllowed = true; + const bool isInputDevice, isOutputDevice; Array inputChannelInfo, outputChannelInfo; HeapBlock tempInputBuffers, tempOutputBuffers; @@ -931,11 +925,11 @@ public: if (outputDeviceId == 0 || outputDeviceId == inputDeviceId) { jassert (inputDeviceId != 0); - device = new CoreAudioInternal (*this, inputDeviceId); + device = new CoreAudioInternal (*this, inputDeviceId, true, outputDeviceId != 0); } else { - device = new CoreAudioInternal (*this, outputDeviceId); + device = new CoreAudioInternal (*this, outputDeviceId, false, true); } internal = device;