Browse Source

Avoided some pedantic warnings in the win32 ASIO code

tags/2021-05-28
jules 9 years ago
parent
commit
101c4782e1
1 changed files with 30 additions and 27 deletions
  1. +30
    -27
      modules/juce_audio_devices/native/juce_win32_ASIO.cpp

+ 30
- 27
modules/juce_audio_devices/native/juce_win32_ASIO.cpp View File

@@ -320,9 +320,9 @@ public:
classId (clsID), classId (clsID),
inputLatency (0), inputLatency (0),
outputLatency (0), outputLatency (0),
minSize (0), maxSize (0),
preferredSize (0),
granularity (0),
minBufferSize (0), maxBufferSize (0),
preferredBufferSize (0),
bufferGranularity (0),
numClockSources (0), numClockSources (0),
currentBlockSizeSamples (0), currentBlockSizeSamples (0),
currentBitDepth (16), currentBitDepth (16),
@@ -403,7 +403,7 @@ public:
Array<double> getAvailableSampleRates() override { return sampleRates; } Array<double> getAvailableSampleRates() override { return sampleRates; }
Array<int> getAvailableBufferSizes() override { return bufferSizes; } Array<int> getAvailableBufferSizes() override { return bufferSizes; }
int getDefaultBufferSize() override { return preferredSize; }
int getDefaultBufferSize() override { return preferredBufferSize; }
String open (const BigInteger& inputChannels, String open (const BigInteger& inputChannels,
const BigInteger& outputChannels, const BigInteger& outputChannels,
@@ -469,10 +469,10 @@ public:
removeCurrentDriver(); removeCurrentDriver();
loadDriver(); loadDriver();
const String error (initDriver());
String initError = initDriver();
if (error.isNotEmpty())
JUCE_ASIO_LOG ("ASIOInit: " + error);
if (initError.isNotEmpty())
JUCE_ASIO_LOG ("ASIOInit: " + initError);
needToReset = false; needToReset = false;
} }
@@ -489,7 +489,7 @@ public:
if (err != ASE_OK) if (err != ASE_OK)
{ {
currentBlockSizeSamples = preferredSize;
currentBlockSizeSamples = preferredBufferSize;
JUCE_ASIO_LOG_ERROR ("create buffers 2", err); JUCE_ASIO_LOG_ERROR ("create buffers 2", err);
asioObject->disposeBuffers(); asioObject->disposeBuffers();
@@ -561,8 +561,7 @@ public:
} }
readLatencies(); readLatencies();
asioObject->getBufferSize (&minSize, &maxSize, &preferredSize, &granularity);
refreshBufferSizes();
deviceIsOpen = true; deviceIsOpen = true;
JUCE_ASIO_LOG ("starting"); JUCE_ASIO_LOG ("starting");
@@ -762,7 +761,7 @@ private:
Array<double> sampleRates; Array<double> sampleRates;
Array<int> bufferSizes; Array<int> bufferSizes;
long inputLatency, outputLatency; long inputLatency, outputLatency;
long minSize, maxSize, preferredSize, granularity;
long minBufferSize, maxBufferSize, preferredBufferSize, bufferGranularity;
ASIOClockSource clocks[32]; ASIOClockSource clocks[32];
int numClockSources; int numClockSources;
@@ -829,23 +828,27 @@ private:
} }
} }
int readBufferSizes (int bufferSizeSamples)
long refreshBufferSizes()
{ {
minSize = 0;
maxSize = 0;
granularity = 0;
return asioObject->getBufferSize (&minBufferSize, &maxBufferSize, &preferredBufferSize, &bufferGranularity);
}
int readBufferSizes (int bufferSizeSamples)
{
minBufferSize = 0;
maxBufferSize = 0;
bufferGranularity = 0;
long newPreferredSize = 0; long newPreferredSize = 0;
if (asioObject->getBufferSize (&minSize, &maxSize, &newPreferredSize, &granularity) == ASE_OK)
if (asioObject->getBufferSize (&minBufferSize, &maxBufferSize, &newPreferredBufferSize, &bufferGranularity) == ASE_OK)
{ {
if (preferredSize != 0 && newPreferredSize != 0 && newPreferredSize != preferredSize)
if (preferredBufferSize != 0 && newPreferredSize != 0 && newPreferredSize != preferredBufferSize)
shouldUsePreferredSize = true; shouldUsePreferredSize = true;
if (bufferSizeSamples < minSize || bufferSizeSamples > maxSize)
if (bufferSizeSamples < minBufferSize || bufferSizeSamples > maxBufferSize)
shouldUsePreferredSize = true; shouldUsePreferredSize = true;
preferredSize = newPreferredSize;
preferredBufferSize = newPreferredSize;
} }
// unfortunate workaround for certain drivers which crash if you make // unfortunate workaround for certain drivers which crash if you make
@@ -855,11 +858,11 @@ private:
if (shouldUsePreferredSize) if (shouldUsePreferredSize)
{ {
JUCE_ASIO_LOG ("Using preferred size for buffer.."); JUCE_ASIO_LOG ("Using preferred size for buffer..");
long err = asioObject->getBufferSize (&minSize, &maxSize, &preferredSize, &granularity);
long err = refreshBufferSizes();
if (err == ASE_OK) if (err == ASE_OK)
{ {
bufferSizeSamples = (int) preferredSize;
bufferSizeSamples = (int) preferredBufferSize;
} }
else else
{ {
@@ -1082,8 +1085,8 @@ private:
if (i < 2) if (i < 2)
{ {
// clear the channels that are used with the dummy stuff // clear the channels that are used with the dummy stuff
outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[0], preferredSize);
outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[1], preferredSize);
outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[0], preferredBufferSize);
outputFormat[i].clear (bufferInfos [outputBufferIndex + i].buffers[1], preferredBufferSize);
} }
} }
} }
@@ -1203,9 +1206,9 @@ private:
inputFormat.calloc (chansToAllocate); inputFormat.calloc (chansToAllocate);
outputFormat.calloc (chansToAllocate); outputFormat.calloc (chansToAllocate);
if ((err = asioObject->getBufferSize (&minSize, &maxSize, &preferredSize, &granularity)) == 0)
if ((err = refreshBufferSizes()) == 0)
{ {
addBufferSizes (minSize, maxSize, preferredSize, granularity);
addBufferSizes (minBufferSize, maxBufferSize, preferredBufferSize, bufferGranularity);
double currentRate = getSampleRate(); double currentRate = getSampleRate();
@@ -1226,8 +1229,8 @@ private:
updateSampleRates(); updateSampleRates();
readLatencies(); // ..doing these steps because cubase does so at this stage
createDummyBuffers (preferredSize); // in initialisation, and some devices fail if we don't.
readLatencies(); // ..doing these steps because cubase does so at this stage
createDummyBuffers (preferredBufferSize); // in initialisation, and some devices fail if we don't.
readLatencies(); readLatencies();
// start and stop because cubase does it.. // start and stop because cubase does it..


Loading…
Cancel
Save