mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-01 03:10:06 +00:00
Fixed IO channels when selecting <<none>> as OS X audio device
This commit is contained in:
parent
8567338705
commit
21aad5e20c
1 changed files with 21 additions and 27 deletions
|
|
@ -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<CallbackDetailsForChannel> 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<double> sampleRates;
|
||||
Array<int> 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<float> audioBuffer;
|
||||
int numInputChans, numOutputChans;
|
||||
bool callbacksAllowed;
|
||||
int numInputChans = 0;
|
||||
int numOutputChans = 0;
|
||||
bool callbacksAllowed = true;
|
||||
const bool isInputDevice, isOutputDevice;
|
||||
|
||||
Array<CallbackDetailsForChannel> inputChannelInfo, outputChannelInfo;
|
||||
HeapBlock<float*> 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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue