@@ -0,0 +1,31 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2022 - Raw Material Software Limited | |||
JUCE is an open source library subject to commercial or open-source | |||
licensing. | |||
The code included in this file is provided under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission | |||
To use, copy, modify, and/or distribute this software for any purpose with or | |||
without fee is hereby granted provided that the above copyright notice and | |||
this permission notice appear in all copies. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
namespace juce | |||
{ | |||
bool AudioPlayHead::canControlTransport() { return false; } | |||
void AudioPlayHead::transportPlay ([[maybe_unused]] bool shouldStartPlaying) {} | |||
void AudioPlayHead::transportRecord ([[maybe_unused]] bool shouldStartRecording) {} | |||
void AudioPlayHead::transportRewind() {} | |||
} // namespace juce |
@@ -578,16 +578,16 @@ public: | |||
virtual Optional<PositionInfo> getPosition() const = 0; | |||
/** Returns true if this object can control the transport. */ | |||
virtual bool canControlTransport() { return false; } | |||
virtual bool canControlTransport(); | |||
/** Starts or stops the audio. */ | |||
virtual void transportPlay (bool shouldStartPlaying) { ignoreUnused (shouldStartPlaying); } | |||
virtual void transportPlay (bool shouldStartPlaying); | |||
/** Starts or stops recording the audio. */ | |||
virtual void transportRecord (bool shouldStartRecording) { ignoreUnused (shouldStartRecording); } | |||
virtual void transportRecord (bool shouldStartRecording); | |||
/** Rewinds the audio. */ | |||
virtual void transportRewind() {} | |||
virtual void transportRewind(); | |||
}; | |||
} // namespace juce |
@@ -938,15 +938,13 @@ namespace | |||
#if JUCE_USE_VDSP_FRAMEWORK | |||
vDSP_vabs ((float*) src, 1, dest, 1, (vDSP_Length) num); | |||
#else | |||
FloatVectorHelpers::signMask32 signMask; | |||
[[maybe_unused]] FloatVectorHelpers::signMask32 signMask; | |||
signMask.i = 0x7fffffffUL; | |||
JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), | |||
Mode::bit_and (s, mask), | |||
JUCE_LOAD_SRC, | |||
JUCE_INCREMENT_SRC_DEST, | |||
const Mode::ParallelType mask = Mode::load1 (signMask.f);) | |||
ignoreUnused (signMask); | |||
#endif | |||
} | |||
@@ -956,7 +954,7 @@ namespace | |||
#if JUCE_USE_VDSP_FRAMEWORK | |||
vDSP_vabsD ((double*) src, 1, dest, 1, (vDSP_Length) num); | |||
#else | |||
FloatVectorHelpers::signMask64 signMask; | |||
[[maybe_unused]] FloatVectorHelpers::signMask64 signMask; | |||
signMask.i = 0x7fffffffffffffffULL; | |||
JUCE_PERFORM_VEC_OP_SRC_DEST (dest[i] = std::abs (src[i]), | |||
@@ -964,8 +962,6 @@ namespace | |||
JUCE_LOAD_SRC, | |||
JUCE_INCREMENT_SRC_DEST, | |||
const Mode::ParallelType mask = Mode::load1 (signMask.d);) | |||
ignoreUnused (signMask); | |||
#endif | |||
} | |||
@@ -1456,7 +1452,7 @@ intptr_t JUCE_CALLTYPE FloatVectorOperations::getFpStatusRegister() noexcept | |||
return fpsr; | |||
} | |||
void JUCE_CALLTYPE FloatVectorOperations::setFpStatusRegister (intptr_t fpsr) noexcept | |||
void JUCE_CALLTYPE FloatVectorOperations::setFpStatusRegister ([[maybe_unused]] intptr_t fpsr) noexcept | |||
{ | |||
#if JUCE_INTEL && JUCE_USE_SSE_INTRINSICS | |||
// the volatile keyword here is needed to workaround a bug in AppleClang 13.0 | |||
@@ -1481,11 +1477,10 @@ void JUCE_CALLTYPE FloatVectorOperations::setFpStatusRegister (intptr_t fpsr) no | |||
#if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) | |||
jassertfalse; // No support for getting the floating point status register for your platform | |||
#endif | |||
ignoreUnused (fpsr); | |||
#endif | |||
} | |||
void JUCE_CALLTYPE FloatVectorOperations::enableFlushToZeroMode (bool shouldEnable) noexcept | |||
void JUCE_CALLTYPE FloatVectorOperations::enableFlushToZeroMode ([[maybe_unused]] bool shouldEnable) noexcept | |||
{ | |||
#if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || (JUCE_64BIT && JUCE_ARM)) | |||
#if JUCE_USE_SSE_INTRINSICS | |||
@@ -1498,11 +1493,10 @@ void JUCE_CALLTYPE FloatVectorOperations::enableFlushToZeroMode (bool shouldEnab | |||
#if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) | |||
jassertfalse; // No support for flush to zero mode on your platform | |||
#endif | |||
ignoreUnused (shouldEnable); | |||
#endif | |||
} | |||
void JUCE_CALLTYPE FloatVectorOperations::disableDenormalisedNumberSupport (bool shouldDisable) noexcept | |||
void JUCE_CALLTYPE FloatVectorOperations::disableDenormalisedNumberSupport ([[maybe_unused]] bool shouldDisable) noexcept | |||
{ | |||
#if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || (JUCE_64BIT && JUCE_ARM)) | |||
#if JUCE_USE_SSE_INTRINSICS | |||
@@ -1513,7 +1507,6 @@ void JUCE_CALLTYPE FloatVectorOperations::disableDenormalisedNumberSupport (bool | |||
setFpStatusRegister ((getFpStatusRegister() & (~mask)) | (shouldDisable ? mask : 0)); | |||
#else | |||
ignoreUnused (shouldDisable); | |||
#if ! (defined (JUCE_INTEL) || defined (JUCE_ARM)) | |||
jassertfalse; // No support for disable denormals mode on your platform | |||
@@ -85,13 +85,16 @@ | |||
#include "sources/juce_ResamplingAudioSource.cpp" | |||
#include "sources/juce_ReverbAudioSource.cpp" | |||
#include "sources/juce_ToneGeneratorAudioSource.cpp" | |||
#include "sources/juce_PositionableAudioSource.cpp" | |||
#include "synthesisers/juce_Synthesiser.cpp" | |||
#include "audio_play_head/juce_AudioPlayHead.cpp" | |||
#include "midi/ump/juce_UMP.h" | |||
#include "midi/ump/juce_UMPUtils.cpp" | |||
#include "midi/ump/juce_UMPView.cpp" | |||
#include "midi/ump/juce_UMPSysEx7.cpp" | |||
#include "midi/ump/juce_UMPMidi1ToMidi2DefaultTranslator.cpp" | |||
#include "midi/ump/juce_UMPIterator.cpp" | |||
#if JUCE_UNIT_TESTS | |||
#include "utilities/juce_ADSR_test.cpp" | |||
@@ -0,0 +1,37 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2022 - Raw Material Software Limited | |||
JUCE is an open source library subject to commercial or open-source | |||
licensing. | |||
The code included in this file is provided under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission | |||
To use, copy, modify, and/or distribute this software for any purpose with or | |||
without fee is hereby granted provided that the above copyright notice and | |||
this permission notice appear in all copies. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
namespace juce | |||
{ | |||
namespace universal_midi_packets | |||
{ | |||
Iterator::Iterator (const uint32_t* ptr, [[maybe_unused]] size_t bytes) noexcept | |||
: view (ptr) | |||
#if JUCE_DEBUG | |||
, bytesRemaining (bytes) | |||
#endif | |||
{ | |||
} | |||
} // namespace universal_midi_packets | |||
} // namespace juce |
@@ -43,14 +43,7 @@ public: | |||
Iterator() noexcept = default; | |||
/** Creates an iterator pointing at `ptr`. */ | |||
explicit Iterator (const uint32_t* ptr, size_t bytes) noexcept | |||
: view (ptr) | |||
#if JUCE_DEBUG | |||
, bytesRemaining (bytes) | |||
#endif | |||
{ | |||
ignoreUnused (bytes); | |||
} | |||
explicit Iterator (const uint32_t* ptr, size_t bytes) noexcept; | |||
using difference_type = std::iterator_traits<const uint32_t*>::difference_type; | |||
using value_type = View; | |||
@@ -124,7 +117,7 @@ private: | |||
#endif | |||
}; | |||
} | |||
} | |||
} // namespace universal_midi_packets | |||
} // namespace juce | |||
#endif |
@@ -853,6 +853,14 @@ void MPEInstrument::releaseAllNotes() | |||
notes.clear(); | |||
} | |||
//============================================================================== | |||
void MPEInstrument::Listener::noteAdded ([[maybe_unused]] MPENote newNote) {} | |||
void MPEInstrument::Listener::notePressureChanged ([[maybe_unused]] MPENote changedNote) {} | |||
void MPEInstrument::Listener::notePitchbendChanged ([[maybe_unused]] MPENote changedNote) {} | |||
void MPEInstrument::Listener::noteTimbreChanged ([[maybe_unused]] MPENote changedNote) {} | |||
void MPEInstrument::Listener::noteKeyStateChanged ([[maybe_unused]] MPENote changedNote) {} | |||
void MPEInstrument::Listener::noteReleased ([[maybe_unused]] MPENote finishedNote) {} | |||
void MPEInstrument::Listener::zoneLayoutChanged() {} | |||
//============================================================================== | |||
//============================================================================== | |||
@@ -265,12 +265,12 @@ public: | |||
/** Implement this callback to be informed whenever a new expressive MIDI | |||
note is triggered. | |||
*/ | |||
virtual void noteAdded (MPENote newNote) { ignoreUnused (newNote); } | |||
virtual void noteAdded (MPENote newNote); | |||
/** Implement this callback to be informed whenever a currently playing | |||
MPE note's pressure value changes. | |||
*/ | |||
virtual void notePressureChanged (MPENote changedNote) { ignoreUnused (changedNote); } | |||
virtual void notePressureChanged (MPENote changedNote); | |||
/** Implement this callback to be informed whenever a currently playing | |||
MPE note's pitchbend value changes. | |||
@@ -279,12 +279,12 @@ public: | |||
master channel pitchbend event, or if both occur simultaneously. | |||
Call MPENote::getFrequencyInHertz to get the effective note frequency. | |||
*/ | |||
virtual void notePitchbendChanged (MPENote changedNote) { ignoreUnused (changedNote); } | |||
virtual void notePitchbendChanged (MPENote changedNote); | |||
/** Implement this callback to be informed whenever a currently playing | |||
MPE note's timbre value changes. | |||
*/ | |||
virtual void noteTimbreChanged (MPENote changedNote) { ignoreUnused (changedNote); } | |||
virtual void noteTimbreChanged (MPENote changedNote); | |||
/** Implement this callback to be informed whether a currently playing | |||
MPE note's key state (whether the key is down and/or the note is | |||
@@ -293,19 +293,19 @@ public: | |||
Note: If the key state changes to MPENote::off, noteReleased is | |||
called instead. | |||
*/ | |||
virtual void noteKeyStateChanged (MPENote changedNote) { ignoreUnused (changedNote); } | |||
virtual void noteKeyStateChanged (MPENote changedNote); | |||
/** Implement this callback to be informed whenever an MPE note | |||
is released (either by a note-off message, or by a sustain/sostenuto | |||
pedal release for a note that already received a note-off), | |||
and should therefore stop playing. | |||
*/ | |||
virtual void noteReleased (MPENote finishedNote) { ignoreUnused (finishedNote); } | |||
virtual void noteReleased (MPENote finishedNote); | |||
/** Implement this callback to be informed whenever the MPE zone layout | |||
or legacy mode settings of this instrument have been changed. | |||
*/ | |||
virtual void zoneLayoutChanged() {} | |||
virtual void zoneLayoutChanged(); | |||
}; | |||
//============================================================================== | |||
@@ -0,0 +1,28 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2022 - Raw Material Software Limited | |||
JUCE is an open source library subject to commercial or open-source | |||
licensing. | |||
The code included in this file is provided under the terms of the ISC license | |||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission | |||
To use, copy, modify, and/or distribute this software for any purpose with or | |||
without fee is hereby granted provided that the above copyright notice and | |||
this permission notice appear in all copies. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
namespace juce | |||
{ | |||
void PositionableAudioSource::setLooping ([[maybe_unused]] bool shouldLoop) {} | |||
} // namespace juce |
@@ -70,7 +70,7 @@ public: | |||
virtual bool isLooping() const = 0; | |||
/** Tells the source whether you'd like it to play in a loop. */ | |||
virtual void setLooping (bool shouldLoop) { ignoreUnused (shouldLoop); } | |||
virtual void setLooping (bool shouldLoop); | |||
}; | |||
} // namespace juce |
@@ -482,15 +482,14 @@ void Synthesiser::handleSostenutoPedal (int midiChannel, bool isDown) | |||
} | |||
} | |||
void Synthesiser::handleSoftPedal (int midiChannel, bool /*isDown*/) | |||
void Synthesiser::handleSoftPedal ([[maybe_unused]] int midiChannel, bool /*isDown*/) | |||
{ | |||
ignoreUnused (midiChannel); | |||
jassert (midiChannel > 0 && midiChannel <= 16); | |||
} | |||
void Synthesiser::handleProgramChange (int midiChannel, int programNumber) | |||
void Synthesiser::handleProgramChange ([[maybe_unused]] int midiChannel, | |||
[[maybe_unused]] int programNumber) | |||
{ | |||
ignoreUnused (midiChannel, programNumber); | |||
jassert (midiChannel > 0 && midiChannel <= 16); | |||
} | |||
@@ -23,6 +23,14 @@ | |||
namespace juce | |||
{ | |||
void AudioIODeviceCallback::audioDeviceIOCallbackWithContext ([[maybe_unused]] const float* const* inputChannelData, | |||
[[maybe_unused]] int numInputChannels, | |||
[[maybe_unused]] float* const* outputChannelData, | |||
[[maybe_unused]] int numOutputChannels, | |||
[[maybe_unused]] int numSamples, | |||
[[maybe_unused]] const AudioIODeviceCallbackContext& context) {} | |||
//============================================================================== | |||
AudioIODevice::AudioIODevice (const String& deviceName, const String& deviceTypeName) | |||
: name (deviceName), typeName (deviceTypeName) | |||
{ | |||
@@ -98,10 +98,7 @@ public: | |||
float* const* outputChannelData, | |||
int numOutputChannels, | |||
int numSamples, | |||
const AudioIODeviceCallbackContext& context) | |||
{ | |||
ignoreUnused (inputChannelData, numInputChannels, outputChannelData, numOutputChannels, numSamples, context); | |||
} | |||
const AudioIODeviceCallbackContext& context); | |||
/** Called to indicate that the device is about to start calling back. | |||
@@ -129,7 +126,6 @@ public: | |||
virtual void audioDeviceError (const String& errorMessage); | |||
}; | |||
//============================================================================== | |||
/** | |||
Base class for an audio device with synchronised input and output channels. | |||
@@ -23,6 +23,12 @@ | |||
namespace juce | |||
{ | |||
void MidiInputCallback::handlePartialSysexMessage ([[maybe_unused]] MidiInput* source, | |||
[[maybe_unused]] const uint8* messageData, | |||
[[maybe_unused]] int numBytesSoFar, | |||
[[maybe_unused]] double timestamp) {} | |||
//============================================================================== | |||
MidiOutput::MidiOutput (const String& deviceName, const String& deviceIdentifier) | |||
: Thread ("midi out"), deviceInfo (deviceName, deviceIdentifier) | |||
{ | |||
@@ -225,10 +225,7 @@ public: | |||
virtual void handlePartialSysexMessage (MidiInput* source, | |||
const uint8* messageData, | |||
int numBytesSoFar, | |||
double timestamp) | |||
{ | |||
ignoreUnused (source, messageData, numBytesSoFar, timestamp); | |||
} | |||
double timestamp); | |||
}; | |||
//============================================================================== | |||
@@ -596,8 +596,7 @@ private: | |||
{ | |||
if (stream != nullptr) | |||
{ | |||
oboe::Result result = stream->close(); | |||
ignoreUnused (result); | |||
[[maybe_unused]] oboe::Result result = stream->close(); | |||
JUCE_OBOE_LOG ("Requested Oboe stream close with result: " + getOboeString (result)); | |||
} | |||
} | |||
@@ -693,14 +692,15 @@ private: | |||
} | |||
// Not strictly required as these should not change, but recommended by Google anyway | |||
void checkStreamSetup (OboeStream* stream, int deviceId, int numChannels, int expectedSampleRate, | |||
int expectedBufferSize, oboe::AudioFormat format) | |||
void checkStreamSetup (OboeStream* stream, | |||
[[maybe_unused]] int deviceId, | |||
[[maybe_unused]] int numChannels, | |||
[[maybe_unused]] int expectedSampleRate, | |||
[[maybe_unused]] int expectedBufferSize, | |||
oboe::AudioFormat format) | |||
{ | |||
if (auto* nativeStream = stream != nullptr ? stream->getNativeStream() : nullptr) | |||
if ([[maybe_unused]] auto* nativeStream = stream != nullptr ? stream->getNativeStream() : nullptr) | |||
{ | |||
ignoreUnused (deviceId, numChannels, sampleRate, expectedBufferSize); | |||
ignoreUnused (streamFormat, bitDepth); | |||
jassert (numChannels == 0 || numChannels == nativeStream->getChannelCount()); | |||
jassert (expectedSampleRate == 0 || expectedSampleRate == nativeStream->getSampleRate()); | |||
jassert (format == nativeStream->getFormat()); | |||
@@ -860,10 +860,8 @@ private: | |||
return oboe::DataCallbackResult::Continue; | |||
} | |||
void printStreamDebugInfo (oboe::AudioStream* stream) | |||
void printStreamDebugInfo ([[maybe_unused]] oboe::AudioStream* stream) | |||
{ | |||
ignoreUnused (stream); | |||
JUCE_OBOE_LOG ("\nUses AAudio = " + (stream != nullptr ? String ((int) stream->usesAAudio()) : String ("?")) | |||
+ "\nDirection = " + (stream != nullptr ? getOboeString (stream->getDirection()) : String ("?")) | |||
+ "\nSharingMode = " + (stream != nullptr ? getOboeString (stream->getSharingMode()) : String ("?")) | |||
@@ -928,10 +926,8 @@ private: | |||
return time.tv_sec * oboe::kNanosPerSecond + time.tv_nsec; | |||
} | |||
void onErrorBeforeClose (oboe::AudioStream* stream, oboe::Result error) override | |||
void onErrorBeforeClose (oboe::AudioStream* stream, [[maybe_unused]] oboe::Result error) override | |||
{ | |||
ignoreUnused (error); | |||
// only output stream should be the master stream receiving callbacks | |||
jassert (stream->getDirection() == oboe::Direction::Output); | |||
@@ -1167,10 +1163,8 @@ public: | |||
JUCE_OBOE_LOG ("-----InputDevices:"); | |||
for (auto& device : inputDevices) | |||
for ([[maybe_unused]] auto& device : inputDevices) | |||
{ | |||
ignoreUnused (device); | |||
JUCE_OBOE_LOG ("name = " << device.name); | |||
JUCE_OBOE_LOG ("id = " << String (device.id)); | |||
JUCE_OBOE_LOG ("sample rates size = " << String (device.sampleRates.size())); | |||
@@ -1179,10 +1173,8 @@ public: | |||
JUCE_OBOE_LOG ("-----OutputDevices:"); | |||
for (auto& device : outputDevices) | |||
for ([[maybe_unused]] auto& device : outputDevices) | |||
{ | |||
ignoreUnused (device); | |||
JUCE_OBOE_LOG ("name = " << device.name); | |||
JUCE_OBOE_LOG ("id = " << String (device.id)); | |||
JUCE_OBOE_LOG ("sample rates size = " << String (device.sampleRates.size())); | |||
@@ -1392,17 +1384,15 @@ public: | |||
return oboe::DataCallbackResult::Continue; | |||
} | |||
void onErrorBeforeClose (oboe::AudioStream*, oboe::Result error) override | |||
void onErrorBeforeClose (oboe::AudioStream*, [[maybe_unused]] oboe::Result error) override | |||
{ | |||
JUCE_OBOE_LOG ("OboeRealtimeThread: Oboe stream onErrorBeforeClose(): " + getOboeString (error)); | |||
ignoreUnused (error); | |||
jassertfalse; // Should never get here! | |||
} | |||
void onErrorAfterClose (oboe::AudioStream*, oboe::Result error) override | |||
void onErrorAfterClose (oboe::AudioStream*, [[maybe_unused]] oboe::Result error) override | |||
{ | |||
JUCE_OBOE_LOG ("OboeRealtimeThread: Oboe stream onErrorAfterClose(): " + getOboeString (error)); | |||
ignoreUnused (error); | |||
jassertfalse; // Should never get here! | |||
} | |||
@@ -579,16 +579,15 @@ struct iOSAudioIODevice::Pimpl : public AsyncUpdater | |||
impl.fillHostCallbackInfo (callbackInfo); | |||
Boolean hostIsPlaying = NO; | |||
OSStatus err = callbackInfo.transportStateProc2 (callbackInfo.hostUserData, | |||
&hostIsPlaying, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr); | |||
[[maybe_unused]] OSStatus err = callbackInfo.transportStateProc2 (callbackInfo.hostUserData, | |||
&hostIsPlaying, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr); | |||
ignoreUnused (err); | |||
jassert (err == noErr); | |||
if (hostIsPlaying != shouldSartPlaying) | |||
@@ -604,15 +603,14 @@ struct iOSAudioIODevice::Pimpl : public AsyncUpdater | |||
impl.fillHostCallbackInfo (callbackInfo); | |||
Boolean hostIsRecording = NO; | |||
OSStatus err = callbackInfo.transportStateProc2 (callbackInfo.hostUserData, | |||
nullptr, | |||
&hostIsRecording, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr); | |||
ignoreUnused (err); | |||
[[maybe_unused]] OSStatus err = callbackInfo.transportStateProc2 (callbackInfo.hostUserData, | |||
nullptr, | |||
&hostIsRecording, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr, | |||
nullptr); | |||
jassert (err == noErr); | |||
if (hostIsRecording != shouldStartRecording) | |||
@@ -808,11 +806,9 @@ struct iOSAudioIODevice::Pimpl : public AsyncUpdater | |||
void handleAudioUnitPropertyChange (AudioUnit, | |||
AudioUnitPropertyID propertyID, | |||
AudioUnitScope scope, | |||
AudioUnitElement element) | |||
[[maybe_unused]] AudioUnitScope scope, | |||
[[maybe_unused]] AudioUnitElement element) | |||
{ | |||
ignoreUnused (scope); | |||
ignoreUnused (element); | |||
JUCE_IOS_AUDIO_LOG ("handleAudioUnitPropertyChange: propertyID: " << String (propertyID) | |||
<< " scope: " << String (scope) | |||
<< " element: " << String (element)); | |||
@@ -834,9 +830,8 @@ struct iOSAudioIODevice::Pimpl : public AsyncUpdater | |||
{ | |||
UInt32 connected; | |||
UInt32 dataSize = sizeof (connected); | |||
OSStatus err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_IsInterAppConnected, | |||
kAudioUnitScope_Global, 0, &connected, &dataSize); | |||
ignoreUnused (err); | |||
[[maybe_unused]] OSStatus err = AudioUnitGetProperty (audioUnit, kAudioUnitProperty_IsInterAppConnected, | |||
kAudioUnitScope_Global, 0, &connected, &dataSize); | |||
jassert (err == noErr); | |||
JUCE_IOS_AUDIO_LOG ("handleInterAppAudioConnectionChange: " << (connected ? "connected" | |||
@@ -1078,21 +1073,19 @@ struct iOSAudioIODevice::Pimpl : public AsyncUpdater | |||
{ | |||
zerostruct (callbackInfo); | |||
UInt32 dataSize = sizeof (HostCallbackInfo); | |||
OSStatus err = AudioUnitGetProperty (audioUnit, | |||
kAudioUnitProperty_HostCallbacks, | |||
kAudioUnitScope_Global, | |||
0, | |||
&callbackInfo, | |||
&dataSize); | |||
ignoreUnused (err); | |||
[[maybe_unused]] OSStatus err = AudioUnitGetProperty (audioUnit, | |||
kAudioUnitProperty_HostCallbacks, | |||
kAudioUnitScope_Global, | |||
0, | |||
&callbackInfo, | |||
&dataSize); | |||
jassert (err == noErr); | |||
} | |||
void handleAudioTransportEvent (AudioUnitRemoteControlEvent event) | |||
{ | |||
OSStatus err = AudioUnitSetProperty (audioUnit, kAudioOutputUnitProperty_RemoteControlToHost, | |||
kAudioUnitScope_Global, 0, &event, sizeof (event)); | |||
ignoreUnused (err); | |||
[[maybe_unused]] OSStatus err = AudioUnitSetProperty (audioUnit, kAudioOutputUnitProperty_RemoteControlToHost, | |||
kAudioUnitScope_Global, 0, &event, sizeof (event)); | |||
jassert (err == noErr); | |||
} | |||
@@ -544,21 +544,19 @@ private: | |||
} | |||
} | |||
static void infoShutdownCallback (jack_status_t code, const char* reason, void* arg) | |||
static void infoShutdownCallback (jack_status_t code, [[maybe_unused]] const char* reason, void* arg) | |||
{ | |||
jassertquiet (code == 0); | |||
JUCE_JACK_LOG ("Shutting down with message:"); | |||
JUCE_JACK_LOG (reason); | |||
ignoreUnused (reason); | |||
shutdownCallback (arg); | |||
} | |||
static void errorCallback (const char* msg) | |||
static void errorCallback ([[maybe_unused]] const char* msg) | |||
{ | |||
JUCE_JACK_LOG ("JackAudioIODevice::errorCallback " + String (msg)); | |||
ignoreUnused (msg); | |||
} | |||
bool deviceIsOpen = false; | |||
@@ -29,7 +29,7 @@ namespace juce | |||
namespace CoreMidiHelpers | |||
{ | |||
static bool checkError (OSStatus err, int lineNum) | |||
static bool checkError (OSStatus err, [[maybe_unused]] int lineNum) | |||
{ | |||
if (err == noErr) | |||
return true; | |||
@@ -38,7 +38,6 @@ namespace CoreMidiHelpers | |||
Logger::writeToLog ("CoreMIDI error: " + String (lineNum) + " - " + String::toHexString ((int) err)); | |||
#endif | |||
ignoreUnused (lineNum); | |||
return false; | |||
} | |||
@@ -251,8 +251,8 @@ public: | |||
if (pOutputBuffer != nullptr) | |||
{ | |||
JUCE_DS_LOG ("closing output: " + name); | |||
HRESULT hr = pOutputBuffer->Stop(); | |||
JUCE_DS_LOG_ERROR (hr); ignoreUnused (hr); | |||
[[maybe_unused]] HRESULT hr = pOutputBuffer->Stop(); | |||
JUCE_DS_LOG_ERROR (hr); | |||
pOutputBuffer->Release(); | |||
pOutputBuffer = nullptr; | |||
@@ -555,8 +555,8 @@ public: | |||
if (pInputBuffer != nullptr) | |||
{ | |||
JUCE_DS_LOG ("closing input: " + name); | |||
HRESULT hr = pInputBuffer->Stop(); | |||
JUCE_DS_LOG_ERROR (hr); ignoreUnused (hr); | |||
[[maybe_unused]] HRESULT hr = pInputBuffer->Stop(); | |||
JUCE_DS_LOG_ERROR (hr); | |||
pInputBuffer->Release(); | |||
pInputBuffer = nullptr; | |||
@@ -33,9 +33,8 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token") | |||
namespace WasapiClasses | |||
{ | |||
static void logFailure (HRESULT hr) | |||
static void logFailure ([[maybe_unused]] HRESULT hr) | |||
{ | |||
ignoreUnused (hr); | |||
jassert (hr != (HRESULT) 0x800401f0); // If you hit this, it means you're trying to call from | |||
// a thread which hasn't been initialised with CoInitialize(). | |||
@@ -61,10 +61,8 @@ void AudioSourcePlayer::audioDeviceIOCallbackWithContext (const float* const* in | |||
float* const* outputChannelData, | |||
int totalNumOutputChannels, | |||
int numSamples, | |||
const AudioIODeviceCallbackContext& context) | |||
[[maybe_unused]] const AudioIODeviceCallbackContext& context) | |||
{ | |||
ignoreUnused (context); | |||
// these should have been prepared by audioDeviceAboutToStart()... | |||
jassert (sampleRate > 0 && bufferSize > 0); | |||
@@ -721,8 +721,7 @@ private: | |||
{ | |||
using namespace AiffFileHelpers; | |||
const bool couldSeekOk = output->setPosition (headerPosition); | |||
ignoreUnused (couldSeekOk); | |||
[[maybe_unused]] const bool couldSeekOk = output->setPosition (headerPosition); | |||
// if this fails, you've given it an output stream that can't seek! It needs | |||
// to be able to seek back to write the header | |||
@@ -496,8 +496,7 @@ public: | |||
packUint32 ((FLAC__uint32) info.total_samples, buffer + 14, 4); | |||
memcpy (buffer + 18, info.md5sum, 16); | |||
const bool seekOk = output->setPosition (streamStartPos + 4); | |||
ignoreUnused (seekOk); | |||
[[maybe_unused]] const bool seekOk = output->setPosition (streamStartPos + 4); | |||
// if this fails, you've given it an output stream that can't seek! It needs | |||
// to be able to seek back to write the header | |||
@@ -112,8 +112,8 @@ private: | |||
if (cp.start (processArgs)) | |||
{ | |||
auto childOutput = cp.readAllProcessOutput(); | |||
DBG (childOutput); ignoreUnused (childOutput); | |||
[[maybe_unused]] auto childOutput = cp.readAllProcessOutput(); | |||
DBG (childOutput); | |||
cp.waitForProcessToFinish (10000); | |||
return tempMP3.getFile().getSize() > 0; | |||
@@ -262,7 +262,7 @@ private: | |||
void checkCoInitialiseCalled() | |||
{ | |||
ignoreUnused (CoInitialize (nullptr)); | |||
[[maybe_unused]] const auto result = CoInitialize (nullptr); | |||
} | |||
void scanFileForDetails() | |||
@@ -1499,11 +1499,10 @@ namespace AAXClasses | |||
friend void AAX_CALLBACK AAXClasses::algorithmProcessCallback (JUCEAlgorithmContext* const instancesBegin[], const void* const instancesEnd); | |||
void process (float* const* channels, const int numChans, const int bufferSize, | |||
const bool bypass, AAX_IMIDINode* midiNodeIn, AAX_IMIDINode* midiNodesOut) | |||
const bool bypass, [[maybe_unused]] AAX_IMIDINode* midiNodeIn, [[maybe_unused]] AAX_IMIDINode* midiNodesOut) | |||
{ | |||
AudioBuffer<float> buffer (channels, numChans, bufferSize); | |||
midiBuffer.clear(); | |||
ignoreUnused (midiNodeIn, midiNodesOut); | |||
#if JucePlugin_WantsMidiInput || JucePlugin_IsMidiEffect | |||
{ | |||
@@ -2391,7 +2390,7 @@ namespace AAXClasses | |||
return (AAX_STEM_FORMAT_INDEX (stemFormat) <= 12); | |||
} | |||
static void getPlugInDescription (AAX_IEffectDescriptor& descriptor, const AAX_IFeatureInfo* featureInfo) | |||
static void getPlugInDescription (AAX_IEffectDescriptor& descriptor, [[maybe_unused]] const AAX_IFeatureInfo* featureInfo) | |||
{ | |||
PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_AAX; | |||
std::unique_ptr<AudioProcessor> plugin (createPluginFilterOfType (AudioProcessor::wrapperType_AAX)); | |||
@@ -2424,7 +2423,6 @@ namespace AAXClasses | |||
#if JucePlugin_IsMidiEffect | |||
// MIDI effect plug-ins do not support any audio channels | |||
jassert (numInputBuses == 0 && numOutputBuses == 0); | |||
ignoreUnused (featureInfo); | |||
if (auto* desc = descriptor.NewComponentDescriptor()) | |||
{ | |||
@@ -242,11 +242,9 @@ public: | |||
} | |||
//============================================================================== | |||
bool BusCountWritable (AudioUnitScope scope) override | |||
bool BusCountWritable ([[maybe_unused]] AudioUnitScope scope) override | |||
{ | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
ignoreUnused (scope); | |||
return false; | |||
#else | |||
bool isInput; | |||
@@ -774,11 +772,9 @@ public: | |||
} | |||
//============================================================================== | |||
bool busIgnoresLayout (bool isInput, int busNr) const | |||
bool busIgnoresLayout ([[maybe_unused]] bool isInput, [[maybe_unused]] int busNr) const | |||
{ | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
ignoreUnused (isInput, busNr); | |||
return true; | |||
#else | |||
if (const AudioProcessor::Bus* bus = juceFilter->getBus (isInput, busNr)) | |||
@@ -878,10 +874,9 @@ public: | |||
//============================================================================== | |||
// When parameters are discrete we need to use integer values. | |||
float getMaximumParameterValue (AudioProcessorParameter* juceParam) | |||
float getMaximumParameterValue ([[maybe_unused]] AudioProcessorParameter* juceParam) | |||
{ | |||
#if JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE | |||
ignoreUnused (juceParam); | |||
return 1.0f; | |||
#else | |||
return juceParam->isDiscrete() ? (float) (juceParam->getNumSteps() - 1) : 1.0f; | |||
@@ -1234,7 +1229,7 @@ public: | |||
if (newNumChannels == oldNumChannels) | |||
return true; | |||
if (AudioProcessor::Bus* bus = juceFilter->getBus (info.isInput, info.busNr)) | |||
if ([[maybe_unused]] AudioProcessor::Bus* bus = juceFilter->getBus (info.isInput, info.busNr)) | |||
{ | |||
if (! MusicDeviceBase::ValidFormat (inScope, inElement, inNewFormat)) | |||
return false; | |||
@@ -1242,7 +1237,6 @@ public: | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
short configs[][2] = {JucePlugin_PreferredChannelConfigurations}; | |||
ignoreUnused (bus); | |||
return AudioUnitHelpers::isLayoutSupported (*juceFilter, info.isInput, info.busNr, newNumChannels, configs); | |||
#else | |||
return bus->isNumberOfChannelsSupported (newNumChannels); | |||
@@ -1395,7 +1389,11 @@ public: | |||
ComponentResult StopNote (MusicDeviceGroupID, NoteInstanceID, UInt32) override { return noErr; } | |||
//============================================================================== | |||
OSStatus HandleMIDIEvent (UInt8 inStatus, UInt8 inChannel, UInt8 inData1, UInt8 inData2, UInt32 inStartFrame) override | |||
OSStatus HandleMIDIEvent ([[maybe_unused]] UInt8 inStatus, | |||
[[maybe_unused]] UInt8 inChannel, | |||
[[maybe_unused]] UInt8 inData1, | |||
[[maybe_unused]] UInt8 inData2, | |||
[[maybe_unused]] UInt32 inStartFrame) override | |||
{ | |||
#if JucePlugin_WantsMidiInput || JucePlugin_IsMidiEffect | |||
const juce::uint8 data[] = { (juce::uint8) (inStatus | inChannel), | |||
@@ -1406,20 +1404,17 @@ public: | |||
incomingEvents.addEvent (data, 3, (int) inStartFrame); | |||
return noErr; | |||
#else | |||
ignoreUnused (inStatus, inChannel, inData1); | |||
ignoreUnused (inData2, inStartFrame); | |||
return kAudioUnitErr_PropertyNotInUse; | |||
#endif | |||
} | |||
OSStatus HandleSysEx (const UInt8* inData, UInt32 inLength) override | |||
OSStatus HandleSysEx ([[maybe_unused]] const UInt8* inData, [[maybe_unused]] UInt32 inLength) override | |||
{ | |||
#if JucePlugin_WantsMidiInput || JucePlugin_IsMidiEffect | |||
const ScopedLock sl (incomingMidiLock); | |||
incomingEvents.addEvent (inData, (int) inLength, 0); | |||
return noErr; | |||
#else | |||
ignoreUnused (inData, inLength); | |||
return kAudioUnitErr_PropertyNotInUse; | |||
#endif | |||
} | |||
@@ -1950,7 +1945,7 @@ private: | |||
} | |||
} | |||
void pushMidiOutput (UInt32 nFrames) noexcept | |||
void pushMidiOutput ([[maybe_unused]] UInt32 nFrames) noexcept | |||
{ | |||
MIDIPacket* end = nullptr; | |||
@@ -1979,7 +1974,6 @@ private: | |||
for (const auto metadata : midiEvents) | |||
{ | |||
jassert (isPositiveAndBelow (metadata.samplePosition, nFrames)); | |||
ignoreUnused (nFrames); | |||
add (metadata); | |||
@@ -359,11 +359,9 @@ public: | |||
AudioProcessor& processor = getAudioProcessor(); | |||
if (AudioProcessor::Bus* bus = processor.getBus (isInput, busIdx)) | |||
if ([[maybe_unused]] AudioProcessor::Bus* bus = processor.getBus (isInput, busIdx)) | |||
{ | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
ignoreUnused (bus); | |||
short configs[][2] = {JucePlugin_PreferredChannelConfigurations}; | |||
if (! AudioUnitHelpers::isLayoutSupported (processor, isInput, busIdx, newNumChannels, configs)) | |||
@@ -603,10 +601,8 @@ public: | |||
}; | |||
//============================================================================== | |||
void audioProcessorChanged (AudioProcessor* processor, const ChangeDetails& details) override | |||
void audioProcessorChanged ([[maybe_unused]] AudioProcessor* processor, const ChangeDetails& details) override | |||
{ | |||
ignoreUnused (processor); | |||
if (! details.programChanged) | |||
return; | |||
@@ -1109,10 +1105,9 @@ private: | |||
} | |||
// When parameters are discrete we need to use integer values. | |||
float getMaximumParameterValue (AudioProcessorParameter* juceParam) const | |||
float getMaximumParameterValue ([[maybe_unused]] AudioProcessorParameter* juceParam) const | |||
{ | |||
#if JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE | |||
ignoreUnused (juceParam); | |||
return 1.0f; | |||
#else | |||
return juceParam->isDiscrete() ? (float) (juceParam->getNumSteps() - 1) : 1.0f; | |||
@@ -1355,10 +1350,8 @@ private: | |||
} | |||
//============================================================================== | |||
void processEvents (const AURenderEvent *__nullable realtimeEventListHead, int numParams, AUEventSampleTime startTime) | |||
void processEvents (const AURenderEvent *__nullable realtimeEventListHead, [[maybe_unused]] int numParams, AUEventSampleTime startTime) | |||
{ | |||
ignoreUnused (numParams); | |||
for (const AURenderEvent* event = realtimeEventListHead; event != nullptr; event = event->head.next) | |||
{ | |||
switch (event->head.eventType) | |||
@@ -386,13 +386,12 @@ public: | |||
return false; | |||
} | |||
Image getIAAHostIcon (int size) | |||
Image getIAAHostIcon ([[maybe_unused]] int size) | |||
{ | |||
#if JUCE_IOS && JucePlugin_Enable_IAA | |||
if (auto device = dynamic_cast<iOSAudioIODevice*> (deviceManager.getCurrentAudioDevice())) | |||
return device->getIcon (size); | |||
#else | |||
ignoreUnused (size); | |||
#endif | |||
return {}; | |||
@@ -158,10 +158,8 @@ private: | |||
return std::make_unique<LowLevelGraphicsSoftwareRenderer> (Image (this)); | |||
} | |||
void initialiseBitmapData (Image::BitmapData& bitmap, int x, int y, Image::BitmapData::ReadWriteMode mode) override | |||
void initialiseBitmapData (Image::BitmapData& bitmap, int x, int y, [[maybe_unused]] Image::BitmapData::ReadWriteMode mode) override | |||
{ | |||
ignoreUnused (mode); | |||
const auto offset = (size_t) x * (size_t) pixelStride + (size_t) y * (size_t) lineStride; | |||
bitmap.data = imageData + offset; | |||
bitmap.size = (size_t) (lineStride * height) - offset; | |||
@@ -568,7 +566,6 @@ static UnityAudioEffectDefinition getEffectDefinition() | |||
result.setPosition = [] (UnityAudioEffectState* state, unsigned int pos) | |||
{ | |||
ignoreUnused (state, pos); | |||
return 0; | |||
}; | |||
@@ -962,14 +962,12 @@ public: | |||
, public Timer | |||
#endif | |||
{ | |||
EditorCompWrapper (JuceVSTWrapper& w, AudioProcessorEditor& editor, float initialScale) | |||
EditorCompWrapper (JuceVSTWrapper& w, AudioProcessorEditor& editor, [[maybe_unused]] float initialScale) | |||
: wrapper (w) | |||
{ | |||
editor.setOpaque (true); | |||
#if ! JUCE_MAC | |||
editor.setScaleFactor (initialScale); | |||
#else | |||
ignoreUnused (initialScale); | |||
#endif | |||
addAndMakeVisible (editor); | |||
@@ -1714,13 +1712,12 @@ private: | |||
return 0; | |||
} | |||
pointer_sized_int handlePreAudioProcessingEvents (VstOpCodeArguments args) | |||
pointer_sized_int handlePreAudioProcessingEvents ([[maybe_unused]] VstOpCodeArguments args) | |||
{ | |||
#if JucePlugin_WantsMidiInput || JucePlugin_IsMidiEffect | |||
VSTMidiEventList::addEventsToMidiBuffer ((Vst2::VstEvents*) args.ptr, midiEvents); | |||
return 1; | |||
#else | |||
ignoreUnused (args); | |||
return 0; | |||
#endif | |||
} | |||
@@ -2013,7 +2010,7 @@ private: | |||
return 0; | |||
} | |||
pointer_sized_int handleSetContentScaleFactor (float scale, bool force = false) | |||
pointer_sized_int handleSetContentScaleFactor ([[maybe_unused]] float scale, [[maybe_unused]] bool force = false) | |||
{ | |||
checkWhetherMessageThreadIsCorrect(); | |||
#if JUCE_LINUX || JUCE_BSD | |||
@@ -2030,9 +2027,6 @@ private: | |||
if (editorComp != nullptr) | |||
editorComp->setContentScaleFactor (editorScaleFactor); | |||
} | |||
#else | |||
ignoreUnused (scale, force); | |||
#endif | |||
return 1; | |||
@@ -80,7 +80,7 @@ void initialiseMacVST() | |||
} | |||
JUCE_API void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, bool isNSView); | |||
void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, bool isNSView) | |||
void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, [[maybe_unused]] bool isNSView) | |||
{ | |||
JUCE_AUTORELEASEPOOL | |||
{ | |||
@@ -161,7 +161,6 @@ void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, | |||
} | |||
#endif | |||
ignoreUnused (isNSView); | |||
NSView* parentView = [(NSView*) parentWindowOrView retain]; | |||
#if JucePlugin_EditorRequiresKeyboardFocus | |||
@@ -183,7 +182,7 @@ void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, | |||
} | |||
JUCE_API void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSView); | |||
void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSView) | |||
void detachComponentFromWindowRefVST (Component* comp, void* window, [[maybe_unused]] bool isNSView) | |||
{ | |||
JUCE_AUTORELEASEPOOL | |||
{ | |||
@@ -232,14 +231,13 @@ void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSVi | |||
} | |||
#endif | |||
ignoreUnused (isNSView); | |||
comp->removeFromDesktop(); | |||
[(id) window release]; | |||
} | |||
} | |||
JUCE_API void setNativeHostWindowSizeVST (void* window, Component* component, int newWidth, int newHeight, bool isNSView); | |||
void setNativeHostWindowSizeVST (void* window, Component* component, int newWidth, int newHeight, bool isNSView) | |||
void setNativeHostWindowSizeVST (void* window, Component* component, int newWidth, int newHeight, [[maybe_unused]] bool isNSView) | |||
{ | |||
JUCE_AUTORELEASEPOOL | |||
{ | |||
@@ -260,8 +258,6 @@ void setNativeHostWindowSizeVST (void* window, Component* component, int newWidt | |||
} | |||
#endif | |||
ignoreUnused (isNSView); | |||
if (NSView* hostView = (NSView*) window) | |||
{ | |||
const int dx = newWidth - component->getWidth(); | |||
@@ -277,10 +273,10 @@ void setNativeHostWindowSizeVST (void* window, Component* component, int newWidt | |||
} | |||
JUCE_API void checkWindowVisibilityVST (void* window, Component* comp, bool isNSView); | |||
void checkWindowVisibilityVST (void* window, Component* comp, bool isNSView) | |||
void checkWindowVisibilityVST ([[maybe_unused]] void* window, | |||
[[maybe_unused]] Component* comp, | |||
[[maybe_unused]] bool isNSView) | |||
{ | |||
ignoreUnused (window, comp, isNSView); | |||
#if ! JUCE_64BIT | |||
if (! isNSView) | |||
comp->setVisible ([((NSWindow*) window) isVisible]); | |||
@@ -288,7 +284,7 @@ void checkWindowVisibilityVST (void* window, Component* comp, bool isNSView) | |||
} | |||
JUCE_API bool forwardCurrentKeyEventToHostVST (Component* comp, bool isNSView); | |||
bool forwardCurrentKeyEventToHostVST (Component* comp, bool isNSView) | |||
bool forwardCurrentKeyEventToHostVST ([[maybe_unused]] Component* comp, [[maybe_unused]] bool isNSView) | |||
{ | |||
#if ! JUCE_64BIT | |||
if (! isNSView) | |||
@@ -300,7 +296,6 @@ bool forwardCurrentKeyEventToHostVST (Component* comp, bool isNSView) | |||
} | |||
#endif | |||
ignoreUnused (comp, isNSView); | |||
return false; | |||
} | |||
@@ -1075,14 +1075,15 @@ public: | |||
} | |||
//============================================================================== | |||
tresult PLUGIN_API getMidiControllerAssignment (Steinberg::int32 /*busIndex*/, Steinberg::int16 channel, | |||
Vst::CtrlNumber midiControllerNumber, Vst::ParamID& resultID) override | |||
tresult PLUGIN_API getMidiControllerAssignment ([[maybe_unused]] Steinberg::int32 busIndex, | |||
[[maybe_unused]] Steinberg::int16 channel, | |||
[[maybe_unused]] Vst::CtrlNumber midiControllerNumber, | |||
[[maybe_unused]] Vst::ParamID& resultID) override | |||
{ | |||
#if JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS | |||
resultID = midiControllerToParameter[channel][midiControllerNumber]; | |||
return kResultTrue; // Returning false makes some hosts stop asking for further MIDI Controller Assignments | |||
#else | |||
ignoreUnused (channel, midiControllerNumber, resultID); | |||
return kResultFalse; | |||
#endif | |||
} | |||
@@ -1991,7 +1992,7 @@ private: | |||
return kResultFalse; | |||
} | |||
tresult PLUGIN_API setContentScaleFactor (const Steinberg::IPlugViewContentScaleSupport::ScaleFactor factor) override | |||
tresult PLUGIN_API setContentScaleFactor ([[maybe_unused]] const Steinberg::IPlugViewContentScaleSupport::ScaleFactor factor) override | |||
{ | |||
#if ! JUCE_MAC | |||
const auto scaleToApply = [&] | |||
@@ -2016,7 +2017,6 @@ private: | |||
return kResultTrue; | |||
#else | |||
ignoreUnused (factor); | |||
return kResultFalse; | |||
#endif | |||
} | |||
@@ -2427,9 +2427,8 @@ public: | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
short configs[][2] = { JucePlugin_PreferredChannelConfigurations }; | |||
const int numConfigs = numElementsInArray (configs); | |||
[[maybe_unused]] const int numConfigs = numElementsInArray (configs); | |||
ignoreUnused (numConfigs); | |||
jassert (numConfigs > 0 && (configs[0][0] > 0 || configs[0][1] > 0)); | |||
pluginInstance->setPlayConfigDetails (configs[0][0], configs[0][1], 44100.0, 1024); | |||
@@ -134,7 +134,10 @@ namespace juce | |||
#if JucePlugin_Build_VST | |||
bool JUCE_API handleManufacturerSpecificVST2Opcode (int32 index, pointer_sized_int value, void* ptr, float); | |||
bool JUCE_API handleManufacturerSpecificVST2Opcode (int32 index, pointer_sized_int value, void* ptr, float) | |||
bool JUCE_API handleManufacturerSpecificVST2Opcode ([[maybe_unused]] int32 index, | |||
[[maybe_unused]] pointer_sized_int value, | |||
[[maybe_unused]] void* ptr, | |||
float) | |||
{ | |||
#if VST3_REPLACEMENT_AVAILABLE | |||
if ((index == (int32) ByteOrder::bigEndianInt ("stCA") || index == (int32) ByteOrder::bigEndianInt ("stCa")) | |||
@@ -145,8 +148,6 @@ namespace juce | |||
::memcpy (ptr, fuid, 16); | |||
return true; | |||
} | |||
#else | |||
ignoreUnused (index, value, ptr); | |||
#endif | |||
return false; | |||
} | |||
@@ -64,10 +64,8 @@ void AudioPluginFormatManager::addDefaultFormats() | |||
#if JUCE_DEBUG | |||
// you should only call this method once! | |||
for (auto* format : formats) | |||
for (auto* format [[maybe_unused]] : formats) | |||
{ | |||
ignoreUnused (format); | |||
#if HAS_VST | |||
jassert (dynamic_cast<VSTPluginFormat*> (format) == nullptr); | |||
#endif | |||
@@ -179,14 +179,15 @@ namespace AudioUnitFormatHelpers | |||
return false; | |||
} | |||
static bool getComponentDescFromFile (const String& fileOrIdentifier, AudioComponentDescription& desc, | |||
String& name, String& version, String& manufacturer) | |||
static bool getComponentDescFromFile ([[maybe_unused]] const String& fileOrIdentifier, | |||
[[maybe_unused]] AudioComponentDescription& desc, | |||
[[maybe_unused]] String& name, | |||
[[maybe_unused]] String& version, | |||
[[maybe_unused]] String& manufacturer) | |||
{ | |||
zerostruct (desc); | |||
#if JUCE_IOS | |||
ignoreUnused (fileOrIdentifier, name, version, manufacturer); | |||
return false; | |||
#else | |||
const File file (fileOrIdentifier); | |||
@@ -434,7 +435,7 @@ namespace AudioUnitFormatHelpers | |||
} | |||
} | |||
static bool hasARAExtension (AudioUnit audioUnit) | |||
static bool hasARAExtension ([[maybe_unused]] AudioUnit audioUnit) | |||
{ | |||
#if JUCE_PLUGINHOST_ARA | |||
UInt32 propertySize = sizeof (ARA::ARAAudioUnitFactory); | |||
@@ -449,8 +450,6 @@ static bool hasARAExtension (AudioUnit audioUnit) | |||
if ((status == noErr) && (propertySize == sizeof (ARA::ARAAudioUnitFactory)) && ! isWriteable) | |||
return true; | |||
#else | |||
ignoreUnused (audioUnit); | |||
#endif | |||
return false; | |||
@@ -465,7 +464,7 @@ using AudioUnitUniquePtr = std::unique_ptr<std::remove_pointer_t<AudioUnit>, Aud | |||
using AudioUnitSharedPtr = std::shared_ptr<std::remove_pointer_t<AudioUnit>>; | |||
using AudioUnitWeakPtr = std::weak_ptr<std::remove_pointer_t<AudioUnit>>; | |||
static std::shared_ptr<const ARA::ARAFactory> getARAFactory (AudioUnitSharedPtr audioUnit) | |||
static std::shared_ptr<const ARA::ARAFactory> getARAFactory ([[maybe_unused]] AudioUnitSharedPtr audioUnit) | |||
{ | |||
#if JUCE_PLUGINHOST_ARA | |||
jassert (audioUnit != nullptr); | |||
@@ -491,8 +490,6 @@ static std::shared_ptr<const ARA::ARAFactory> getARAFactory (AudioUnitSharedPtr | |||
[owningAuPtr = std::move (audioUnit)]() {}); | |||
} | |||
} | |||
#else | |||
ignoreUnused (audioUnit); | |||
#endif | |||
return {}; | |||
@@ -2640,13 +2637,12 @@ public: | |||
} | |||
} | |||
void embedViewController (JUCE_IOS_MAC_VIEW* pluginView, const CGSize& size) | |||
void embedViewController (JUCE_IOS_MAC_VIEW* pluginView, [[maybe_unused]] const CGSize& size) | |||
{ | |||
wrapper.setView (pluginView); | |||
waitingForViewCallback = false; | |||
#if JUCE_MAC | |||
ignoreUnused (size); | |||
if (pluginView != nil) | |||
wrapper.resizeToFitView(); | |||
#else | |||
@@ -2682,7 +2678,7 @@ private: | |||
bool waitingForViewCallback = false; | |||
bool createView (bool createGenericViewIfNeeded) | |||
bool createView ([[maybe_unused]] bool createGenericViewIfNeeded) | |||
{ | |||
JUCE_IOS_MAC_VIEW* pluginView = nil; | |||
UInt32 dataSize = 0; | |||
@@ -2756,8 +2752,6 @@ private: | |||
pluginView = [[AUGenericView alloc] initWithAudioUnit: plugin.audioUnit]; | |||
} | |||
#else | |||
ignoreUnused (createGenericViewIfNeeded); | |||
#endif | |||
wrapper.setView (pluginView); | |||
@@ -384,10 +384,8 @@ public: | |||
void getCurrentProgramStateInformation (MemoryBlock& destData) override { getStateInformation (destData); } | |||
void setCurrentProgramStateInformation (const void* data, int sizeInBytes) override { setStateInformation (data, sizeInBytes); } | |||
void setStateInformation (const void* data, int sizeInBytes) override | |||
void setStateInformation (const void* data, [[maybe_unused]] int sizeInBytes) override | |||
{ | |||
ignoreUnused (sizeInBytes); | |||
auto* p = static_cast<const float*> (data); | |||
for (int i = 0; i < getParameters().size(); ++i) | |||
@@ -1278,10 +1278,8 @@ private: | |||
LV2_Options_Option* options, | |||
LV2_Worker_Schedule* schedule, | |||
LV2_Resize_Port_Resize* resize, | |||
LV2_Log_Log* log) | |||
[[maybe_unused]] LV2_Log_Log* log) | |||
{ | |||
ignoreUnused (log); | |||
return { LV2_Feature { LV2_STATE__loadDefaultState, nullptr }, | |||
LV2_Feature { LV2_BUF_SIZE__boundedBlockLength, nullptr }, | |||
LV2_Feature { LV2_URID__map, map }, | |||
@@ -2873,11 +2871,10 @@ private: | |||
ports.forEachPort ([&] (const PortHeader& header) | |||
{ | |||
const auto emplaced = result.emplace (header.symbol, header.index); | |||
[[maybe_unused]] const auto emplaced = result.emplace (header.symbol, header.index); | |||
// This will complain if there are duplicate port symbols. | |||
jassert (emplaced.second); | |||
ignoreUnused (emplaced); | |||
}); | |||
return result; | |||
@@ -4884,10 +4881,8 @@ private: | |||
: freeWheelingPort->info.min; | |||
} | |||
void pushMessage (MessageHeader header, uint32_t size, const void* data) | |||
void pushMessage (MessageHeader header, [[maybe_unused]] uint32_t size, const void* data) | |||
{ | |||
ignoreUnused (size); | |||
if (header.protocol == 0 || header.protocol == instance->urids.mLV2_UI__floatProtocol) | |||
{ | |||
const auto value = readUnaligned<float> (data); | |||
@@ -375,9 +375,8 @@ struct VST3HostContext : public Vst::IComponentHandler, // From VST V3.0.0 | |||
tresult PLUGIN_API setDirty (TBool) override; | |||
//============================================================================== | |||
tresult PLUGIN_API requestOpenEditor (FIDString name) override | |||
tresult PLUGIN_API requestOpenEditor ([[maybe_unused]] FIDString name) override | |||
{ | |||
ignoreUnused (name); | |||
jassertfalse; | |||
return kResultFalse; | |||
} | |||
@@ -1388,7 +1387,7 @@ static int compareWithString (Type (&charArray)[N], const String& str) | |||
} | |||
template <typename Callback> | |||
static void forEachARAFactory (IPluginFactory* pluginFactory, Callback&& cb) | |||
static void forEachARAFactory ([[maybe_unused]] IPluginFactory* pluginFactory, [[maybe_unused]] Callback&& cb) | |||
{ | |||
#if JUCE_PLUGINHOST_ARA && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX) | |||
const auto numClasses = pluginFactory->countClasses(); | |||
@@ -1404,12 +1403,11 @@ static void forEachARAFactory (IPluginFactory* pluginFactory, Callback&& cb) | |||
break; | |||
} | |||
} | |||
#else | |||
ignoreUnused (pluginFactory, cb); | |||
#endif | |||
} | |||
static std::shared_ptr<const ARA::ARAFactory> getARAFactory (Steinberg::IPluginFactory* pluginFactory, const String& pluginName) | |||
static std::shared_ptr<const ARA::ARAFactory> getARAFactory ([[maybe_unused]] Steinberg::IPluginFactory* pluginFactory, | |||
[[maybe_unused]] const String& pluginName) | |||
{ | |||
std::shared_ptr<const ARA::ARAFactory> factory; | |||
@@ -1432,8 +1430,6 @@ static std::shared_ptr<const ARA::ARAFactory> getARAFactory (Steinberg::IPluginF | |||
return true; | |||
}); | |||
#else | |||
ignoreUnused (pluginFactory, pluginName); | |||
#endif | |||
return factory; | |||
@@ -1667,8 +1663,8 @@ private: | |||
return; | |||
} | |||
const auto attachedResult = view->attached ((void*) pluginHandle, defaultVST3WindowType); | |||
ignoreUnused (warnOnFailure (attachedResult)); | |||
[[maybe_unused]] const auto attachedResult = view->attached ((void*) pluginHandle, defaultVST3WindowType); | |||
[[maybe_unused]] const auto warning = warnOnFailure (attachedResult); | |||
if (attachedResult == kResultOk) | |||
attachedCalled = true; | |||
@@ -1689,11 +1685,10 @@ private: | |||
{ | |||
if (scaleInterface != nullptr) | |||
{ | |||
const auto result = scaleInterface->setContentScaleFactor ((Steinberg::IPlugViewContentScaleSupport::ScaleFactor) getEffectiveScale()); | |||
ignoreUnused (result); | |||
[[maybe_unused]] const auto result = scaleInterface->setContentScaleFactor ((Steinberg::IPlugViewContentScaleSupport::ScaleFactor) getEffectiveScale()); | |||
#if ! JUCE_MAC | |||
ignoreUnused (warnOnFailure (result)); | |||
[[maybe_unused]] const auto warning = warnOnFailure (result); | |||
#endif | |||
} | |||
} | |||
@@ -1885,8 +1880,7 @@ struct VST3ComponentHolder | |||
if (classIdx >= 0) | |||
{ | |||
PClassInfo info; | |||
bool success = (factory->getClassInfo (classIdx, &info) == kResultOk); | |||
ignoreUnused (success); | |||
[[maybe_unused]] bool success = (factory->getClassInfo (classIdx, &info) == kResultOk); | |||
jassert (success); | |||
VSTComSmartPtr<IPluginFactory2> pf2; | |||
@@ -3091,9 +3085,9 @@ public: | |||
} | |||
/** @note Not applicable to VST3 */ | |||
void setCurrentProgramStateInformation (const void* data, int sizeInBytes) override | |||
void setCurrentProgramStateInformation ([[maybe_unused]] const void* data, | |||
[[maybe_unused]] int sizeInBytes) override | |||
{ | |||
ignoreUnused (data, sizeInBytes); | |||
} | |||
private: | |||
@@ -3028,10 +3028,8 @@ public: | |||
} | |||
//============================================================================== | |||
void mouseDown (const MouseEvent& e) override | |||
void mouseDown ([[maybe_unused]] const MouseEvent& e) override | |||
{ | |||
ignoreUnused (e); | |||
#if JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD | |||
toFront (true); | |||
#endif | |||
@@ -220,6 +220,7 @@ private: | |||
#include "utilities/juce_AudioProcessorValueTreeState.cpp" | |||
#include "utilities/juce_PluginHostType.cpp" | |||
#include "utilities/juce_NativeScaleFactorNotifier.cpp" | |||
#include "utilities/juce_VSTCallbackHandler.cpp" | |||
#include "utilities/ARA/juce_ARA_utils.cpp" | |||
#include "format_types/juce_LV2PluginFormat.cpp" | |||
@@ -340,7 +340,7 @@ void AudioProcessor::removeListener (AudioProcessorListener* listenerToRemove) | |||
void AudioProcessor::setPlayConfigDetails (int newNumIns, int newNumOuts, double newSampleRate, int newBlockSize) | |||
{ | |||
bool success = true; | |||
[[maybe_unused]] bool success = true; | |||
if (getTotalNumInputChannels() != newNumIns) | |||
success &= setChannelLayoutOfBus (true, 0, AudioChannelSet::canonicalChannelSet (newNumIns)); | |||
@@ -362,7 +362,6 @@ void AudioProcessor::setPlayConfigDetails (int newNumIns, int newNumOuts, double | |||
jassert (success && newNumIns == getTotalNumInputChannels() && newNumOuts == getTotalNumOutputChannels()); | |||
setRateAndBufferSizeDetails (newSampleRate, newBlockSize); | |||
ignoreUnused (success); | |||
} | |||
void AudioProcessor::setRateAndBufferSizeDetails (double newSampleRate, int newBlockSize) noexcept | |||
@@ -442,10 +441,8 @@ void AudioProcessor::validateParameter (AudioProcessorParameter* param) | |||
#endif | |||
} | |||
void AudioProcessor::checkForDuplicateTrimmedParamID (AudioProcessorParameter* param) | |||
void AudioProcessor::checkForDuplicateTrimmedParamID ([[maybe_unused]] AudioProcessorParameter* param) | |||
{ | |||
ignoreUnused (param); | |||
#if JUCE_DEBUG && ! JUCE_DISABLE_CAUTIOUS_PARAMETER_ID_CHECKING | |||
if (auto* withID = dynamic_cast<AudioProcessorParameterWithID*> (param)) | |||
{ | |||
@@ -476,10 +473,8 @@ void AudioProcessor::checkForDuplicateTrimmedParamID (AudioProcessorParameter* p | |||
#endif | |||
} | |||
void AudioProcessor::checkForDuplicateParamID (AudioProcessorParameter* param) | |||
void AudioProcessor::checkForDuplicateParamID ([[maybe_unused]] AudioProcessorParameter* param) | |||
{ | |||
ignoreUnused (param); | |||
#if JUCE_DEBUG | |||
if (auto* withID = dynamic_cast<AudioProcessorParameterWithID*> (param)) | |||
{ | |||
@@ -491,10 +486,8 @@ void AudioProcessor::checkForDuplicateParamID (AudioProcessorParameter* param) | |||
#endif | |||
} | |||
void AudioProcessor::checkForDuplicateGroupIDs (const AudioProcessorParameterGroup& newGroup) | |||
void AudioProcessor::checkForDuplicateGroupIDs ([[maybe_unused]] const AudioProcessorParameterGroup& newGroup) | |||
{ | |||
ignoreUnused (newGroup); | |||
#if JUCE_DEBUG | |||
auto groups = newGroup.getSubgroups (true); | |||
groups.add (&newGroup); | |||
@@ -598,10 +591,9 @@ void AudioProcessor::processBypassed (AudioBuffer<floatType>& buffer, MidiBuffer | |||
void AudioProcessor::processBlockBypassed (AudioBuffer<float>& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); } | |||
void AudioProcessor::processBlockBypassed (AudioBuffer<double>& buffer, MidiBuffer& midi) { processBypassed (buffer, midi); } | |||
void AudioProcessor::processBlock (AudioBuffer<double>& buffer, MidiBuffer& midiMessages) | |||
void AudioProcessor::processBlock ([[maybe_unused]] AudioBuffer<double>& buffer, | |||
[[maybe_unused]] MidiBuffer& midiMessages) | |||
{ | |||
ignoreUnused (buffer, midiMessages); | |||
// If you hit this assertion then either the caller called the double | |||
// precision version of processBlock on a processor which does not support it | |||
// (i.e. supportsDoublePrecisionProcessing() returns false), or the implementation | |||
@@ -1493,6 +1485,9 @@ AudioProcessorParameter* AudioProcessor::getParamChecked (int index) const | |||
return p; | |||
} | |||
bool AudioProcessor::canAddBus ([[maybe_unused]] bool isInput) const { return false; } | |||
bool AudioProcessor::canRemoveBus ([[maybe_unused]] bool isInput) const { return false; } | |||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||
JUCE_END_IGNORE_WARNINGS_MSVC | |||
@@ -524,7 +524,7 @@ public: | |||
@see addBus | |||
*/ | |||
virtual bool canAddBus (bool isInput) const { ignoreUnused (isInput); return false; } | |||
virtual bool canAddBus (bool isInput) const; | |||
/** Callback to query if the last bus can currently be removed. | |||
@@ -537,7 +537,7 @@ public: | |||
The default implementation will always return false. | |||
*/ | |||
virtual bool canRemoveBus (bool isInput) const { ignoreUnused (isInput); return false; } | |||
virtual bool canRemoveBus (bool isInput) const; | |||
/** Dynamically request an additional bus. | |||
@@ -216,13 +216,11 @@ void AudioProcessorEditor::setScaleFactor (float newScale) | |||
typedef ComponentPeer* (*createUnityPeerFunctionType) (Component&); | |||
createUnityPeerFunctionType juce_createUnityPeerFn = nullptr; | |||
ComponentPeer* AudioProcessorEditor::createNewPeer (int styleFlags, void* nativeWindow) | |||
ComponentPeer* AudioProcessorEditor::createNewPeer ([[maybe_unused]] int styleFlags, | |||
[[maybe_unused]] void* nativeWindow) | |||
{ | |||
if (juce_createUnityPeerFn != nullptr) | |||
{ | |||
ignoreUnused (styleFlags, nativeWindow); | |||
return juce_createUnityPeerFn (*this); | |||
} | |||
return Component::createNewPeer (styleFlags, nativeWindow); | |||
} | |||
@@ -834,138 +834,122 @@ ARAEditorView* ARADocumentControllerSpecialisation::doCreateEditorView() | |||
return new ARAEditorView (getDocumentController()); | |||
} | |||
bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAvailable (const ARA::PlugIn::AudioSource* audioSource, | |||
ARA::ARAContentType type) | |||
bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAvailable ([[maybe_unused]] const ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
juce::ignoreUnused (audioSource, type); | |||
return false; | |||
} | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioSourceContentGrade (const ARA::PlugIn::AudioSource* audioSource, | |||
ARA::ARAContentType type) | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioSourceContentGrade ([[maybe_unused]] const ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
// Overriding doIsAudioSourceContentAvailable() requires overriding | |||
// doGetAudioSourceContentGrade() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (audioSource, type); | |||
return ARA::kARAContentGradeInitial; | |||
} | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioSourceContentReader (ARA::PlugIn::AudioSource* audioSource, | |||
ARA::ARAContentType type, | |||
const ARA::ARAContentTimeRange* range) | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioSourceContentReader ([[maybe_unused]] ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAContentType type, | |||
[[maybe_unused]] const ARA::ARAContentTimeRange* range) | |||
{ | |||
// Overriding doIsAudioSourceContentAvailable() requires overriding | |||
// doCreateAudioSourceContentReader() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (audioSource, type, range); | |||
return nullptr; | |||
} | |||
bool ARADocumentControllerSpecialisation::doIsAudioModificationContentAvailable (const ARA::PlugIn::AudioModification* audioModification, | |||
ARA::ARAContentType type) | |||
bool ARADocumentControllerSpecialisation::doIsAudioModificationContentAvailable ([[maybe_unused]] const ARA::PlugIn::AudioModification* audioModification, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
juce::ignoreUnused (audioModification, type); | |||
return false; | |||
} | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioModificationContentGrade (const ARA::PlugIn::AudioModification* audioModification, | |||
ARA::ARAContentType type) | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetAudioModificationContentGrade ([[maybe_unused]] const ARA::PlugIn::AudioModification* audioModification, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
// Overriding doIsAudioModificationContentAvailable() requires overriding | |||
// doGetAudioModificationContentGrade() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (audioModification, type); | |||
return ARA::kARAContentGradeInitial; | |||
} | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioModificationContentReader (ARA::PlugIn::AudioModification* audioModification, | |||
ARA::ARAContentType type, | |||
const ARA::ARAContentTimeRange* range) | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreateAudioModificationContentReader ([[maybe_unused]] ARA::PlugIn::AudioModification* audioModification, | |||
[[maybe_unused]] ARA::ARAContentType type, | |||
[[maybe_unused]] const ARA::ARAContentTimeRange* range) | |||
{ | |||
// Overriding doIsAudioModificationContentAvailable() requires overriding | |||
// doCreateAudioModificationContentReader() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (audioModification, type, range); | |||
return nullptr; | |||
} | |||
bool ARADocumentControllerSpecialisation::doIsPlaybackRegionContentAvailable (const ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
ARA::ARAContentType type) | |||
bool ARADocumentControllerSpecialisation::doIsPlaybackRegionContentAvailable ([[maybe_unused]] const ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
juce::ignoreUnused (playbackRegion, type); | |||
return false; | |||
} | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetPlaybackRegionContentGrade (const ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
ARA::ARAContentType type) | |||
ARA::ARAContentGrade ARADocumentControllerSpecialisation::doGetPlaybackRegionContentGrade ([[maybe_unused]] const ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
// Overriding doIsPlaybackRegionContentAvailable() requires overriding | |||
// doGetPlaybackRegionContentGrade() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (playbackRegion, type); | |||
return ARA::kARAContentGradeInitial; | |||
} | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreatePlaybackRegionContentReader (ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
ARA::ARAContentType type, | |||
const ARA::ARAContentTimeRange* range) | |||
ARA::PlugIn::ContentReader* ARADocumentControllerSpecialisation::doCreatePlaybackRegionContentReader ([[maybe_unused]] ARA::PlugIn::PlaybackRegion* playbackRegion, | |||
[[maybe_unused]] ARA::ARAContentType type, | |||
[[maybe_unused]] const ARA::ARAContentTimeRange* range) | |||
{ | |||
// Overriding doIsPlaybackRegionContentAvailable() requires overriding | |||
// doCreatePlaybackRegionContentReader() accordingly! | |||
jassertfalse; | |||
juce::ignoreUnused (playbackRegion, type, range); | |||
return nullptr; | |||
} | |||
bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAnalysisIncomplete (const ARA::PlugIn::AudioSource* audioSource, | |||
ARA::ARAContentType type) | |||
bool ARADocumentControllerSpecialisation::doIsAudioSourceContentAnalysisIncomplete ([[maybe_unused]] const ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAContentType type) | |||
{ | |||
juce::ignoreUnused (audioSource, type); | |||
return false; | |||
} | |||
void ARADocumentControllerSpecialisation::doRequestAudioSourceContentAnalysis (ARA::PlugIn::AudioSource* audioSource, | |||
std::vector<ARA::ARAContentType> const& contentTypes) | |||
void ARADocumentControllerSpecialisation::doRequestAudioSourceContentAnalysis ([[maybe_unused]] ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] std::vector<ARA::ARAContentType> const& contentTypes) | |||
{ | |||
juce::ignoreUnused (audioSource, contentTypes); | |||
} | |||
ARA::ARAInt32 ARADocumentControllerSpecialisation::doGetProcessingAlgorithmsCount() { return 0; } | |||
const ARA::ARAProcessingAlgorithmProperties* | |||
ARADocumentControllerSpecialisation::doGetProcessingAlgorithmProperties (ARA::ARAInt32 algorithmIndex) | |||
ARADocumentControllerSpecialisation::doGetProcessingAlgorithmProperties ([[maybe_unused]] ARA::ARAInt32 algorithmIndex) | |||
{ | |||
juce::ignoreUnused (algorithmIndex); | |||
return nullptr; | |||
} | |||
ARA::ARAInt32 ARADocumentControllerSpecialisation::doGetProcessingAlgorithmForAudioSource (const ARA::PlugIn::AudioSource* audioSource) | |||
ARA::ARAInt32 ARADocumentControllerSpecialisation::doGetProcessingAlgorithmForAudioSource ([[maybe_unused]] const ARA::PlugIn::AudioSource* audioSource) | |||
{ | |||
// doGetProcessingAlgorithmForAudioSource() must be implemented if the supported | |||
// algorithm count is greater than zero. | |||
if (getDocumentController()->getProcessingAlgorithmsCount() > 0) | |||
jassertfalse; | |||
juce::ignoreUnused (audioSource); | |||
return 0; | |||
} | |||
void ARADocumentControllerSpecialisation::doRequestProcessingAlgorithmForAudioSource (ARA::PlugIn::AudioSource* audioSource, | |||
ARA::ARAInt32 algorithmIndex) | |||
void ARADocumentControllerSpecialisation::doRequestProcessingAlgorithmForAudioSource ([[maybe_unused]] ARA::PlugIn::AudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAInt32 algorithmIndex) | |||
{ | |||
// doRequestProcessingAlgorithmForAudioSource() must be implemented if the supported | |||
// algorithm count is greater than zero. | |||
if (getDocumentController()->getProcessingAlgorithmsCount() > 0) | |||
jassertfalse; | |||
juce::ignoreUnused (audioSource, algorithmIndex); | |||
jassert (getDocumentController()->getProcessingAlgorithmsCount() <= 0); | |||
} | |||
} // namespace juce |
@@ -196,4 +196,98 @@ void ARAPlaybackRegion::notifyContentChanged (ARAContentUpdateScopes scopeFlags, | |||
notifyARAHost); | |||
} | |||
//============================================================================== | |||
void ARADocumentListener::willBeginEditing ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::didEndEditing ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::willNotifyModelUpdates ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::didNotifyModelUpdates ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::willUpdateDocumentProperties ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARADocumentProperties> newProperties) {} | |||
void ARADocumentListener::didUpdateDocumentProperties ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::didAddMusicalContextToDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARAMusicalContext* musicalContext) {} | |||
void ARADocumentListener::willRemoveMusicalContextFromDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARAMusicalContext* musicalContext) {} | |||
void ARADocumentListener::didReorderMusicalContextsInDocument ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::didAddRegionSequenceToDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
void ARADocumentListener::willRemoveRegionSequenceFromDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
void ARADocumentListener::didReorderRegionSequencesInDocument ([[maybe_unused]] ARADocument* document) {} | |||
void ARADocumentListener::didAddAudioSourceToDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARAAudioSource* audioSource) {} | |||
void ARADocumentListener::willRemoveAudioSourceFromDocument ([[maybe_unused]] ARADocument* document, | |||
[[maybe_unused]] ARAAudioSource* audioSource) {} | |||
void ARADocumentListener::willDestroyDocument ([[maybe_unused]] ARADocument* document) {} | |||
//============================================================================== | |||
void ARAMusicalContextListener::willUpdateMusicalContextProperties ([[maybe_unused]] ARAMusicalContext* musicalContext, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARAMusicalContextProperties> newProperties) {} | |||
void ARAMusicalContextListener::didUpdateMusicalContextProperties ([[maybe_unused]] ARAMusicalContext* musicalContext) {} | |||
void ARAMusicalContextListener::doUpdateMusicalContextContent ([[maybe_unused]] ARAMusicalContext* musicalContext, | |||
[[maybe_unused]] ARAContentUpdateScopes scopeFlags) {} | |||
void ARAMusicalContextListener::didAddRegionSequenceToMusicalContext ([[maybe_unused]] ARAMusicalContext* musicalContext, | |||
[[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
void ARAMusicalContextListener::willRemoveRegionSequenceFromMusicalContext ([[maybe_unused]] ARAMusicalContext* musicalContext, | |||
[[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
void ARAMusicalContextListener::didReorderRegionSequencesInMusicalContext ([[maybe_unused]] ARAMusicalContext* musicalContext) {} | |||
void ARAMusicalContextListener::willDestroyMusicalContext ([[maybe_unused]] ARAMusicalContext* musicalContext) {} | |||
//============================================================================== | |||
void ARAPlaybackRegionListener::willUpdatePlaybackRegionProperties ([[maybe_unused]] ARAPlaybackRegion* playbackRegion, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARAPlaybackRegionProperties> newProperties) {} | |||
void ARAPlaybackRegionListener::didUpdatePlaybackRegionProperties ([[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
void ARAPlaybackRegionListener::didUpdatePlaybackRegionContent ([[maybe_unused]] ARAPlaybackRegion* playbackRegion, | |||
[[maybe_unused]] ARAContentUpdateScopes scopeFlags) {} | |||
void ARAPlaybackRegionListener::willDestroyPlaybackRegion ([[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
//============================================================================== | |||
void ARARegionSequenceListener::willUpdateRegionSequenceProperties ([[maybe_unused]] ARARegionSequence* regionSequence, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARARegionSequenceProperties> newProperties) {} | |||
void ARARegionSequenceListener::didUpdateRegionSequenceProperties ([[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
void ARARegionSequenceListener::willRemovePlaybackRegionFromRegionSequence ([[maybe_unused]] ARARegionSequence* regionSequence, | |||
[[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
void ARARegionSequenceListener::didAddPlaybackRegionToRegionSequence ([[maybe_unused]] ARARegionSequence* regionSequence, | |||
[[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
void ARARegionSequenceListener::willDestroyRegionSequence ([[maybe_unused]] ARARegionSequence* regionSequence) {} | |||
//============================================================================== | |||
void ARAAudioSourceListener::willUpdateAudioSourceProperties ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARAAudioSourceProperties> newProperties) {} | |||
void ARAAudioSourceListener::didUpdateAudioSourceProperties ([[maybe_unused]] ARAAudioSource* audioSource) {} | |||
void ARAAudioSourceListener::doUpdateAudioSourceContent ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] ARAContentUpdateScopes scopeFlags) {} | |||
void ARAAudioSourceListener::didUpdateAudioSourceAnalysisProgress ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] ARA::ARAAnalysisProgressState state, | |||
[[maybe_unused]] float progress) {} | |||
void ARAAudioSourceListener::willEnableAudioSourceSamplesAccess ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] bool enable) {} | |||
void ARAAudioSourceListener::didEnableAudioSourceSamplesAccess ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] bool enable) {} | |||
void ARAAudioSourceListener::willDeactivateAudioSourceForUndoHistory ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] bool deactivate) {} | |||
void ARAAudioSourceListener::didDeactivateAudioSourceForUndoHistory ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] bool deactivate) {} | |||
void ARAAudioSourceListener::didAddAudioModificationToAudioSource ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] ARAAudioModification* audioModification) {} | |||
void ARAAudioSourceListener::willRemoveAudioModificationFromAudioSource ([[maybe_unused]] ARAAudioSource* audioSource, | |||
[[maybe_unused]] ARAAudioModification* audioModification) {} | |||
void ARAAudioSourceListener::willDestroyAudioSource ([[maybe_unused]] ARAAudioSource* audioSource) {} | |||
//============================================================================== | |||
void ARAAudioModificationListener::willUpdateAudioModificationProperties ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] ARA::PlugIn::PropertiesPtr<ARA::ARAAudioModificationProperties> newProperties) {} | |||
void ARAAudioModificationListener::didUpdateAudioModificationProperties ([[maybe_unused]] ARAAudioModification* audioModification) {} | |||
void ARAAudioModificationListener::didUpdateAudioModificationContent ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] ARAContentUpdateScopes scopeFlags) {} | |||
void ARAAudioModificationListener::willDeactivateAudioModificationForUndoHistory ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] bool deactivate) {} | |||
void ARAAudioModificationListener::didDeactivateAudioModificationForUndoHistory ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] bool deactivate) {} | |||
void ARAAudioModificationListener::didAddPlaybackRegionToAudioModification ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
void ARAAudioModificationListener::willRemovePlaybackRegionFromAudioModification ([[maybe_unused]] ARAAudioModification* audioModification, | |||
[[maybe_unused]] ARAPlaybackRegion* playbackRegion) {} | |||
void ARAAudioModificationListener::willDestroyAudioModification ([[maybe_unused]] ARAAudioModification* audioModification) {} | |||
} // namespace juce |
@@ -181,76 +181,49 @@ public: | |||
/** Destructor */ | |||
virtual ~ARADocumentListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the document enters an editing state. | |||
@param document The document about to enter an editing state. | |||
*/ | |||
virtual void willBeginEditing (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void willBeginEditing (ARADocument* document); | |||
/** Called after the document exits an editing state. | |||
@param document The document about exit an editing state. | |||
*/ | |||
virtual void didEndEditing (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void didEndEditing (ARADocument* document); | |||
/** Called before sending model updates do the host. | |||
@param document The document whose model updates are about to be sent. | |||
*/ | |||
virtual void willNotifyModelUpdates (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void willNotifyModelUpdates (ARADocument* document); | |||
/** Called after sending model updates do the host. | |||
@param document The document whose model updates have just been sent. | |||
*/ | |||
virtual void didNotifyModelUpdates (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void didNotifyModelUpdates (ARADocument* document); | |||
/** Called before the document's properties are updated. | |||
@param document The document whose properties will be updated. | |||
@param newProperties The document properties that will be assigned to \p document. | |||
*/ | |||
virtual void willUpdateDocumentProperties (ARADocument* document, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARADocumentProperties> newProperties) | |||
{ | |||
ignoreUnused (document, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARADocumentProperties> newProperties); | |||
/** Called after the document's properties are updated. | |||
@param document The document whose properties were updated. | |||
*/ | |||
virtual void didUpdateDocumentProperties (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void didUpdateDocumentProperties (ARADocument* document); | |||
/** Called after a musical context is added to the document. | |||
@param document The document that \p musicalContext was added to. | |||
@param musicalContext The musical context that was added to \p document. | |||
*/ | |||
virtual void didAddMusicalContextToDocument (ARADocument* document, ARAMusicalContext* musicalContext) | |||
{ | |||
ignoreUnused (document, musicalContext); | |||
} | |||
virtual void didAddMusicalContextToDocument (ARADocument* document, ARAMusicalContext* musicalContext); | |||
/** Called before a musical context is removed from the document. | |||
@param document The document that \p musicalContext will be removed from. | |||
@param musicalContext The musical context that will be removed from \p document. | |||
*/ | |||
virtual void willRemoveMusicalContextFromDocument (ARADocument* document, | |||
ARAMusicalContext* musicalContext) | |||
{ | |||
ignoreUnused (document, musicalContext); | |||
} | |||
virtual void willRemoveMusicalContextFromDocument (ARADocument* document, ARAMusicalContext* musicalContext); | |||
/** Called after the musical contexts are reordered in an ARA document | |||
@@ -259,29 +232,19 @@ public: | |||
@param document The document with reordered musical contexts. | |||
*/ | |||
virtual void didReorderMusicalContextsInDocument (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void didReorderMusicalContextsInDocument (ARADocument* document); | |||
/** Called after a region sequence is added to the document. | |||
@param document The document that \p regionSequence was added to. | |||
@param regionSequence The region sequence that was added to \p document. | |||
*/ | |||
virtual void didAddRegionSequenceToDocument (ARADocument* document, ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (document, regionSequence); | |||
} | |||
virtual void didAddRegionSequenceToDocument (ARADocument* document, ARARegionSequence* regionSequence); | |||
/** Called before a region sequence is removed from the document. | |||
@param document The document that \p regionSequence will be removed from. | |||
@param regionSequence The region sequence that will be removed from \p document. | |||
*/ | |||
virtual void willRemoveRegionSequenceFromDocument (ARADocument* document, | |||
ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (document, regionSequence); | |||
} | |||
virtual void willRemoveRegionSequenceFromDocument (ARADocument* document, ARARegionSequence* regionSequence); | |||
/** Called after the region sequences are reordered in an ARA document | |||
@@ -290,38 +253,24 @@ public: | |||
@param document The document with reordered region sequences. | |||
*/ | |||
virtual void didReorderRegionSequencesInDocument (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
virtual void didReorderRegionSequencesInDocument (ARADocument* document); | |||
/** Called after an audio source is added to the document. | |||
@param document The document that \p audioSource was added to. | |||
@param audioSource The audio source that was added to \p document. | |||
*/ | |||
virtual void didAddAudioSourceToDocument (ARADocument* document, ARAAudioSource* audioSource) | |||
{ | |||
ignoreUnused (document, audioSource); | |||
} | |||
virtual void didAddAudioSourceToDocument (ARADocument* document, ARAAudioSource* audioSource); | |||
/** Called before an audio source is removed from the document. | |||
@param document The document that \p audioSource will be removed from . | |||
@param audioSource The audio source that will be removed from \p document. | |||
*/ | |||
virtual void willRemoveAudioSourceFromDocument (ARADocument* document, ARAAudioSource* audioSource) | |||
{ | |||
ignoreUnused (document, audioSource); | |||
} | |||
virtual void willRemoveAudioSourceFromDocument (ARADocument* document, ARAAudioSource* audioSource); | |||
/** Called before the document is destroyed by the ARA host. | |||
@param document The document that will be destroyed. | |||
*/ | |||
virtual void willDestroyDocument (ARADocument* document) | |||
{ | |||
ignoreUnused (document); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyDocument (ARADocument* document); | |||
}; | |||
//============================================================================== | |||
@@ -395,55 +344,36 @@ class JUCE_API ARAMusicalContextListener | |||
public: | |||
virtual ~ARAMusicalContextListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the musical context's properties are updated. | |||
@param musicalContext The musical context whose properties will be updated. | |||
@param newProperties The musical context properties that will be assigned to \p musicalContext. | |||
*/ | |||
virtual void willUpdateMusicalContextProperties (ARAMusicalContext* musicalContext, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAMusicalContextProperties> newProperties) | |||
{ | |||
ignoreUnused (musicalContext, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAMusicalContextProperties> newProperties); | |||
/** Called after the musical context's properties are updated by the host. | |||
@param musicalContext The musical context whose properties were updated. | |||
*/ | |||
virtual void didUpdateMusicalContextProperties (ARAMusicalContext* musicalContext) | |||
{ | |||
ignoreUnused (musicalContext); | |||
} | |||
virtual void didUpdateMusicalContextProperties (ARAMusicalContext* musicalContext); | |||
/** Called when the musical context's content (i.e tempo entries or chords) changes. | |||
@param musicalContext The musical context with updated content. | |||
@param scopeFlags The scope of the content update indicating what has changed. | |||
*/ | |||
virtual void doUpdateMusicalContextContent (ARAMusicalContext* musicalContext, | |||
ARAContentUpdateScopes scopeFlags) | |||
{ | |||
ignoreUnused (musicalContext, scopeFlags); | |||
} | |||
virtual void doUpdateMusicalContextContent (ARAMusicalContext* musicalContext, ARAContentUpdateScopes scopeFlags); | |||
/** Called after a region sequence is added to the musical context. | |||
@param musicalContext The musical context that \p regionSequence was added to. | |||
@param regionSequence The region sequence that was added to \p musicalContext. | |||
*/ | |||
virtual void didAddRegionSequenceToMusicalContext (ARAMusicalContext* musicalContext, | |||
ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (musicalContext, regionSequence); | |||
} | |||
virtual void didAddRegionSequenceToMusicalContext (ARAMusicalContext* musicalContext, ARARegionSequence* regionSequence); | |||
/** Called before a region sequence is removed from the musical context. | |||
@param musicalContext The musical context that \p regionSequence will be removed from. | |||
@param regionSequence The region sequence that will be removed from \p musicalContext. | |||
*/ | |||
virtual void willRemoveRegionSequenceFromMusicalContext (ARAMusicalContext* musicalContext, | |||
ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (musicalContext, regionSequence); | |||
} | |||
ARARegionSequence* regionSequence); | |||
/** Called after the region sequences are reordered in an ARA MusicalContext | |||
@@ -452,20 +382,12 @@ public: | |||
@param musicalContext The musical context with reordered region sequences. | |||
*/ | |||
virtual void didReorderRegionSequencesInMusicalContext (ARAMusicalContext* musicalContext) | |||
{ | |||
ignoreUnused (musicalContext); | |||
} | |||
virtual void didReorderRegionSequencesInMusicalContext (ARAMusicalContext* musicalContext); | |||
/** Called before the musical context is destroyed. | |||
@param musicalContext The musical context that will be destroyed. | |||
*/ | |||
virtual void willDestroyMusicalContext (ARAMusicalContext* musicalContext) | |||
{ | |||
ignoreUnused (musicalContext); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyMusicalContext (ARAMusicalContext* musicalContext); | |||
}; | |||
//============================================================================== | |||
@@ -528,45 +450,29 @@ public: | |||
/** Destructor. */ | |||
virtual ~ARAPlaybackRegionListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the playback region's properties are updated. | |||
@param playbackRegion The playback region whose properties will be updated. | |||
@param newProperties The playback region properties that will be assigned to \p playbackRegion. | |||
*/ | |||
virtual void willUpdatePlaybackRegionProperties (ARAPlaybackRegion* playbackRegion, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAPlaybackRegionProperties> newProperties) | |||
{ | |||
ignoreUnused (playbackRegion, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAPlaybackRegionProperties> newProperties); | |||
/** Called after the playback region's properties are updated. | |||
@param playbackRegion The playback region whose properties were updated. | |||
*/ | |||
virtual void didUpdatePlaybackRegionProperties (ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (playbackRegion); | |||
} | |||
virtual void didUpdatePlaybackRegionProperties (ARAPlaybackRegion* playbackRegion); | |||
/** Called when the playback region's content (i.e. samples or notes) changes. | |||
@param playbackRegion The playback region with updated content. | |||
@param scopeFlags The scope of the content update. | |||
*/ | |||
virtual void didUpdatePlaybackRegionContent (ARAPlaybackRegion* playbackRegion, | |||
ARAContentUpdateScopes scopeFlags) | |||
{ | |||
ignoreUnused (playbackRegion, scopeFlags); | |||
} | |||
ARAContentUpdateScopes scopeFlags); | |||
/** Called before the playback region is destroyed. | |||
@param playbackRegion The playback region that will be destroyed. | |||
*/ | |||
virtual void willDestroyPlaybackRegion (ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (playbackRegion); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyPlaybackRegion (ARAPlaybackRegion* playbackRegion); | |||
}; | |||
//============================================================================== | |||
@@ -665,55 +571,36 @@ public: | |||
/** Destructor. */ | |||
virtual ~ARARegionSequenceListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the region sequence's properties are updated. | |||
@param regionSequence The region sequence whose properties will be updated. | |||
@param newProperties The region sequence properties that will be assigned to \p regionSequence. | |||
*/ | |||
virtual void willUpdateRegionSequenceProperties (ARARegionSequence* regionSequence, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARARegionSequenceProperties> newProperties) | |||
{ | |||
ignoreUnused (regionSequence, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARARegionSequenceProperties> newProperties); | |||
/** Called after the region sequence's properties are updated. | |||
@param regionSequence The region sequence whose properties were updated. | |||
*/ | |||
virtual void didUpdateRegionSequenceProperties (ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (regionSequence); | |||
} | |||
virtual void didUpdateRegionSequenceProperties (ARARegionSequence* regionSequence); | |||
/** Called before a playback region is removed from the region sequence. | |||
@param regionSequence The region sequence that \p playbackRegion will be removed from. | |||
@param playbackRegion The playback region that will be removed from \p regionSequence. | |||
*/ | |||
virtual void willRemovePlaybackRegionFromRegionSequence (ARARegionSequence* regionSequence, | |||
ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (regionSequence, playbackRegion); | |||
} | |||
ARAPlaybackRegion* playbackRegion); | |||
/** Called after a playback region is added to the region sequence. | |||
@param regionSequence The region sequence that \p playbackRegion was added to. | |||
@param playbackRegion The playback region that was added to \p regionSequence. | |||
*/ | |||
virtual void didAddPlaybackRegionToRegionSequence (ARARegionSequence* regionSequence, | |||
ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (regionSequence, playbackRegion); | |||
} | |||
ARAPlaybackRegion* playbackRegion); | |||
/** Called before the region sequence is destroyed. | |||
@param regionSequence The region sequence that will be destroyed. | |||
*/ | |||
virtual void willDestroyRegionSequence (ARARegionSequence* regionSequence) | |||
{ | |||
ignoreUnused (regionSequence); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyRegionSequence (ARARegionSequence* regionSequence); | |||
}; | |||
//============================================================================== | |||
@@ -800,34 +687,23 @@ public: | |||
/** Destructor. */ | |||
virtual ~ARAAudioSourceListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the audio source's properties are updated. | |||
@param audioSource The audio source whose properties will be updated. | |||
@param newProperties The audio source properties that will be assigned to \p audioSource. | |||
*/ | |||
virtual void willUpdateAudioSourceProperties (ARAAudioSource* audioSource, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAAudioSourceProperties> newProperties) | |||
{ | |||
ignoreUnused (audioSource, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAAudioSourceProperties> newProperties); | |||
/** Called after the audio source's properties are updated. | |||
@param audioSource The audio source whose properties were updated. | |||
*/ | |||
virtual void didUpdateAudioSourceProperties (ARAAudioSource* audioSource) | |||
{ | |||
ignoreUnused (audioSource); | |||
} | |||
virtual void didUpdateAudioSourceProperties (ARAAudioSource* audioSource); | |||
/** Called when the audio source's content (i.e. samples or notes) changes. | |||
@param audioSource The audio source with updated content. | |||
@param scopeFlags The scope of the content update. | |||
*/ | |||
virtual void doUpdateAudioSourceContent (ARAAudioSource* audioSource, ARAContentUpdateScopes scopeFlags) | |||
{ | |||
ignoreUnused (audioSource, scopeFlags); | |||
} | |||
virtual void doUpdateAudioSourceContent (ARAAudioSource* audioSource, ARAContentUpdateScopes scopeFlags); | |||
/** Called to notify progress when an audio source is being analyzed. | |||
@param audioSource The audio source being analyzed. | |||
@@ -836,76 +712,54 @@ public: | |||
*/ | |||
virtual void didUpdateAudioSourceAnalysisProgress (ARAAudioSource* audioSource, | |||
ARA::ARAAnalysisProgressState state, | |||
float progress) | |||
{ | |||
ignoreUnused (audioSource, state, progress); | |||
} | |||
float progress); | |||
/** Called before access to an audio source's samples is enabled or disabled. | |||
@param audioSource The audio source whose sample access state will be changed. | |||
@param enable A bool indicating whether or not sample access will be enabled or disabled. | |||
*/ | |||
virtual void willEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, bool enable) | |||
{ | |||
ignoreUnused (audioSource, enable); | |||
} | |||
virtual void willEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, | |||
bool enable); | |||
/** Called after access to an audio source's samples is enabled or disabled. | |||
@param audioSource The audio source whose sample access state was changed. | |||
@param enable A bool indicating whether or not sample access was enabled or disabled. | |||
*/ | |||
virtual void didEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, bool enable) | |||
{ | |||
ignoreUnused (audioSource, enable); | |||
} | |||
virtual void didEnableAudioSourceSamplesAccess (ARAAudioSource* audioSource, | |||
bool enable); | |||
/** Called before an audio source is activated or deactivated when being removed / added from the host's undo history. | |||
@param audioSource The audio source that will be activated or deactivated | |||
@param deactivate A bool indicating whether \p audioSource was deactivated or activated. | |||
*/ | |||
virtual void willDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, bool deactivate) | |||
{ | |||
ignoreUnused (audioSource, deactivate); | |||
} | |||
virtual void willDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, | |||
bool deactivate); | |||
/** Called after an audio source is activated or deactivated when being removed / added from the host's undo history. | |||
@param audioSource The audio source that was activated or deactivated | |||
@param deactivate A bool indicating whether \p audioSource was deactivated or activated. | |||
*/ | |||
virtual void didDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, bool deactivate) | |||
{ | |||
ignoreUnused (audioSource, deactivate); | |||
} | |||
virtual void didDeactivateAudioSourceForUndoHistory (ARAAudioSource* audioSource, | |||
bool deactivate); | |||
/** Called after an audio modification is added to the audio source. | |||
@param audioSource The region sequence that \p audioModification was added to. | |||
@param audioModification The playback region that was added to \p audioSource. | |||
*/ | |||
virtual void didAddAudioModificationToAudioSource (ARAAudioSource* audioSource, | |||
ARAAudioModification* audioModification) | |||
{ | |||
ignoreUnused (audioSource, audioModification); | |||
} | |||
ARAAudioModification* audioModification); | |||
/** Called before an audio modification is removed from the audio source. | |||
@param audioSource The audio source that \p audioModification will be removed from. | |||
@param audioModification The audio modification that will be removed from \p audioSource. | |||
*/ | |||
virtual void willRemoveAudioModificationFromAudioSource (ARAAudioSource* audioSource, | |||
ARAAudioModification* audioModification) | |||
{ | |||
ignoreUnused (audioSource, audioModification); | |||
} | |||
ARAAudioModification* audioModification); | |||
/** Called before the audio source is destroyed. | |||
@param audioSource The audio source that will be destroyed. | |||
*/ | |||
virtual void willDestroyAudioSource (ARAAudioSource* audioSource) | |||
{ | |||
ignoreUnused (audioSource); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyAudioSource (ARAAudioSource* audioSource); | |||
}; | |||
//============================================================================== | |||
@@ -1004,82 +858,57 @@ public: | |||
/** Destructor. */ | |||
virtual ~ARAAudioModificationListener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called before the audio modification's properties are updated. | |||
@param audioModification The audio modification whose properties will be updated. | |||
@param newProperties The audio modification properties that will be assigned to \p audioModification. | |||
*/ | |||
virtual void willUpdateAudioModificationProperties (ARAAudioModification* audioModification, | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAAudioModificationProperties> newProperties) | |||
{ | |||
ignoreUnused (audioModification, newProperties); | |||
} | |||
ARA::PlugIn::PropertiesPtr<ARA::ARAAudioModificationProperties> newProperties); | |||
/** Called after the audio modification's properties are updated. | |||
@param audioModification The audio modification whose properties were updated. | |||
*/ | |||
virtual void didUpdateAudioModificationProperties (ARAAudioModification* audioModification) | |||
{ | |||
ignoreUnused (audioModification); | |||
} | |||
virtual void didUpdateAudioModificationProperties (ARAAudioModification* audioModification); | |||
/** Called when the audio modification's content (i.e. samples or notes) changes. | |||
@param audioModification The audio modification with updated content. | |||
@param scopeFlags The scope of the content update. | |||
*/ | |||
virtual void didUpdateAudioModificationContent (ARAAudioModification* audioModification, ARAContentUpdateScopes scopeFlags) | |||
{ | |||
ignoreUnused (audioModification, scopeFlags); | |||
} | |||
virtual void didUpdateAudioModificationContent (ARAAudioModification* audioModification, | |||
ARAContentUpdateScopes scopeFlags); | |||
/** Called before an audio modification is activated or deactivated when being removed / added from the host's undo history. | |||
@param audioModification The audio modification that was activated or deactivated | |||
@param deactivate A bool indicating whether \p audioModification was deactivated or activated. | |||
*/ | |||
virtual void willDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, bool deactivate) | |||
{ | |||
ignoreUnused (audioModification, deactivate); | |||
} | |||
virtual void willDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, | |||
bool deactivate); | |||
/** Called after an audio modification is activated or deactivated when being removed / added from the host's undo history. | |||
@param audioModification The audio modification that was activated or deactivated | |||
@param deactivate A bool indicating whether \p audioModification was deactivated or activated. | |||
*/ | |||
virtual void didDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, bool deactivate) | |||
{ | |||
ignoreUnused (audioModification, deactivate); | |||
} | |||
virtual void didDeactivateAudioModificationForUndoHistory (ARAAudioModification* audioModification, | |||
bool deactivate); | |||
/** Called after a playback region is added to the audio modification. | |||
@param audioModification The audio modification that \p playbackRegion was added to. | |||
@param playbackRegion The playback region that was added to \p audioModification. | |||
*/ | |||
virtual void didAddPlaybackRegionToAudioModification (ARAAudioModification* audioModification, | |||
ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (audioModification, playbackRegion); | |||
} | |||
ARAPlaybackRegion* playbackRegion); | |||
/** Called before a playback region is removed from the audio modification. | |||
@param audioModification The audio modification that \p playbackRegion will be removed from. | |||
@param playbackRegion The playback region that will be removed from \p audioModification. | |||
*/ | |||
virtual void willRemovePlaybackRegionFromAudioModification (ARAAudioModification* audioModification, | |||
ARAPlaybackRegion* playbackRegion) | |||
{ | |||
ignoreUnused (audioModification, playbackRegion); | |||
} | |||
ARAPlaybackRegion* playbackRegion); | |||
/** Called before the audio modification is destroyed. | |||
@param audioModification The audio modification that will be destroyed. | |||
*/ | |||
virtual void willDestroyAudioModification (ARAAudioModification* audioModification) | |||
{ | |||
ignoreUnused (audioModification); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void willDestroyAudioModification (ARAAudioModification* audioModification); | |||
}; | |||
//============================================================================== | |||
@@ -28,12 +28,10 @@ | |||
namespace juce | |||
{ | |||
bool ARARenderer::processBlock (AudioBuffer<double>& buffer, | |||
AudioProcessor::Realtime realtime, | |||
const AudioPlayHead::PositionInfo& positionInfo) noexcept | |||
bool ARARenderer::processBlock ([[maybe_unused]] AudioBuffer<double>& buffer, | |||
[[maybe_unused]] AudioProcessor::Realtime realtime, | |||
[[maybe_unused]] const AudioPlayHead::PositionInfo& positionInfo) noexcept | |||
{ | |||
ignoreUnused (buffer, realtime, positionInfo); | |||
// If you hit this assertion then either the caller called the double | |||
// precision version of processBlock on a processor which does not support it | |||
// (i.e. supportsDoublePrecisionProcessing() returns false), or the implementation | |||
@@ -43,6 +41,12 @@ bool ARARenderer::processBlock (AudioBuffer<double>& buffer, | |||
return false; | |||
} | |||
void ARARenderer::prepareToPlay ([[maybe_unused]] double sampleRate, | |||
[[maybe_unused]] int maximumSamplesPerBlock, | |||
[[maybe_unused]] int numChannels, | |||
[[maybe_unused]] AudioProcessor::ProcessingPrecision precision, | |||
[[maybe_unused]] AlwaysNonRealtime alwaysNonRealtime) {} | |||
//============================================================================== | |||
#if ARA_VALIDATE_API_CALLS | |||
void ARAPlaybackRenderer::addPlaybackRegion (ARA::ARAPlaybackRegionRef playbackRegionRef) noexcept | |||
@@ -62,6 +66,21 @@ void ARAPlaybackRenderer::removePlaybackRegion (ARA::ARAPlaybackRegionRef playba | |||
} | |||
#endif | |||
bool ARAPlaybackRenderer::processBlock ([[maybe_unused]] AudioBuffer<float>& buffer, | |||
[[maybe_unused]] AudioProcessor::Realtime realtime, | |||
[[maybe_unused]] const AudioPlayHead::PositionInfo& positionInfo) noexcept | |||
{ | |||
return false; | |||
} | |||
//============================================================================== | |||
bool ARAEditorRenderer::processBlock ([[maybe_unused]] AudioBuffer<float>& buffer, | |||
[[maybe_unused]] AudioProcessor::Realtime isNonRealtime, | |||
[[maybe_unused]] const AudioPlayHead::PositionInfo& positionInfo) noexcept | |||
{ | |||
return true; | |||
} | |||
//============================================================================== | |||
void ARAEditorView::doNotifySelection (const ARA::PlugIn::ViewSelection* viewSelection) noexcept | |||
{ | |||
@@ -89,4 +108,7 @@ void ARAEditorView::removeListener (Listener* l) | |||
listeners.remove (l); | |||
} | |||
void ARAEditorView::Listener::onNewSelection ([[maybe_unused]] const ARAViewSelection& viewSelection) {} | |||
void ARAEditorView::Listener::onHideRegionSequences ([[maybe_unused]] const std::vector<ARARegionSequence*>& regionSequences) {} | |||
} // namespace juce |
@@ -59,10 +59,7 @@ public: | |||
int maximumSamplesPerBlock, | |||
int numChannels, | |||
AudioProcessor::ProcessingPrecision precision, | |||
AlwaysNonRealtime alwaysNonRealtime = AlwaysNonRealtime::no) | |||
{ | |||
ignoreUnused (sampleRate, maximumSamplesPerBlock, numChannels, precision, alwaysNonRealtime); | |||
} | |||
AlwaysNonRealtime alwaysNonRealtime = AlwaysNonRealtime::no); | |||
/** Frees render resources allocated in prepareToPlay(). */ | |||
virtual void releaseResources() {} | |||
@@ -128,11 +125,7 @@ public: | |||
bool processBlock (AudioBuffer<float>& buffer, | |||
AudioProcessor::Realtime realtime, | |||
const AudioPlayHead::PositionInfo& positionInfo) noexcept override | |||
{ | |||
ignoreUnused (buffer, realtime, positionInfo); | |||
return false; | |||
} | |||
const AudioPlayHead::PositionInfo& positionInfo) noexcept override; | |||
using ARARenderer::processBlock; | |||
@@ -191,11 +184,7 @@ public: | |||
// isNonRealtime of the process context - typically preview is limited to realtime. | |||
bool processBlock (AudioBuffer<float>& buffer, | |||
AudioProcessor::Realtime isNonRealtime, | |||
const AudioPlayHead::PositionInfo& positionInfo) noexcept override | |||
{ | |||
ignoreUnused (buffer, isNonRealtime, positionInfo); | |||
return true; | |||
} | |||
const AudioPlayHead::PositionInfo& positionInfo) noexcept override; | |||
using ARARenderer::processBlock; | |||
@@ -218,7 +207,7 @@ public: | |||
// Shadowing templated getters to default to JUCE versions of the returned classes | |||
template <typename RegionSequence_t = ARARegionSequence> | |||
std::vector<RegionSequence_t*> const& getHiddenRegionSequences() const noexcept | |||
const std::vector<RegionSequence_t*>& getHiddenRegionSequences() const noexcept | |||
{ | |||
return ARA::PlugIn::EditorView::getHiddenRegionSequences<RegionSequence_t>(); | |||
} | |||
@@ -227,7 +216,7 @@ public: | |||
void doNotifySelection (const ARA::PlugIn::ViewSelection* currentSelection) noexcept override; | |||
// Base class implementation must be called if overridden | |||
void doNotifyHideRegionSequences (std::vector<ARA::PlugIn::RegionSequence*> const& regionSequences) noexcept override; | |||
void doNotifyHideRegionSequences (const std::vector<ARA::PlugIn::RegionSequence*>& regionSequences) noexcept override; | |||
/** A base class for listeners that want to know about changes to an ARAEditorView object. | |||
@@ -239,25 +228,15 @@ public: | |||
/** Destructor. */ | |||
virtual ~Listener() = default; | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_BEGIN | |||
/** Called when the editor view's selection changes. | |||
@param viewSelection The current selection state | |||
*/ | |||
virtual void onNewSelection (const ARAViewSelection& viewSelection) | |||
{ | |||
ignoreUnused (viewSelection); | |||
} | |||
virtual void onNewSelection (const ARAViewSelection& viewSelection); | |||
/** Called when region sequences are flagged as hidden in the host UI. | |||
@param regionSequences A vector containing all hidden region sequences. | |||
*/ | |||
virtual void onHideRegionSequences (std::vector<ARARegionSequence*> const& regionSequences) | |||
{ | |||
ignoreUnused (regionSequences); | |||
} | |||
ARA_DISABLE_UNREFERENCED_PARAMETER_WARNING_END | |||
virtual void onHideRegionSequences (const std::vector<ARARegionSequence*>& regionSequences); | |||
}; | |||
/** \copydoc ARAListenableModelClass::addListener */ | |||
@@ -135,12 +135,7 @@ public: | |||
void add (std::unique_ptr<Items>... items) | |||
{ | |||
parameters.reserve (parameters.size() + sizeof... (items)); | |||
// We can replace this with some nicer code once generic lambdas become available. A | |||
// sequential context like an array initialiser is required to ensure we get the correct | |||
// order from the parameter pack. | |||
int unused[] { (parameters.emplace_back (MakeContents() (std::move (items))), 0)... }; | |||
ignoreUnused (unused); | |||
(parameters.push_back (makeParameterStorage (std::move (items))), ...); | |||
} | |||
template <typename It, typename = ValidIfIterator<It>> | |||
@@ -150,7 +145,7 @@ public: | |||
std::transform (std::make_move_iterator (begin), | |||
std::make_move_iterator (end), | |||
std::back_inserter (parameters), | |||
MakeContents()); | |||
[] (auto item) { return makeParameterStorage (std::move (item)); }); | |||
} | |||
ParameterLayout (const ParameterLayout& other) = delete; | |||
@@ -191,14 +186,11 @@ public: | |||
std::unique_ptr<Contents> contents; | |||
}; | |||
struct MakeContents final | |||
template <typename Contents> | |||
static std::unique_ptr<ParameterStorage<Contents>> makeParameterStorage (std::unique_ptr<Contents> contents) | |||
{ | |||
template <typename Item> | |||
std::unique_ptr<ParameterStorageBase> operator() (std::unique_ptr<Item> item) const | |||
{ | |||
return std::unique_ptr<ParameterStorageBase> (new ParameterStorage<Item> (std::move (item))); | |||
} | |||
}; | |||
return std::make_unique<ParameterStorage<Contents>> (std::move (contents)); | |||
} | |||
void add() {} | |||
@@ -56,7 +56,7 @@ void PluginHostType::switchToHostApplication() const | |||
#endif | |||
} | |||
bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor) | |||
bool PluginHostType::isInAAXAudioSuite ([[maybe_unused]] AudioProcessor& processor) | |||
{ | |||
#if JucePlugin_Build_AAX | |||
if (PluginHostType::getPluginLoadedAs() == AudioProcessor::wrapperType_AAX | |||
@@ -66,14 +66,11 @@ bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor) | |||
} | |||
#endif | |||
ignoreUnused (processor); | |||
return false; | |||
} | |||
Image PluginHostType::getHostIcon (int size) const | |||
Image PluginHostType::getHostIcon ([[maybe_unused]] int size) const | |||
{ | |||
ignoreUnused (size); | |||
#if JucePlugin_Enable_IAA && JucePlugin_Build_Standalone && JUCE_IOS && (! JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP) | |||
if (isInterAppAudioConnected()) | |||
return juce_getIAAHostIcon (size); | |||
@@ -0,0 +1,39 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2022 - Raw Material Software Limited | |||
JUCE is an open source library subject to commercial or open-source | |||
licensing. | |||
By using JUCE, you agree to the terms of both the JUCE 7 End-User License | |||
Agreement and JUCE Privacy Policy. | |||
End User License Agreement: www.juce.com/juce-7-licence | |||
Privacy Policy: www.juce.com/juce-privacy-policy | |||
Or: You may also use this code under the terms of the GPL v3 (see | |||
www.gnu.org/licenses). | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
namespace juce | |||
{ | |||
pointer_sized_int VSTCallbackHandler::handleVstPluginCanDo ([[maybe_unused]] int32 index, | |||
[[maybe_unused]] pointer_sized_int value, | |||
[[maybe_unused]] void* ptr, | |||
[[maybe_unused]] float opt) | |||
{ | |||
return 0; | |||
} | |||
void VSTCallbackHandler::handleVstHostCallbackAvailable ([[maybe_unused]] std::function<VstHostCallbackType>&& callback) {} | |||
} // namespace juce |
@@ -46,11 +46,7 @@ struct VSTCallbackHandler | |||
virtual pointer_sized_int handleVstPluginCanDo (int32 index, | |||
pointer_sized_int value, | |||
void* ptr, | |||
float opt) | |||
{ | |||
ignoreUnused (index, value, ptr, opt); | |||
return 0; | |||
} | |||
float opt); | |||
/** This is called by the VST plug-in wrapper when it receives unhandled | |||
vendor specific calls from the host. | |||
@@ -71,10 +67,7 @@ struct VSTCallbackHandler | |||
/** This is called once by the VST plug-in wrapper after its constructor. | |||
You can use the supplied function to query the VST host. | |||
*/ | |||
virtual void handleVstHostCallbackAvailable (std::function<VstHostCallbackType>&& callback) | |||
{ | |||
ignoreUnused (callback); | |||
} | |||
virtual void handleVstHostCallbackAvailable (std::function<VstHostCallbackType>&& callback); | |||
}; | |||
} // namespace juce |
@@ -478,4 +478,9 @@ void MidiKeyboardComponent::handleNoteOff (MidiKeyboardState*, int /*midiChannel | |||
noPendingUpdates.store (false); | |||
} | |||
//============================================================================== | |||
bool MidiKeyboardComponent::mouseDownOnKey ([[maybe_unused]] int midiNoteNumber, [[maybe_unused]] const MouseEvent& e) { return true; } | |||
bool MidiKeyboardComponent::mouseDraggedToKey ([[maybe_unused]] int midiNoteNumber, [[maybe_unused]] const MouseEvent& e) { return true; } | |||
void MidiKeyboardComponent::mouseUpOnKey ([[maybe_unused]] int midiNoteNumber, [[maybe_unused]] const MouseEvent& e) {} | |||
} // namespace juce |
@@ -193,7 +193,7 @@ public: | |||
@see mouseDraggedToKey | |||
*/ | |||
virtual bool mouseDownOnKey (int midiNoteNumber, const MouseEvent& e) { ignoreUnused (midiNoteNumber, e); return true; } | |||
virtual bool mouseDownOnKey (int midiNoteNumber, const MouseEvent& e); | |||
/** Callback when the mouse is dragged from one key onto another. | |||
@@ -202,13 +202,13 @@ public: | |||
@see mouseDownOnKey | |||
*/ | |||
virtual bool mouseDraggedToKey (int midiNoteNumber, const MouseEvent& e) { ignoreUnused (midiNoteNumber, e); return true; } | |||
virtual bool mouseDraggedToKey (int midiNoteNumber, const MouseEvent& e); | |||
/** Callback when the mouse is released from a key. | |||
@see mouseDownOnKey | |||
*/ | |||
virtual void mouseUpOnKey (int midiNoteNumber, const MouseEvent& e) { ignoreUnused (midiNoteNumber, e); } | |||
virtual void mouseUpOnKey (int midiNoteNumber, const MouseEvent& e); | |||
/** Allows text to be drawn on the white notes. | |||
@@ -171,8 +171,7 @@ void AudioCDReader::refreshTrackLengths() | |||
if (toc.exists()) | |||
{ | |||
XmlDocument doc (toc); | |||
const char* error = CDReaderHelpers::getTrackOffsets (doc, trackStartSamples); | |||
ignoreUnused (error); // could be logged.. | |||
[[maybe_unused]] const char* error = CDReaderHelpers::getTrackOffsets (doc, trackStartSamples); | |||
lengthInSamples = trackStartSamples.getLast() - trackStartSamples.getFirst(); | |||
} | |||
@@ -727,32 +727,7 @@ public: | |||
@see addSorted, sort | |||
*/ | |||
template <typename ElementComparator, typename TargetValueType> | |||
int indexOfSorted (ElementComparator& comparator, TargetValueType elementToLookFor) const | |||
{ | |||
ignoreUnused (comparator); // if you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
const ScopedLockType lock (getLock()); | |||
for (int s = 0, e = values.size();;) | |||
{ | |||
if (s >= e) | |||
return -1; | |||
if (comparator.compareElements (elementToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
return -1; | |||
if (comparator.compareElements (elementToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
} | |||
int indexOfSorted (ElementComparator& comparator, TargetValueType elementToLookFor) const; | |||
//============================================================================== | |||
/** Removes an element from the array. | |||
@@ -1106,14 +1081,7 @@ public: | |||
@see addSorted, indexOfSorted, sortArray | |||
*/ | |||
template <class ElementComparator> | |||
void sort (ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems = false) | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
ignoreUnused (comparator); // if you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
sortArray (comparator, values.begin(), 0, size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
void sort (ElementComparator& comparator, bool retainOrderOfEquivalentItems = false); | |||
//============================================================================== | |||
/** Returns the CriticalSection that locks this array. | |||
@@ -1150,4 +1118,43 @@ private: | |||
} | |||
}; | |||
//============================================================================== | |||
template <typename ElementType, typename TypeOfCriticalSectionToUse, int minimumAllocatedSize> | |||
template <typename ElementComparator, typename TargetValueType> | |||
int Array<ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize>::indexOfSorted ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
TargetValueType elementToLookFor) const | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
for (int s = 0, e = values.size();;) | |||
{ | |||
if (s >= e) | |||
return -1; | |||
if (comparator.compareElements (elementToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
return -1; | |||
if (comparator.compareElements (elementToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
} | |||
template <typename ElementType, typename TypeOfCriticalSectionToUse, int minimumAllocatedSize> | |||
template <class ElementComparator> | |||
void Array<ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize>::sort ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems) | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
sortArray (comparator, values.begin(), 0, size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
} // namespace juce |
@@ -542,7 +542,7 @@ private: | |||
template <typename... Elements> | |||
void addImpl (Elements&&... toAdd) | |||
{ | |||
ignoreUnused (std::initializer_list<int> { (((void) checkSourceIsNotAMember (toAdd)), 0)... }); | |||
(checkSourceIsNotAMember (toAdd), ...); | |||
ensureAllocatedSize (numUsed + (int) sizeof... (toAdd)); | |||
addAssumingCapacityIsReady (std::forward<Elements> (toAdd)...); | |||
} | |||
@@ -550,7 +550,7 @@ private: | |||
template <typename... Elements> | |||
void addAssumingCapacityIsReady (Elements&&... toAdd) | |||
{ | |||
ignoreUnused (std::initializer_list<int> { ((void) (new (elements + numUsed++) ElementType (std::forward<Elements> (toAdd))), 0)... }); | |||
(new (elements + numUsed++) ElementType (std::forward<Elements> (toAdd)), ...); | |||
} | |||
//============================================================================== | |||
@@ -123,7 +123,7 @@ static void sortArray (ElementComparator& comparator, | |||
@param lastElement the index of the last element in the range (this is non-inclusive) | |||
*/ | |||
template <class ElementType, class ElementComparator> | |||
static int findInsertIndexInSortedArray (ElementComparator& comparator, | |||
static int findInsertIndexInSortedArray ([[maybe_unused]] ElementComparator& comparator, | |||
ElementType* const array, | |||
const ElementType newElement, | |||
int firstElement, | |||
@@ -131,9 +131,6 @@ static int findInsertIndexInSortedArray (ElementComparator& comparator, | |||
{ | |||
jassert (firstElement <= lastElement); | |||
ignoreUnused (comparator); // if you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
while (firstElement < lastElement) | |||
{ | |||
if (comparator.compareElements (newElement, array [firstElement]) == 0) | |||
@@ -46,7 +46,6 @@ namespace juce | |||
*/ | |||
template <class ObjectClass, | |||
class TypeOfCriticalSectionToUse = DummyCriticalSection> | |||
class OwnedArray | |||
{ | |||
public: | |||
@@ -531,17 +530,7 @@ public: | |||
@see add, sort, indexOfSorted | |||
*/ | |||
template <class ElementComparator> | |||
int addSorted (ElementComparator& comparator, ObjectClass* newObject) noexcept | |||
{ | |||
// If you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
ignoreUnused (comparator); | |||
const ScopedLockType lock (getLock()); | |||
auto index = findInsertIndexInSortedArray (comparator, values.begin(), newObject, 0, values.size()); | |||
insert (index, newObject); | |||
return index; | |||
} | |||
int addSorted (ElementComparator& comparator, ObjectClass* newObject) noexcept; | |||
/** Finds the index of an object in the array, assuming that the array is sorted. | |||
@@ -556,33 +545,7 @@ public: | |||
@see addSorted, sort | |||
*/ | |||
template <typename ElementComparator> | |||
int indexOfSorted (ElementComparator& comparator, const ObjectClass* objectToLookFor) const noexcept | |||
{ | |||
// If you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
ignoreUnused (comparator); | |||
const ScopedLockType lock (getLock()); | |||
int s = 0, e = values.size(); | |||
while (s < e) | |||
{ | |||
if (comparator.compareElements (objectToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
break; | |||
if (comparator.compareElements (objectToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
return -1; | |||
} | |||
int indexOfSorted (ElementComparator& comparator, const ObjectClass* objectToLookFor) const noexcept; | |||
//============================================================================== | |||
/** Removes an object from the array. | |||
@@ -818,18 +781,7 @@ public: | |||
@see sortArray, indexOfSorted | |||
*/ | |||
template <class ElementComparator> | |||
void sort (ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems = false) noexcept | |||
{ | |||
// If you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
ignoreUnused (comparator); | |||
const ScopedLockType lock (getLock()); | |||
if (size() > 1) | |||
sortArray (comparator, values.begin(), 0, size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
void sort (ElementComparator& comparator, bool retainOrderOfEquivalentItems = false) noexcept; | |||
//============================================================================== | |||
/** Returns the CriticalSection that locks this array. | |||
@@ -870,4 +822,57 @@ private: | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OwnedArray) | |||
}; | |||
//============================================================================== | |||
template <class ObjectClass, class TypeOfCriticalSectionToUse> | |||
template <class ElementComparator> | |||
int OwnedArray<ObjectClass, TypeOfCriticalSectionToUse>::addSorted ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
ObjectClass* newObject) noexcept | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
auto index = findInsertIndexInSortedArray (comparator, values.begin(), newObject, 0, values.size()); | |||
insert (index, newObject); | |||
return index; | |||
} | |||
template <class ObjectClass, class TypeOfCriticalSectionToUse> | |||
template <typename ElementComparator> | |||
int OwnedArray<ObjectClass, TypeOfCriticalSectionToUse>::indexOfSorted ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
const ObjectClass* objectToLookFor) const noexcept | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
int s = 0, e = values.size(); | |||
while (s < e) | |||
{ | |||
if (comparator.compareElements (objectToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
break; | |||
if (comparator.compareElements (objectToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
return -1; | |||
} | |||
template <class ObjectClass, class TypeOfCriticalSectionToUse> | |||
template <typename ElementComparator> | |||
void OwnedArray<ObjectClass, TypeOfCriticalSectionToUse>::sort ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems) noexcept | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
if (size() > 1) | |||
sortArray (comparator, values.begin(), 0, size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
} // namespace juce |
@@ -563,31 +563,7 @@ public: | |||
@see addSorted, sort | |||
*/ | |||
template <class ElementComparator> | |||
int indexOfSorted (ElementComparator& comparator, | |||
const ObjectClass* objectToLookFor) const noexcept | |||
{ | |||
ignoreUnused (comparator); | |||
const ScopedLockType lock (getLock()); | |||
int s = 0, e = values.size(); | |||
while (s < e) | |||
{ | |||
if (comparator.compareElements (objectToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
break; | |||
if (comparator.compareElements (objectToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
return -1; | |||
} | |||
int indexOfSorted (ElementComparator& comparator, const ObjectClass* objectToLookFor) const noexcept; | |||
//============================================================================== | |||
/** Removes an object from the array. | |||
@@ -828,16 +804,7 @@ public: | |||
@see sortArray | |||
*/ | |||
template <class ElementComparator> | |||
void sort (ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems = false) noexcept | |||
{ | |||
// If you pass in an object with a static compareElements() method, this | |||
// avoids getting warning messages about the parameter being unused | |||
ignoreUnused (comparator); | |||
const ScopedLockType lock (getLock()); | |||
sortArray (comparator, values.begin(), 0, values.size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
void sort (ElementComparator& comparator, bool retainOrderOfEquivalentItems = false) noexcept; | |||
//============================================================================== | |||
/** Reduces the amount of storage being used by the array. | |||
@@ -904,4 +871,43 @@ private: | |||
} | |||
}; | |||
//============================================================================== | |||
template <class ObjectClass, class TypeOfCriticalSectionToUse> | |||
template <class ElementComparator> | |||
int ReferenceCountedArray<ObjectClass, TypeOfCriticalSectionToUse>::indexOfSorted ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
const ObjectClass* objectToLookFor) const noexcept | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
int s = 0, e = values.size(); | |||
while (s < e) | |||
{ | |||
if (comparator.compareElements (objectToLookFor, values[s]) == 0) | |||
return s; | |||
auto halfway = (s + e) / 2; | |||
if (halfway == s) | |||
break; | |||
if (comparator.compareElements (objectToLookFor, values[halfway]) >= 0) | |||
s = halfway; | |||
else | |||
e = halfway; | |||
} | |||
return -1; | |||
} | |||
template <class ObjectClass, class TypeOfCriticalSectionToUse> | |||
template <class ElementComparator> | |||
void ReferenceCountedArray<ObjectClass, TypeOfCriticalSectionToUse>::sort ( | |||
[[maybe_unused]] ElementComparator& comparator, | |||
bool retainOrderOfEquivalentItems) noexcept | |||
{ | |||
const ScopedLockType lock (getLock()); | |||
sortArray (comparator, values.begin(), 0, values.size() - 1, retainOrderOfEquivalentItems); | |||
} | |||
} // namespace juce |
@@ -953,7 +953,7 @@ File File::createTempFile (StringRef fileNameEnding) | |||
} | |||
bool File::createSymbolicLink (const File& linkFileToCreate, | |||
const String& nativePathOfTarget, | |||
[[maybe_unused]] const String& nativePathOfTarget, | |||
bool overwriteExisting) | |||
{ | |||
if (linkFileToCreate.exists()) | |||
@@ -986,7 +986,6 @@ bool File::createSymbolicLink (const File& linkFileToCreate, | |||
nativePathOfTarget.toWideCharPointer(), | |||
targetFile.isDirectory() ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0) != FALSE; | |||
#else | |||
ignoreUnused (nativePathOfTarget); | |||
jassertfalse; // symbolic links not supported on this platform! | |||
return false; | |||
#endif | |||
@@ -1539,9 +1539,9 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
setMethod ("clone", cloneFn); | |||
} | |||
static Identifier getClassName() { static const Identifier i ("Object"); return i; } | |||
static var dump (Args a) { DBG (JSON::toString (a.thisObject)); ignoreUnused (a); return var::undefined(); } | |||
static var cloneFn (Args a) { return a.thisObject.clone(); } | |||
static Identifier getClassName() { static const Identifier i ("Object"); return i; } | |||
static var dump ([[maybe_unused]] Args a) { DBG (JSON::toString (a.thisObject)); return var::undefined(); } | |||
static var cloneFn (Args a) { return a.thisObject.clone(); } | |||
}; | |||
//============================================================================== | |||
@@ -424,9 +424,8 @@ struct Expression::Helpers | |||
String getName() const { return "-"; } | |||
TermPtr negated() { return input; } | |||
TermPtr createTermToEvaluateInput (const Scope& scope, const Term* t, double overallTarget, Term* topLevelTerm) const | |||
TermPtr createTermToEvaluateInput (const Scope& scope, [[maybe_unused]] const Term* t, double overallTarget, Term* topLevelTerm) const | |||
{ | |||
ignoreUnused (t); | |||
jassert (t == input); | |||
const Term* const dest = findDestinationFor (topLevelTerm, this); | |||
@@ -49,7 +49,7 @@ struct ContainerDeletePolicy | |||
// implementation of all methods trying to use the OwnedArray (e.g. the destructor | |||
// of the class owning it) into cpp files where they can see to the definition | |||
// of ObjectType. This should fix the error. | |||
ignoreUnused (sizeof (ObjectType)); | |||
[[maybe_unused]] constexpr auto size = sizeof (ObjectType); | |||
delete object; | |||
} | |||
@@ -101,8 +101,7 @@ struct AndroidDocumentDetail | |||
auto* env = getEnv(); | |||
LocalRef<jobjectArray> array { env->NewObjectArray (sizeof... (args), JavaString, nullptr) }; | |||
int unused[] { (env->SetObjectArrayElement (array.get(), Ix, args.get()), 0)... }; | |||
ignoreUnused (unused); | |||
(env->SetObjectArrayElement (array.get(), Ix, args.get()), ...); | |||
return array; | |||
} | |||
@@ -745,21 +744,17 @@ struct AndroidDocument::Utils | |||
}; | |||
//============================================================================== | |||
void AndroidDocumentPermission::takePersistentReadWriteAccess (const URL& url) | |||
void AndroidDocumentPermission::takePersistentReadWriteAccess ([[maybe_unused]] const URL& url) | |||
{ | |||
#if JUCE_ANDROID | |||
AndroidDocumentDetail::setPermissions (url, ContentResolver19.takePersistableUriPermission); | |||
#else | |||
ignoreUnused (url); | |||
#endif | |||
} | |||
void AndroidDocumentPermission::releasePersistentReadWriteAccess (const URL& url) | |||
void AndroidDocumentPermission::releasePersistentReadWriteAccess ([[maybe_unused]] const URL& url) | |||
{ | |||
#if JUCE_ANDROID | |||
AndroidDocumentDetail::setPermissions (url, ContentResolver19.releasePersistableUriPermission); | |||
#else | |||
ignoreUnused (url); | |||
#endif | |||
} | |||
@@ -817,7 +812,7 @@ AndroidDocument AndroidDocument::fromFile (const File& filePath) | |||
: nullptr }; | |||
} | |||
AndroidDocument AndroidDocument::fromDocument (const URL& documentUrl) | |||
AndroidDocument AndroidDocument::fromDocument ([[maybe_unused]] const URL& documentUrl) | |||
{ | |||
#if JUCE_ANDROID | |||
if (getAndroidSDKVersion() < 19) | |||
@@ -839,12 +834,11 @@ AndroidDocument AndroidDocument::fromDocument (const URL& documentUrl) | |||
return AndroidDocument { Utils::createPimplForSdk (javaUri) }; | |||
#else | |||
ignoreUnused (documentUrl); | |||
return AndroidDocument{}; | |||
#endif | |||
} | |||
AndroidDocument AndroidDocument::fromTree (const URL& treeUrl) | |||
AndroidDocument AndroidDocument::fromTree ([[maybe_unused]] const URL& treeUrl) | |||
{ | |||
#if JUCE_ANDROID | |||
if (getAndroidSDKVersion() < 21) | |||
@@ -874,7 +868,6 @@ AndroidDocument AndroidDocument::fromTree (const URL& treeUrl) | |||
return AndroidDocument { Utils::createPimplForSdk (documentUri) }; | |||
#else | |||
ignoreUnused (treeUrl); | |||
return AndroidDocument{}; | |||
#endif | |||
} | |||
@@ -397,7 +397,7 @@ bool DirectoryIterator::NativeIterator::next (String& filenameFound, | |||
//============================================================================== | |||
bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String& parameters) | |||
bool JUCE_CALLTYPE Process::openDocument (const String& fileName, [[maybe_unused]] const String& parameters) | |||
{ | |||
JUCE_AUTORELEASEPOOL | |||
{ | |||
@@ -406,8 +406,6 @@ bool JUCE_CALLTYPE Process::openDocument (const String& fileName, const String& | |||
: [NSURL URLWithString: fileNameAsNS]; | |||
#if JUCE_IOS | |||
ignoreUnused (parameters); | |||
if (@available (iOS 10.0, *)) | |||
{ | |||
[[UIApplication sharedApplication] openURL: filenameAsURL | |||
@@ -58,14 +58,12 @@ void MACAddress::findAllAddresses (Array<MACAddress>& result) | |||
} | |||
//============================================================================== | |||
bool JUCE_CALLTYPE Process::openEmailWithAttachments (const String& targetEmailAddress, | |||
const String& emailSubject, | |||
const String& bodyText, | |||
const StringArray& filesToAttach) | |||
bool JUCE_CALLTYPE Process::openEmailWithAttachments ([[maybe_unused]] const String& targetEmailAddress, | |||
[[maybe_unused]] const String& emailSubject, | |||
[[maybe_unused]] const String& bodyText, | |||
[[maybe_unused]] const StringArray& filesToAttach) | |||
{ | |||
#if JUCE_IOS | |||
ignoreUnused (targetEmailAddress, emailSubject, bodyText, filesToAttach); | |||
//xxx probably need to use MFMailComposeViewController | |||
jassertfalse; | |||
return false; | |||
@@ -282,9 +280,9 @@ public: | |||
return newRequest; | |||
} | |||
void didFailWithError (NSError* error) | |||
void didFailWithError ([[maybe_unused]] NSError* error) | |||
{ | |||
DBG (nsStringToJuce ([error description])); ignoreUnused (error); | |||
DBG (nsStringToJuce ([error description])); | |||
nsUrlErrorCode = [error code]; | |||
hasFailed = true; | |||
initialised = true; | |||
@@ -951,10 +949,8 @@ public: | |||
connection.reset(); | |||
} | |||
bool connect (WebInputStream::Listener* webInputListener, int numRetries = 0) | |||
bool connect (WebInputStream::Listener* webInputListener, [[maybe_unused]] int numRetries = 0) | |||
{ | |||
ignoreUnused (numRetries); | |||
{ | |||
const ScopedLock lock (createConnectionLock); | |||
@@ -391,8 +391,8 @@ struct ObjCClass | |||
template <typename Type> | |||
void addIvar (const char* name) | |||
{ | |||
BOOL b = class_addIvar (cls, name, sizeof (Type), (uint8_t) rint (log2 (sizeof (Type))), @encode (Type)); | |||
jassert (b); ignoreUnused (b); | |||
[[maybe_unused]] BOOL b = class_addIvar (cls, name, sizeof (Type), (uint8_t) rint (log2 (sizeof (Type))), @encode (Type)); | |||
jassert (b); | |||
} | |||
template <typename Fn> | |||
@@ -408,8 +408,8 @@ struct ObjCClass | |||
void addProtocol (Protocol* protocol) | |||
{ | |||
BOOL b = class_addProtocol (cls, protocol); | |||
jassert (b); ignoreUnused (b); | |||
[[maybe_unused]] BOOL b = class_addProtocol (cls, protocol); | |||
jassert (b); | |||
} | |||
template <typename ReturnType, typename... Params> | |||
@@ -254,8 +254,7 @@ void NamedPipe::close() | |||
pimpl->stopReadOperation = true; | |||
const char buffer[] { 0 }; | |||
const auto done = ::write (pimpl->pipeIn.get(), buffer, numElementsInArray (buffer)); | |||
ignoreUnused (done); | |||
[[maybe_unused]] const auto done = ::write (pimpl->pipeIn.get(), buffer, numElementsInArray (buffer)); | |||
} | |||
} | |||
@@ -140,10 +140,9 @@ bool File::setAsCurrentWorkingDirectory() const | |||
//============================================================================== | |||
// The unix siginterrupt function is deprecated - this does the same job. | |||
int juce_siginterrupt (int sig, int flag) | |||
int juce_siginterrupt ([[maybe_unused]] int sig, [[maybe_unused]] int flag) | |||
{ | |||
#if JUCE_WASM | |||
ignoreUnused (sig, flag); | |||
return 0; | |||
#else | |||
#if JUCE_ANDROID | |||
@@ -693,8 +692,7 @@ int File::getVolumeSerialNumber() const | |||
void juce_runSystemCommand (const String&); | |||
void juce_runSystemCommand (const String& command) | |||
{ | |||
int result = system (command.toUTF8()); | |||
ignoreUnused (result); | |||
[[maybe_unused]] int result = system (command.toUTF8()); | |||
} | |||
String juce_getOutputFromCommand (const String&); | |||
@@ -1015,7 +1013,7 @@ void JUCE_CALLTYPE Thread::yield() | |||
#define SUPPORT_AFFINITIES 1 | |||
#endif | |||
void JUCE_CALLTYPE Thread::setCurrentThreadAffinityMask (uint32 affinityMask) | |||
void JUCE_CALLTYPE Thread::setCurrentThreadAffinityMask ([[maybe_unused]] uint32 affinityMask) | |||
{ | |||
#if SUPPORT_AFFINITIES | |||
cpu_set_t affinity; | |||
@@ -1042,7 +1040,6 @@ void JUCE_CALLTYPE Thread::setCurrentThreadAffinityMask (uint32 affinityMask) | |||
// affinities aren't supported because either the appropriate header files weren't found, | |||
// or the SUPPORT_AFFINITIES macro was turned off | |||
jassertfalse; | |||
ignoreUnused (affinityMask); | |||
#endif | |||
} | |||
@@ -960,7 +960,7 @@ bool File::createShortcut (const String& description, const File& linkFileToCrea | |||
ComSmartPtr<IShellLink> shellLink; | |||
ComSmartPtr<IPersistFile> persistFile; | |||
ignoreUnused (CoInitialize (nullptr)); | |||
[[maybe_unused]] const auto result = CoInitialize (nullptr); | |||
return SUCCEEDED (shellLink.CoCreateInstance (CLSID_ShellLink)) | |||
&& SUCCEEDED (shellLink->SetPath (getFullPathName().toWideCharPointer())) | |||
@@ -457,8 +457,7 @@ public: | |||
#endif | |||
#if JUCE_WIN32_TIMER_PERIOD > 0 | |||
auto res = timeBeginPeriod (JUCE_WIN32_TIMER_PERIOD); | |||
ignoreUnused (res); | |||
[[maybe_unused]] auto res = timeBeginPeriod (JUCE_WIN32_TIMER_PERIOD); | |||
jassert (res == TIMERR_NOERROR); | |||
#endif | |||
@@ -134,7 +134,7 @@ void Thread::killThread() | |||
} | |||
} | |||
void JUCE_CALLTYPE Thread::setCurrentThreadName (const String& name) | |||
void JUCE_CALLTYPE Thread::setCurrentThreadName ([[maybe_unused]] const String& name) | |||
{ | |||
#if JUCE_DEBUG && JUCE_MSVC | |||
struct | |||
@@ -159,8 +159,6 @@ void JUCE_CALLTYPE Thread::setCurrentThreadName (const String& name) | |||
{ | |||
OutputDebugStringA ("** Warning - Encountered noncontinuable exception **\n"); | |||
} | |||
#else | |||
ignoreUnused (name); | |||
#endif | |||
} | |||
@@ -91,15 +91,16 @@ namespace SocketHelpers | |||
: setOption (handle, IPPROTO_TCP, TCP_NODELAY, (int) 1)); | |||
} | |||
static void closeSocket (std::atomic<int>& handle, CriticalSection& readLock, | |||
bool isListener, int portNumber, std::atomic<bool>& connected) noexcept | |||
static void closeSocket (std::atomic<int>& handle, | |||
[[maybe_unused]] CriticalSection& readLock, | |||
[[maybe_unused]] bool isListener, | |||
[[maybe_unused]] int portNumber, | |||
std::atomic<bool>& connected) noexcept | |||
{ | |||
const auto h = (SocketHandle) handle.load(); | |||
handle = -1; | |||
#if JUCE_WINDOWS | |||
ignoreUnused (portNumber, isListener, readLock); | |||
if (h != invalidSocket || connected) | |||
closesocket (h); | |||
@@ -771,11 +772,9 @@ bool DatagramSocket::setMulticastLoopbackEnabled (bool enable) | |||
return SocketHelpers::setOption<bool> ((SocketHandle) handle.load(), IPPROTO_IP, IP_MULTICAST_LOOP, enable); | |||
} | |||
bool DatagramSocket::setEnablePortReuse (bool enabled) | |||
bool DatagramSocket::setEnablePortReuse ([[maybe_unused]] bool enabled) | |||
{ | |||
#if JUCE_ANDROID | |||
ignoreUnused (enabled); | |||
#else | |||
#if ! JUCE_ANDROID | |||
if (handle >= 0) | |||
return SocketHelpers::setOption ((SocketHandle) handle.load(), | |||
#if JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD | |||
@@ -630,8 +630,7 @@ public: | |||
} | |||
else | |||
{ | |||
auto desc = [error localizedDescription]; | |||
ignoreUnused (desc); | |||
[[maybe_unused]] auto desc = [error localizedDescription]; | |||
jassertfalse; | |||
} | |||
} | |||
@@ -664,8 +663,7 @@ private: | |||
return urlToUse.getLocalFile(); | |||
} | |||
auto desc = [error localizedDescription]; | |||
ignoreUnused (desc); | |||
[[maybe_unused]] auto desc = [error localizedDescription]; | |||
jassertfalse; | |||
} | |||
@@ -96,4 +96,11 @@ void WebInputStream::createHeadersAndPostData (const URL& aURL, | |||
aURL.createHeadersAndPostData (headers, data, addParametersToBody); | |||
} | |||
bool WebInputStream::Listener::postDataSendProgress ([[maybe_unused]] WebInputStream& request, | |||
[[maybe_unused]] int bytesSent, | |||
[[maybe_unused]] int totalBytes) | |||
{ | |||
return true; | |||
} | |||
} // namespace juce |
@@ -107,11 +107,7 @@ class JUCE_API WebInputStream : public InputStream | |||
@returns true to continue or false to cancel the upload | |||
*/ | |||
virtual bool postDataSendProgress (WebInputStream& request, int bytesSent, int totalBytes) | |||
{ | |||
ignoreUnused (request, bytesSent, totalBytes); | |||
return true; | |||
} | |||
virtual bool postDataSendProgress (WebInputStream& request, int bytesSent, int totalBytes); | |||
}; | |||
/** Wait until the first byte is ready for reading. | |||
@@ -43,8 +43,7 @@ | |||
#if ! DOXYGEN | |||
#define JUCE_VERSION_ID \ | |||
volatile auto juceVersionId = "juce_version_" JUCE_STRINGIFY(JUCE_MAJOR_VERSION) "_" JUCE_STRINGIFY(JUCE_MINOR_VERSION) "_" JUCE_STRINGIFY(JUCE_BUILDNUMBER); \ | |||
ignoreUnused (juceVersionId); | |||
[[maybe_unused]] volatile auto juceVersionId = "juce_version_" JUCE_STRINGIFY(JUCE_MAJOR_VERSION) "_" JUCE_STRINGIFY(JUCE_MINOR_VERSION) "_" JUCE_STRINGIFY(JUCE_BUILDNUMBER); | |||
#endif | |||
//============================================================================== | |||
@@ -280,9 +280,8 @@ void BlowFish::encrypt (MemoryBlock& data) const | |||
auto size = data.getSize(); | |||
data.setSize (size + (8u - (size % 8u))); | |||
auto success = encrypt (data.getData(), size, data.getSize()); | |||
[[maybe_unused]] auto success = encrypt (data.getData(), size, data.getSize()); | |||
ignoreUnused (success); | |||
jassert (success >= 0); | |||
} | |||
@@ -39,6 +39,7 @@ | |||
#include "values/juce_ValueTreeSynchroniser.cpp" | |||
#include "values/juce_CachedValue.cpp" | |||
#include "undomanager/juce_UndoManager.cpp" | |||
#include "undomanager/juce_UndoableAction.cpp" | |||
#include "app_properties/juce_ApplicationProperties.cpp" | |||
#include "app_properties/juce_PropertiesFile.cpp" | |||
@@ -0,0 +1,31 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE library. | |||
Copyright (c) 2022 - Raw Material Software Limited | |||
JUCE is an open source library subject to commercial or open-source | |||
licensing. | |||
By using JUCE, you agree to the terms of both the JUCE 7 End-User License | |||
Agreement and JUCE Privacy Policy. | |||
End User License Agreement: www.juce.com/juce-7-licence | |||
Privacy Policy: www.juce.com/juce-privacy-policy | |||
Or: You may also use this code under the terms of the GPL v3 (see | |||
www.gnu.org/licenses). | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
namespace juce | |||
{ | |||
UndoableAction* UndoableAction::createCoalescedAction ([[maybe_unused]] UndoableAction* nextAction) { return nullptr; } | |||
} // namespace juce |
@@ -94,7 +94,7 @@ public: | |||
If it's not possible to merge the two actions, the method should return a nullptr. | |||
*/ | |||
virtual UndoableAction* createCoalescedAction (UndoableAction* nextAction) { ignoreUnused (nextAction); return nullptr; } | |||
virtual UndoableAction* createCoalescedAction (UndoableAction* nextAction); | |||
}; | |||
} // namespace juce |
@@ -70,10 +70,9 @@ namespace detail | |||
template <typename Fn> | |||
void clear (void* s) | |||
{ | |||
auto& fn = *reinterpret_cast<Fn*> (s); | |||
fn.~Fn(); | |||
// I know this looks insane, for some reason MSVC 14 sometimes thinks fn is unreferenced | |||
ignoreUnused (fn); | |||
[[maybe_unused]] auto& fn = *reinterpret_cast<Fn*> (s); | |||
fn.~Fn(); | |||
} | |||
template <typename Fn, typename Ret, typename... Args> | |||
@@ -334,8 +334,8 @@ public: | |||
bool smallCalled = false; | |||
bool largeCalled = false; | |||
SmallFn small = [&smallCalled, a = std::array<char, 8>{}] { smallCalled = true; juce::ignoreUnused (a); }; | |||
LargeFn large = [&largeCalled, a = std::array<char, 8>{}] { largeCalled = true; juce::ignoreUnused (a); }; | |||
SmallFn small = [&smallCalled, a = std::array<char, 8>{}] { smallCalled = true; ignoreUnused (a); }; | |||
LargeFn large = [&largeCalled, a = std::array<char, 8>{}] { largeCalled = true; ignoreUnused (a); }; | |||
large = std::move (small); | |||
@@ -208,10 +208,10 @@ namespace juce | |||
inline void snapToZero (long double& x) noexcept { JUCE_SNAP_TO_ZERO (x); } | |||
#endif | |||
#else | |||
inline void snapToZero (float& x) noexcept { ignoreUnused (x); } | |||
inline void snapToZero ([[maybe_unused]] float& x) noexcept {} | |||
#ifndef DOXYGEN | |||
inline void snapToZero (double& x) noexcept { ignoreUnused (x); } | |||
inline void snapToZero (long double& x) noexcept { ignoreUnused (x); } | |||
inline void snapToZero ([[maybe_unused]] double& x) noexcept {} | |||
inline void snapToZero ([[maybe_unused]] long double& x) noexcept {} | |||
#endif | |||
#endif | |||
} | |||
@@ -68,8 +68,7 @@ public: | |||
ScopedUnlock ul (lock); | |||
unsigned char x = 0xff; | |||
auto numBytes = write (getWriteHandle(), &x, 1); | |||
ignoreUnused (numBytes); | |||
[[maybe_unused]] auto numBytes = write (getWriteHandle(), &x, 1); | |||
} | |||
} | |||
@@ -97,8 +96,7 @@ private: | |||
ScopedUnlock ul (lock); | |||
unsigned char x; | |||
auto numBytes = read (fd, &x, 1); | |||
ignoreUnused (numBytes); | |||
[[maybe_unused]] auto numBytes = read (fd, &x, 1); | |||
} | |||
return queue.removeAndReturn (0); | |||
@@ -288,7 +288,7 @@ void MessageManager::broadcastMessage (const String& value) | |||
//============================================================================== | |||
void MessageManager::doPlatformSpecificInitialisation() | |||
{ | |||
ignoreUnused (OleInitialize (nullptr)); | |||
[[maybe_unused]] const auto result = OleInitialize (nullptr); | |||
InternalMessageQueue::getInstance(); | |||
} | |||
@@ -528,8 +528,8 @@ Direct2DLowLevelGraphicsContext::Direct2DLowLevelGraphicsContext (HWND hwnd_) | |||
if (pimpl->factories->d2dFactory != nullptr) | |||
{ | |||
auto hr = pimpl->factories->d2dFactory->CreateHwndRenderTarget ({}, { hwnd, size }, pimpl->renderingTarget.resetAndGetPointerAddress()); | |||
jassert (SUCCEEDED (hr)); ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = pimpl->factories->d2dFactory->CreateHwndRenderTarget ({}, { hwnd, size }, pimpl->renderingTarget.resetAndGetPointerAddress()); | |||
jassert (SUCCEEDED (hr)); | |||
hr = pimpl->renderingTarget->CreateSolidColorBrush (D2D1::ColorF::ColorF (0.0f, 0.0f, 0.0f, 1.0f), pimpl->colourBrush.resetAndGetPointerAddress()); | |||
} | |||
} | |||
@@ -200,8 +200,7 @@ namespace DirectWriteTypeLayout | |||
} | |||
ComSmartPtr<IDWriteFont> dwFont; | |||
auto hr = fontCollection.GetFontFromFontFace (glyphRun.fontFace, dwFont.resetAndGetPointerAddress()); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = fontCollection.GetFontFromFontFace (glyphRun.fontFace, dwFont.resetAndGetPointerAddress()); | |||
jassert (dwFont != nullptr); | |||
ComSmartPtr<IDWriteFontFamily> dwFontFamily; | |||
@@ -299,8 +298,7 @@ namespace DirectWriteTypeLayout | |||
fontIndex = 0; | |||
ComSmartPtr<IDWriteFontFamily> fontFamily; | |||
auto hr = fontCollection.GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress()); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = fontCollection.GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress()); | |||
ComSmartPtr<IDWriteFont> dwFont; | |||
uint32 fontFacesCount = 0; | |||
@@ -420,8 +418,7 @@ namespace DirectWriteTypeLayout | |||
return; | |||
UINT32 actualLineCount = 0; | |||
auto hr = dwTextLayout->GetLineMetrics (nullptr, 0, &actualLineCount); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = dwTextLayout->GetLineMetrics (nullptr, 0, &actualLineCount); | |||
layout.ensureStorageAllocated ((int) actualLineCount); | |||
@@ -486,7 +483,7 @@ static bool canAllTypefacesAndFontsBeUsedInLayout (const AttributedString& text) | |||
#endif | |||
bool TextLayout::createNativeLayout (const AttributedString& text) | |||
bool TextLayout::createNativeLayout ([[maybe_unused]] const AttributedString& text) | |||
{ | |||
#if JUCE_USE_DIRECTWRITE | |||
if (! canAllTypefacesAndFontsBeUsedInLayout (text)) | |||
@@ -506,8 +503,6 @@ bool TextLayout::createNativeLayout (const AttributedString& text) | |||
return true; | |||
} | |||
#else | |||
ignoreUnused (text); | |||
#endif | |||
return false; | |||
@@ -35,8 +35,7 @@ namespace | |||
uint32 index = 0; | |||
BOOL exists = false; | |||
auto hr = names->FindLocaleName (L"en-us", &index, &exists); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = names->FindLocaleName (L"en-us", &index, &exists); | |||
if (! exists) | |||
index = 0; | |||
@@ -152,8 +151,7 @@ public: | |||
jassert (fontCollection != nullptr); | |||
uint32 fontIndex = 0; | |||
auto hr = fontCollection->FindFamilyName (font.getTypefaceName().toWideCharPointer(), &fontIndex, &fontFound); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = fontCollection->FindFamilyName (font.getTypefaceName().toWideCharPointer(), &fontIndex, &fontFound); | |||
if (! fontFound) | |||
fontIndex = 0; | |||
@@ -234,8 +234,7 @@ StringArray Font::findAllTypefaceStyles (const String& family) | |||
{ | |||
BOOL fontFound = false; | |||
uint32 fontIndex = 0; | |||
auto hr = factories->systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound); | |||
ignoreUnused (hr); | |||
[[maybe_unused]] auto hr = factories->systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound); | |||
if (! fontFound) | |||
fontIndex = 0; | |||
@@ -150,15 +150,13 @@ JUCE_IMPLEMENT_SINGLETON (ContentSharer) | |||
ContentSharer::ContentSharer() {} | |||
ContentSharer::~ContentSharer() { clearSingletonInstance(); } | |||
void ContentSharer::shareFiles (const Array<URL>& files, | |||
void ContentSharer::shareFiles ([[maybe_unused]] const Array<URL>& files, | |||
std::function<void (bool, const String&)> callbackToUse) | |||
{ | |||
#if JUCE_CONTENT_SHARING | |||
startNewShare (callbackToUse); | |||
pimpl->shareFiles (files); | |||
#else | |||
ignoreUnused (files); | |||
// Content sharing is not available on this platform! | |||
jassertfalse; | |||
@@ -188,15 +186,13 @@ void ContentSharer::startNewShare (std::function<void (bool, const String&)> cal | |||
} | |||
#endif | |||
void ContentSharer::shareText (const String& text, | |||
void ContentSharer::shareText ([[maybe_unused]] const String& text, | |||
std::function<void (bool, const String&)> callbackToUse) | |||
{ | |||
#if JUCE_CONTENT_SHARING | |||
startNewShare (callbackToUse); | |||
pimpl->shareText (text); | |||
#else | |||
ignoreUnused (text); | |||
// Content sharing is not available on this platform! | |||
jassertfalse; | |||
@@ -205,16 +201,14 @@ void ContentSharer::shareText (const String& text, | |||
#endif | |||
} | |||
void ContentSharer::shareImages (const Array<Image>& images, | |||
void ContentSharer::shareImages ([[maybe_unused]] const Array<Image>& images, | |||
std::function<void (bool, const String&)> callbackToUse, | |||
ImageFileFormat* imageFileFormatToUse) | |||
[[maybe_unused]] ImageFileFormat* imageFileFormatToUse) | |||
{ | |||
#if JUCE_CONTENT_SHARING | |||
startNewShare (callbackToUse); | |||
prepareImagesThread.reset (new PrepareImagesThread (*this, images, imageFileFormatToUse)); | |||
#else | |||
ignoreUnused (images, imageFileFormatToUse); | |||
// Content sharing is not available on this platform! | |||
jassertfalse; | |||
@@ -238,15 +232,13 @@ void ContentSharer::filesToSharePrepared() | |||
} | |||
#endif | |||
void ContentSharer::shareData (const MemoryBlock& mb, | |||
void ContentSharer::shareData ([[maybe_unused]] const MemoryBlock& mb, | |||
std::function<void (bool, const String&)> callbackToUse) | |||
{ | |||
#if JUCE_CONTENT_SHARING | |||
startNewShare (callbackToUse); | |||
prepareDataThread.reset (new PrepareDataThread (*this, mb)); | |||
#else | |||
ignoreUnused (mb); | |||
if (callbackToUse) | |||
callbackToUse (false, "Content sharing not available on this platform!"); | |||
#endif | |||
@@ -440,7 +440,7 @@ void FileBrowserComponent::fileDoubleClicked (const File& f) | |||
void FileBrowserComponent::browserRootChanged (const File&) {} | |||
bool FileBrowserComponent::keyPressed (const KeyPress& key) | |||
bool FileBrowserComponent::keyPressed ([[maybe_unused]] const KeyPress& key) | |||
{ | |||
#if JUCE_LINUX || JUCE_BSD || JUCE_WINDOWS | |||
if (key.getModifiers().isCommandDown() | |||
@@ -452,7 +452,6 @@ bool FileBrowserComponent::keyPressed (const KeyPress& key) | |||
} | |||
#endif | |||
ignoreUnused (key); | |||
return false; | |||
} | |||
@@ -242,10 +242,8 @@ void SidePanel::lookAndFeelChanged() | |||
titleLabel.setJustificationType (lf.getSidePanelTitleJustification (*this)); | |||
} | |||
void SidePanel::componentMovedOrResized (Component& component, bool wasMoved, bool wasResized) | |||
void SidePanel::componentMovedOrResized (Component& component, [[maybe_unused]] bool wasMoved, bool wasResized) | |||
{ | |||
ignoreUnused (wasMoved); | |||
if (wasResized && (&component == parent)) | |||
setBounds (calculateBoundsInParent (component)); | |||
} | |||
@@ -464,10 +464,9 @@ void LookAndFeel_V3::drawLinearSliderBackground (Graphics& g, int x, int y, int | |||
g.strokePath (indent, PathStrokeType (0.5f)); | |||
} | |||
void LookAndFeel_V3::drawPopupMenuBackground (Graphics& g, int width, int height) | |||
void LookAndFeel_V3::drawPopupMenuBackground (Graphics& g, [[maybe_unused]] int width, [[maybe_unused]] int height) | |||
{ | |||
g.fillAll (findColour (PopupMenu::backgroundColourId)); | |||
ignoreUnused (width, height); | |||
#if ! JUCE_MAC | |||
g.setColour (findColour (PopupMenu::textColourId).withAlpha (0.6f)); | |||
@@ -353,12 +353,10 @@ void LookAndFeel_V4::drawToggleButton (Graphics& g, ToggleButton& button, | |||
void LookAndFeel_V4::drawTickBox (Graphics& g, Component& component, | |||
float x, float y, float w, float h, | |||
const bool ticked, | |||
const bool isEnabled, | |||
const bool shouldDrawButtonAsHighlighted, | |||
const bool shouldDrawButtonAsDown) | |||
[[maybe_unused]] const bool isEnabled, | |||
[[maybe_unused]] const bool shouldDrawButtonAsHighlighted, | |||
[[maybe_unused]] const bool shouldDrawButtonAsDown) | |||
{ | |||
ignoreUnused (isEnabled, shouldDrawButtonAsHighlighted, shouldDrawButtonAsDown); | |||
Rectangle<float> tickBounds (x, y, w, h); | |||
g.setColour (component.findColour (ToggleButton::tickDisabledColourId)); | |||
@@ -619,10 +617,8 @@ int LookAndFeel_V4::getDefaultScrollbarWidth() | |||
} | |||
void LookAndFeel_V4::drawScrollbar (Graphics& g, ScrollBar& scrollbar, int x, int y, int width, int height, | |||
bool isScrollbarVertical, int thumbStartPosition, int thumbSize, bool isMouseOver, bool isMouseDown) | |||
bool isScrollbarVertical, int thumbStartPosition, int thumbSize, bool isMouseOver, [[maybe_unused]] bool isMouseDown) | |||
{ | |||
ignoreUnused (isMouseDown); | |||
Rectangle<int> thumbBounds; | |||
if (isScrollbarVertical) | |||
@@ -1253,10 +1249,8 @@ void LookAndFeel_V4::drawPropertyComponentBackground (Graphics& g, int width, in | |||
g.fillRect (0, 0, width, height - 1); | |||
} | |||
void LookAndFeel_V4::drawPropertyComponentLabel (Graphics& g, int width, int height, PropertyComponent& component) | |||
void LookAndFeel_V4::drawPropertyComponentLabel (Graphics& g, [[maybe_unused]] int width, int height, PropertyComponent& component) | |||
{ | |||
ignoreUnused (width); | |||
auto indent = getPropertyComponentIndent (component); | |||
g.setColour (component.findColour (PropertyComponent::labelTextColourId) | |||
@@ -2098,7 +2098,7 @@ struct PopupMenuCompletionCallback : public ModalComponentManager::Callback | |||
int PopupMenu::showWithOptionalCallback (const Options& options, | |||
ModalComponentManager::Callback* userCallback, | |||
bool canBeModal) | |||
[[maybe_unused]] bool canBeModal) | |||
{ | |||
std::unique_ptr<ModalComponentManager::Callback> userCallbackDeleter (userCallback); | |||
std::unique_ptr<PopupMenuCompletionCallback> callback (new PopupMenuCompletionCallback()); | |||
@@ -2120,7 +2120,6 @@ int PopupMenu::showWithOptionalCallback (const Options& options, | |||
if (userCallback == nullptr && canBeModal) | |||
return window->runModalLoop(); | |||
#else | |||
ignoreUnused (canBeModal); | |||
jassert (! (userCallback == nullptr && canBeModal)); | |||
#endif | |||
} | |||
@@ -62,10 +62,8 @@ static Rectangle<float> getLogoArea (Rectangle<float> parentRect) | |||
} | |||
//============================================================================== | |||
JUCESplashScreen::JUCESplashScreen (Component& parent) | |||
JUCESplashScreen::JUCESplashScreen ([[maybe_unused]] Component& parent) | |||
{ | |||
ignoreUnused (parent); | |||
#if JUCE_DISPLAY_SPLASH_SCREEN | |||
if (splashDisplayTime == 0 | |||
|| Time::getMillisecondCounter() < splashDisplayTime + (uint32) millisecondsToDisplaySplash) | |||