@@ -50,7 +50,7 @@ public: | |||
Image image (Image::ARGB, 200, 200, true); | |||
Graphics g (image); | |||
ScopedPointer<Drawable> svgDrawable = Drawable::createFromImageData (iconData, (size_t) iconDataSize); | |||
ScopedPointer<Drawable> svgDrawable (Drawable::createFromImageData (iconData, (size_t) iconDataSize)); | |||
svgDrawable->drawWithin (g, image.getBounds().toFloat(), RectanglePlacement::fillDestination, 1.0f); | |||
@@ -519,8 +519,8 @@ public: | |||
conv->convertSamples (inPlace ? reversed : converted, original, numSamples); | |||
// ..and back again.. | |||
conv = new AudioData::ConverterInstance <AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::Const>, | |||
AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::NonConst>>(); | |||
conv.reset (new AudioData::ConverterInstance <AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::Const>, | |||
AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::NonConst>>()); | |||
if (! inPlace) | |||
zeromem (reversed, sizeof (reversed)); | |||
@@ -532,7 +532,7 @@ public: | |||
AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::Const> d2 (reversed); | |||
const int errorMargin = 2 * AudioData::Pointer<F1, E1, AudioData::NonInterleaved, AudioData::Const>::get32BitResolution() | |||
+ AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::Const>::get32BitResolution(); | |||
+ AudioData::Pointer<F2, E2, AudioData::NonInterleaved, AudioData::Const>::get32BitResolution(); | |||
for (int i = 0; i < numSamples; ++i) | |||
{ | |||
@@ -2133,7 +2133,7 @@ private: | |||
void noteReleased (MPENote finishedNote) override | |||
{ | |||
noteReleasedCallCounter++; | |||
lastNoteFinished = new MPENote (finishedNote); | |||
lastNoteFinished.reset (new MPENote (finishedNote)); | |||
} | |||
}; | |||
@@ -71,7 +71,7 @@ void MixerAudioSource::removeInputSource (AudioSource* const input) | |||
return; | |||
if (inputsToDelete [index]) | |||
toDelete = input; | |||
toDelete.reset (input); | |||
inputsToDelete.shiftBits (-1, index); | |||
inputs.remove (index); | |||
@@ -89,14 +89,8 @@ private: | |||
//============================================================================== | |||
AudioDeviceManager::AudioDeviceManager() | |||
: numInputChansNeeded (0), | |||
numOutputChansNeeded (2), | |||
listNeedsScanning (true), | |||
testSoundPosition (0), | |||
cpuUsageMs (0), | |||
timeToCpuScale (0) | |||
{ | |||
callbackHandler = new CallbackHandler (*this); | |||
callbackHandler.reset (new CallbackHandler (*this)); | |||
} | |||
AudioDeviceManager::~AudioDeviceManager() | |||
@@ -113,12 +107,12 @@ void AudioDeviceManager::createDeviceTypesIfNeeded() | |||
OwnedArray<AudioIODeviceType> types; | |||
createAudioDeviceTypes (types); | |||
for (int i = 0; i < types.size(); ++i) | |||
addAudioDeviceType (types.getUnchecked(i)); | |||
for (auto* t : types) | |||
addAudioDeviceType (t); | |||
types.clear (false); | |||
if (AudioIODeviceType* first = availableDeviceTypes.getFirst()) | |||
if (auto* first = availableDeviceTypes.getFirst()) | |||
currentDeviceType = first->getTypeName(); | |||
} | |||
} | |||
@@ -171,7 +165,7 @@ void AudioDeviceManager::addAudioDeviceType (AudioIODeviceType* newDeviceType) | |||
availableDeviceTypes.add (newDeviceType); | |||
lastDeviceTypeConfigs.add (new AudioDeviceSetup()); | |||
newDeviceType->addListener (callbackHandler); | |||
newDeviceType->addListener (callbackHandler.get()); | |||
} | |||
} | |||
@@ -254,7 +248,7 @@ String AudioDeviceManager::initialiseFromXML (const XmlElement& xml, | |||
const String& preferredDefaultDeviceName, | |||
const AudioDeviceSetup* preferredSetupOptions) | |||
{ | |||
lastExplicitSettings = new XmlElement (xml); | |||
lastExplicitSettings.reset (new XmlElement (xml)); | |||
String error; | |||
AudioDeviceSetup setup; | |||
@@ -299,10 +293,8 @@ String AudioDeviceManager::initialiseFromXML (const XmlElement& xml, | |||
forEachXmlChildElementWithTagName (xml, c, "MIDIINPUT") | |||
midiInsFromXml.add (c->getStringAttribute ("name")); | |||
const StringArray allMidiIns (MidiInput::getDevices()); | |||
for (int i = allMidiIns.size(); --i >= 0;) | |||
setMidiInputEnabled (allMidiIns[i], midiInsFromXml.contains (allMidiIns[i])); | |||
for (auto& m : MidiInput::getDevices()) | |||
setMidiInputEnabled (m, midiInsFromXml.contains (m)); | |||
if (error.isNotEmpty() && selectDefaultDeviceOnFailure) | |||
error = initialise (numInputChansNeeded, numOutputChansNeeded, | |||
@@ -319,12 +311,12 @@ String AudioDeviceManager::initialiseWithDefaultDevices (int numInputChannelsNee | |||
lastExplicitSettings.reset(); | |||
return initialise (numInputChannelsNeeded, numOutputChannelsNeeded, | |||
nullptr, false, String(), nullptr); | |||
nullptr, false, {}, nullptr); | |||
} | |||
void AudioDeviceManager::insertDefaultDeviceNames (AudioDeviceSetup& setup) const | |||
{ | |||
if (AudioIODeviceType* type = getCurrentDeviceTypeObject()) | |||
if (auto* type = getCurrentDeviceTypeObject()) | |||
{ | |||
if (setup.outputDeviceName.isEmpty()) | |||
setup.outputDeviceName = type->getDeviceNames (false) [type->getDefaultDeviceIndex (false)]; | |||
@@ -336,7 +328,7 @@ void AudioDeviceManager::insertDefaultDeviceNames (AudioDeviceSetup& setup) cons | |||
XmlElement* AudioDeviceManager::createStateXml() const | |||
{ | |||
return lastExplicitSettings.createCopy(); | |||
return createCopyIfNotNull (lastExplicitSettings.get()); | |||
} | |||
//============================================================================== | |||
@@ -473,7 +465,7 @@ String AudioDeviceManager::setAudioDeviceSetup (const AudioDeviceSetup& newSetup | |||
if (newInputDeviceName.isNotEmpty() && ! deviceListContains (type, true, newInputDeviceName)) | |||
return "No such device: " + newInputDeviceName; | |||
currentAudioDevice = type->createDevice (newOutputDeviceName, newInputDeviceName); | |||
currentAudioDevice.reset (type->createDevice (newOutputDeviceName, newInputDeviceName)); | |||
if (currentAudioDevice == nullptr) | |||
error = "Can't open the audio device!\n\n" | |||
@@ -521,7 +513,7 @@ String AudioDeviceManager::setAudioDeviceSetup (const AudioDeviceSetup& newSetup | |||
{ | |||
currentDeviceType = currentAudioDevice->getTypeName(); | |||
currentAudioDevice->start (callbackHandler); | |||
currentAudioDevice->start (callbackHandler.get()); | |||
currentSetup.sampleRate = currentAudioDevice->getCurrentSampleRate(); | |||
currentSetup.bufferSize = currentAudioDevice->getCurrentBufferSizeSamples(); | |||
@@ -618,7 +610,7 @@ void AudioDeviceManager::restartLastAudioDevice() | |||
void AudioDeviceManager::updateXml() | |||
{ | |||
lastExplicitSettings = new XmlElement ("DEVICESETUP"); | |||
lastExplicitSettings.reset (new XmlElement ("DEVICESETUP")); | |||
lastExplicitSettings->setAttribute ("deviceType", currentDeviceType); | |||
lastExplicitSettings->setAttribute ("audioOutputDeviceName", currentSetup.outputDeviceName); | |||
@@ -668,7 +660,7 @@ void AudioDeviceManager::addAudioCallback (AudioIODeviceCallback* newCallback) | |||
} | |||
if (currentAudioDevice != nullptr && newCallback != nullptr) | |||
newCallback->audioDeviceAboutToStart (currentAudioDevice); | |||
newCallback->audioDeviceAboutToStart (currentAudioDevice.get()); | |||
const ScopedLock sl (audioCallbackLock); | |||
callbacks.add (newCallback); | |||
@@ -814,11 +806,11 @@ void AudioDeviceManager::setMidiInputEnabled (const String& name, const bool ena | |||
{ | |||
if (enabled) | |||
{ | |||
const int index = MidiInput::getDevices().indexOf (name); | |||
auto index = MidiInput::getDevices().indexOf (name); | |||
if (index >= 0) | |||
{ | |||
if (MidiInput* const midiIn = MidiInput::openDevice (index, callbackHandler)) | |||
if (auto* midiIn = MidiInput::openDevice (index, callbackHandler.get())) | |||
{ | |||
enabledMidiInputs.add (midiIn); | |||
midiIn->start(); | |||
@@ -839,8 +831,8 @@ void AudioDeviceManager::setMidiInputEnabled (const String& name, const bool ena | |||
bool AudioDeviceManager::isMidiInputEnabled (const String& name) const | |||
{ | |||
for (int i = enabledMidiInputs.size(); --i >= 0;) | |||
if (enabledMidiInputs[i]->getName() == name) | |||
for (auto* mi : enabledMidiInputs) | |||
if (mi->getName() == name) | |||
return true; | |||
return false; | |||
@@ -865,7 +857,7 @@ void AudioDeviceManager::removeMidiInputCallback (const String& name, MidiInputC | |||
{ | |||
for (int i = midiCallbacks.size(); --i >= 0;) | |||
{ | |||
const MidiCallbackInfo& mc = midiCallbacks.getReference(i); | |||
auto& mc = midiCallbacks.getReference(i); | |||
if (mc.callback == callbackToRemove && mc.deviceName == name) | |||
{ | |||
@@ -881,13 +873,9 @@ void AudioDeviceManager::handleIncomingMidiMessageInt (MidiInput* source, const | |||
{ | |||
const ScopedLock sl (midiCallbackLock); | |||
for (int i = 0; i < midiCallbacks.size(); ++i) | |||
{ | |||
const MidiCallbackInfo& mc = midiCallbacks.getReference(i); | |||
for (auto& mc : midiCallbacks) | |||
if (mc.deviceName.isEmpty() || mc.deviceName == source->getName()) | |||
mc.callback->handleIncomingMidiMessage (source, message); | |||
} | |||
} | |||
} | |||
@@ -911,11 +899,11 @@ void AudioDeviceManager::setDefaultMidiOutput (const String& deviceName) | |||
defaultMidiOutputName = deviceName; | |||
if (deviceName.isNotEmpty()) | |||
defaultMidiOutput = MidiOutput::openDevice (MidiOutput::getDevices().indexOf (deviceName)); | |||
defaultMidiOutput.reset (MidiOutput::openDevice (MidiOutput::getDevices().indexOf (deviceName))); | |||
if (currentAudioDevice != nullptr) | |||
for (int i = oldCallbacks.size(); --i >= 0;) | |||
oldCallbacks.getUnchecked(i)->audioDeviceAboutToStart (currentAudioDevice); | |||
for (auto* c : oldCallbacks) | |||
c->audioDeviceAboutToStart (currentAudioDevice.get()); | |||
{ | |||
const ScopedLock sl (audioCallbackLock); | |||
@@ -982,7 +970,7 @@ void AudioDeviceManager::playTestSound() | |||
{ | |||
const ScopedLock sl (audioCallbackLock); | |||
oldSound = testSound; | |||
std::swap (oldSound, testSound); | |||
} | |||
} | |||
@@ -1007,7 +995,7 @@ void AudioDeviceManager::playTestSound() | |||
newSound->applyGainRamp (0, soundLength - soundLength / 4, soundLength / 4, 1.0f, 0.0f); | |||
const ScopedLock sl (audioCallbackLock); | |||
testSound = newSound; | |||
testSound.reset (newSound); | |||
} | |||
} | |||
@@ -234,7 +234,7 @@ public: | |||
/** Returns the currently-active audio device. */ | |||
AudioIODevice* getCurrentAudioDevice() const noexcept { return currentAudioDevice; } | |||
AudioIODevice* getCurrentAudioDevice() const noexcept { return currentAudioDevice.get(); } | |||
/** Returns the type of audio device currently in use. | |||
@see setCurrentAudioDeviceType | |||
@@ -372,7 +372,7 @@ public: | |||
If no device has been selected, or the device can't be opened, this will return nullptr. | |||
@see getDefaultMidiOutputName | |||
*/ | |||
MidiOutput* getDefaultMidiOutput() const noexcept { return defaultMidiOutput; } | |||
MidiOutput* getDefaultMidiOutput() const noexcept { return defaultMidiOutput.get(); } | |||
/** Returns a list of the types of device supported. */ | |||
const OwnedArray<AudioIODeviceType>& getAvailableDeviceTypes(); | |||
@@ -453,11 +453,11 @@ private: | |||
AudioDeviceSetup currentSetup; | |||
ScopedPointer<AudioIODevice> currentAudioDevice; | |||
Array<AudioIODeviceCallback*> callbacks; | |||
int numInputChansNeeded, numOutputChansNeeded; | |||
int numInputChansNeeded = 0, numOutputChansNeeded = 2; | |||
String currentDeviceType; | |||
BigInteger inputChannels, outputChannels; | |||
ScopedPointer<XmlElement> lastExplicitSettings; | |||
mutable bool listNeedsScanning; | |||
mutable bool listNeedsScanning = true; | |||
AudioBuffer<float> tempBuffer; | |||
struct MidiCallbackInfo | |||
@@ -475,10 +475,10 @@ private: | |||
CriticalSection audioCallbackLock, midiCallbackLock; | |||
ScopedPointer<AudioBuffer<float>> testSound; | |||
int testSoundPosition; | |||
int testSoundPosition = 0; | |||
double cpuUsageMs, timeToCpuScale, msPerBlock; | |||
int xruns; | |||
double cpuUsageMs = 0, timeToCpuScale = 0, msPerBlock = 0; | |||
int xruns = 0; | |||
struct LevelMeter | |||
{ | |||
@@ -965,14 +965,14 @@ public: | |||
} | |||
jassert (device != nullptr); | |||
internal = device; | |||
internal.reset (device); | |||
AudioObjectPropertyAddress pa; | |||
pa.mSelector = kAudioObjectPropertySelectorWildcard; | |||
pa.mScope = kAudioObjectPropertyScopeWildcard; | |||
pa.mElement = kAudioObjectPropertyElementWildcard; | |||
AudioObjectAddPropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | |||
AudioObjectAddPropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal.get()); | |||
} | |||
~CoreAudioIODevice() | |||
@@ -984,7 +984,7 @@ public: | |||
pa.mScope = kAudioObjectPropertyScopeWildcard; | |||
pa.mElement = kAudioObjectPropertyElementWildcard; | |||
AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal); | |||
AudioObjectRemovePropertyListener (kAudioObjectSystemObject, &pa, hardwareListenerProc, internal.get()); | |||
} | |||
StringArray getOutputChannelNames() override { return internal->outChanNames; } | |||
@@ -1226,7 +1226,7 @@ public: | |||
Array<AudioIODevice*> devs; | |||
for (auto* d : devices) | |||
devs.add (d->device); | |||
devs.add (d->device.get()); | |||
return devs; | |||
} | |||
@@ -2160,10 +2160,10 @@ public: | |||
ScopedPointer<CoreAudioIODevice> in, out; | |||
if (inputDeviceID != 0) | |||
in = new CoreAudioIODevice (*this, inputDeviceName, inputDeviceID, inputIndex, 0, -1); | |||
in.reset (new CoreAudioIODevice (*this, inputDeviceName, inputDeviceID, inputIndex, 0, -1)); | |||
if (outputDeviceID != 0) | |||
out = new CoreAudioIODevice (*this, outputDeviceName, 0, -1, outputDeviceID, outputIndex); | |||
out.reset (new CoreAudioIODevice (*this, outputDeviceName, 0, -1, outputDeviceID, outputIndex)); | |||
if (in == nullptr) return out.release(); | |||
if (out == nullptr) return in.release(); | |||
@@ -511,15 +511,15 @@ MidiInput* MidiInput::openDevice (int index, MidiInputCallback* callback) | |||
MIDIPortRef port; | |||
ScopedPointer<MidiPortAndCallback> mpc (new MidiPortAndCallback (*callback)); | |||
if (CHECK_ERROR (MIDIInputPortCreate (client, name.cfString, midiInputProc, mpc, &port))) | |||
if (CHECK_ERROR (MIDIInputPortCreate (client, name.cfString, midiInputProc, mpc.get(), &port))) | |||
{ | |||
if (CHECK_ERROR (MIDIPortConnectSource (port, endPoint, nullptr))) | |||
{ | |||
mpc->portAndEndpoint = new MidiPortAndEndpoint (port, endPoint); | |||
mpc->portAndEndpoint.reset (new MidiPortAndEndpoint (port, endPoint)); | |||
newInput = new MidiInput (getDevices() [index]); | |||
mpc->input = newInput; | |||
newInput->internal = mpc; | |||
newInput->internal = mpc.get(); | |||
const ScopedLock sl (callbackLock); | |||
activeCallbacks.add (mpc.release()); | |||
@@ -553,15 +553,15 @@ MidiInput* MidiInput::createNewDevice (const String& deviceName, MidiInputCallba | |||
ScopedCFString name; | |||
name.cfString = deviceName.toCFString(); | |||
if (CHECK_ERROR (MIDIDestinationCreate (client, name.cfString, midiInputProc, mpc, &endPoint))) | |||
if (CHECK_ERROR (MIDIDestinationCreate (client, name.cfString, midiInputProc, mpc.get(), &endPoint))) | |||
{ | |||
CoreMidiHelpers::setUniqueIdForMidiPort (endPoint, deviceName, true); | |||
mpc->portAndEndpoint = new MidiPortAndEndpoint (0, endPoint); | |||
mpc->portAndEndpoint.reset (new MidiPortAndEndpoint (0, endPoint)); | |||
mi = new MidiInput (deviceName); | |||
mpc->input = mi; | |||
mi->internal = mpc; | |||
mi->internal = mpc.get(); | |||
const ScopedLock sl (callbackLock); | |||
activeCallbacks.add (mpc.release()); | |||
@@ -486,7 +486,9 @@ int OggVorbisAudioFormat::estimateOggFileQuality (const File& source) | |||
{ | |||
if (auto* in = source.createInputStream()) | |||
{ | |||
if (ScopedPointer<AudioFormatReader> r = createReaderFor (in, true)) | |||
ScopedPointer<AudioFormatReader> r (createReaderFor (in, true)); | |||
if (r != nullptr) | |||
{ | |||
auto lengthSecs = r->lengthInSamples / r->sampleRate; | |||
auto approxBitsPerSecond = (int) (source.getSize() * 8 / lengthSecs); | |||
@@ -1738,13 +1738,19 @@ namespace WavFileHelpers | |||
TemporaryFile tempFile (file); | |||
WavAudioFormat wav; | |||
if (ScopedPointer<AudioFormatReader> reader = wav.createReaderFor (file.createInputStream(), true)) | |||
ScopedPointer<AudioFormatReader> reader (wav.createReaderFor (file.createInputStream(), true)); | |||
if (reader != nullptr) | |||
{ | |||
if (ScopedPointer<OutputStream> outStream = tempFile.getFile().createOutputStream()) | |||
ScopedPointer<OutputStream> outStream (tempFile.getFile().createOutputStream()); | |||
if (outStream != nullptr) | |||
{ | |||
if (ScopedPointer<AudioFormatWriter> writer = wav.createWriterFor (outStream, reader->sampleRate, | |||
reader->numChannels, (int) reader->bitsPerSample, | |||
metadata, 0)) | |||
ScopedPointer<AudioFormatWriter> writer (wav.createWriterFor (outStream.get(), reader->sampleRate, | |||
reader->numChannels, (int) reader->bitsPerSample, | |||
metadata, 0)); | |||
if (writer != nullptr) | |||
{ | |||
outStream.release(); | |||
@@ -1765,7 +1771,9 @@ bool WavAudioFormat::replaceMetadataInFile (const File& wavFile, const StringPai | |||
{ | |||
using namespace WavFileHelpers; | |||
if (ScopedPointer<WavAudioFormatReader> reader = static_cast<WavAudioFormatReader*> (createReaderFor (wavFile.createInputStream(), true))) | |||
ScopedPointer<WavAudioFormatReader> reader (static_cast<WavAudioFormatReader*> (createReaderFor (wavFile.createInputStream(), true))); | |||
if (reader != nullptr) | |||
{ | |||
auto bwavPos = reader->bwavChunkStart; | |||
auto bwavSize = reader->bwavSize; | |||
@@ -146,7 +146,7 @@ AudioFormatReader* AudioFormatManager::createReaderFor (InputStream* audioFileSt | |||
for (auto* af : knownFormats) | |||
{ | |||
if (auto* r = af->createReaderFor (in, false)) | |||
if (auto* r = af->createReaderFor (in.get(), false)) | |||
{ | |||
in.release(); | |||
return r; | |||
@@ -394,7 +394,7 @@ bool MemoryMappedAudioFormatReader::mapSectionOfFile (Range<int64> samplesToMap) | |||
const Range<int64> fileRange (sampleToFilePos (samplesToMap.getStart()), | |||
sampleToFilePos (samplesToMap.getEnd())); | |||
map = new MemoryMappedFile (file, fileRange, MemoryMappedFile::readOnly); | |||
map.reset (new MemoryMappedFile (file, fileRange, MemoryMappedFile::readOnly)); | |||
if (map->getData() == nullptr) | |||
map.reset(); | |||
@@ -44,9 +44,9 @@ SamplerSound::SamplerSound (const String& soundName, | |||
length = jmin ((int) source.lengthInSamples, | |||
(int) (maxSampleLengthSeconds * sourceSampleRate)); | |||
data = new AudioBuffer<float> (jmin (2, (int) source.numChannels), length + 4); | |||
data.reset (new AudioBuffer<float> (jmin (2, (int) source.numChannels), length + 4)); | |||
source.read (data, 0, length + 4, 0, true, true); | |||
source.read (data.get(), 0, length + 4, 0, true, true); | |||
attackSamples = roundToInt (attackTimeSecs * sourceSampleRate); | |||
releaseSamples = roundToInt (releaseTimeSecs * sourceSampleRate); | |||
@@ -79,7 +79,7 @@ public: | |||
/** Returns the audio sample data. | |||
This could return nullptr if there was a problem loading the data. | |||
*/ | |||
AudioBuffer<float>* getAudioData() const noexcept { return data; } | |||
AudioBuffer<float>* getAudioData() const noexcept { return data.get(); } | |||
//============================================================================== | |||
@@ -125,7 +125,7 @@ AudioPluginInstance* AudioPluginFormat::createInstanceFromDescription (const Plu | |||
createPluginInstanceAsync (desc, initialSampleRate, initialBufferSize, eventSignaler.release()); | |||
else | |||
createPluginInstance (desc, initialSampleRate, initialBufferSize, | |||
eventSignaler, EventSignaler::staticCompletionCallback); | |||
eventSignaler.get(), EventSignaler::staticCompletionCallback); | |||
waitForCreation.wait(); | |||
@@ -2223,7 +2223,7 @@ AudioProcessorEditor* AudioUnitPluginInstance::createEditor() | |||
ScopedPointer<AudioProcessorEditor> w (new AudioUnitPluginWindowCocoa (*this, false)); | |||
if (! static_cast<AudioUnitPluginWindowCocoa*> (w.get())->isValid()) | |||
w = nullptr; | |||
w.reset(); | |||
#if JUCE_SUPPORT_CARBON | |||
if (w == nullptr) | |||
@@ -2236,7 +2236,7 @@ AudioProcessorEditor* AudioUnitPluginInstance::createEditor() | |||
#endif | |||
if (w == nullptr) | |||
w = new AudioUnitPluginWindowCocoa (*this, true); // use AUGenericView as a fallback | |||
w.reset (new AudioUnitPluginWindowCocoa (*this, true)); // use AUGenericView as a fallback | |||
return w.release(); | |||
} | |||
@@ -897,14 +897,14 @@ struct DescriptionFactory | |||
if (pf2.loadFrom (factory)) | |||
{ | |||
info2 = new PClassInfo2(); | |||
pf2->getClassInfo2 (i, info2); | |||
info2.reset (new PClassInfo2()); | |||
pf2->getClassInfo2 (i, info2.get()); | |||
} | |||
if (pf3.loadFrom (factory)) | |||
{ | |||
infoW = new PClassInfoW(); | |||
pf3->getClassInfoUnicode (i, infoW); | |||
infoW.reset (new PClassInfoW()); | |||
pf3->getClassInfoUnicode (i, infoW.get()); | |||
} | |||
} | |||
@@ -923,7 +923,7 @@ struct DescriptionFactory | |||
auto numOutputs = getNumSingleDirectionChannelsFor (component, false, true); | |||
createPluginDescription (desc, file, companyName, name, | |||
info, info2, infoW, numInputs, numOutputs); | |||
info, info2.get(), infoW.get(), numInputs, numOutputs); | |||
component->terminate(); | |||
} | |||
@@ -1246,7 +1246,7 @@ private: | |||
//============================================================================== | |||
bool open (const File& f, const PluginDescription& description) | |||
{ | |||
dllHandle = new DLLHandle (f.getFullPathName()); | |||
dllHandle.reset (new DLLHandle (f.getFullPathName())); | |||
ComSmartPtr<IPluginFactory> pluginFactory (dllHandle->getPluginFactory()); | |||
@@ -1572,23 +1572,23 @@ struct VST3ComponentHolder | |||
if (pf2.loadFrom (factory)) | |||
{ | |||
info2 = new PClassInfo2(); | |||
pf2->getClassInfo2 (classIdx, info2); | |||
info2.reset (new PClassInfo2()); | |||
pf2->getClassInfo2 (classIdx, info2.get()); | |||
} | |||
else | |||
{ | |||
info2 = nullptr; | |||
info2.reset(); | |||
} | |||
if (pf3.loadFrom (factory)) | |||
{ | |||
pf3->setHostContext (host->getFUnknown()); | |||
infoW = new PClassInfoW(); | |||
pf3->getClassInfoUnicode (classIdx, infoW); | |||
infoW.reset (new PClassInfoW()); | |||
pf3->getClassInfoUnicode (classIdx, infoW.get()); | |||
} | |||
else | |||
{ | |||
infoW = nullptr; | |||
infoW.reset(); | |||
} | |||
Vst::BusInfo bus; | |||
@@ -1606,7 +1606,7 @@ struct VST3ComponentHolder | |||
createPluginDescription (description, module->file, | |||
factoryInfo.vendor, module->name, | |||
info, info2, infoW, | |||
info, info2.get(), infoW.get(), | |||
totalNumInputChannels, | |||
totalNumOutputChannels); | |||
@@ -2784,14 +2784,14 @@ void VST3PluginFormat::createPluginInstance (const PluginDescription& descriptio | |||
if (const VST3Classes::VST3ModuleHandle::Ptr module = VST3Classes::VST3ModuleHandle::findOrCreateModule (file, description)) | |||
{ | |||
ScopedPointer<VST3Classes::VST3ComponentHolder> holder = new VST3Classes::VST3ComponentHolder (module); | |||
ScopedPointer<VST3Classes::VST3ComponentHolder> holder (new VST3Classes::VST3ComponentHolder (module)); | |||
if (holder->initialise()) | |||
{ | |||
result = new VST3Classes::VST3PluginInstance (holder.release()); | |||
result.reset (new VST3Classes::VST3PluginInstance (holder.release())); | |||
if (! result->initialise()) | |||
result = nullptr; | |||
result.reset(); | |||
} | |||
} | |||
@@ -447,7 +447,7 @@ struct ModuleHandle : public ReferenceCountedObject | |||
.findChildFiles (vstXmlFiles, File::findFiles, false, "*.vstxml"); | |||
if (vstXmlFiles.size() > 0) | |||
vstXml = XmlDocument::parse (vstXmlFiles.getReference(0)); | |||
vstXml.reset (XmlDocument::parse (vstXmlFiles.getReference(0))); | |||
} | |||
} | |||
@@ -2077,10 +2077,16 @@ public: | |||
#if JUCE_SUPPORT_CARBON | |||
if (! plug.usesCocoaNSView) | |||
addAndMakeVisible (carbonWrapper = new CarbonWrapperComponent (*this)); | |||
{ | |||
carbonWrapper.reset (new CarbonWrapperComponent (*this)); | |||
addAndMakeVisible (carbonWrapper.get()); | |||
} | |||
else | |||
#endif | |||
addAndMakeVisible (cocoaWrapper = new AutoResizingNSViewComponentWithParent()); | |||
{ | |||
cocoaWrapper.reset (new AutoResizingNSViewComponentWithParent()); | |||
addAndMakeVisible (cocoaWrapper.get()); | |||
} | |||
#endif | |||
activeVSTWindows.add (this); | |||
@@ -2096,9 +2102,9 @@ public: | |||
#if JUCE_MAC | |||
#if JUCE_SUPPORT_CARBON | |||
carbonWrapper = nullptr; | |||
carbonWrapper.reset(); | |||
#endif | |||
cocoaWrapper = nullptr; | |||
cocoaWrapper.reset(); | |||
#elif JUCE_LINUX | |||
display = XWindowSystem::getInstance()->displayUnref(); | |||
#endif | |||
@@ -2791,10 +2797,10 @@ void VSTPluginFormat::createPluginInstance (const PluginDescription& desc, | |||
{ | |||
shellUIDToCreate = desc.uid; | |||
result = VSTPluginInstance::create (module, sampleRate, blockSize); | |||
result.reset (VSTPluginInstance::create (module, sampleRate, blockSize)); | |||
if (result != nullptr && ! result->initialiseEffect (sampleRate, blockSize)) | |||
result = nullptr; | |||
result.reset(); | |||
} | |||
previousWorkingDirectory.setAsCurrentWorkingDirectory(); | |||
@@ -2954,9 +2960,13 @@ AudioPluginInstance* VSTPluginFormat::createCustomVSTFromMainCall (void* entryPo | |||
ModuleHandle::Ptr module = new ModuleHandle (File(), (MainCall) entryPointFunction); | |||
if (module->open()) | |||
if (ScopedPointer<VSTPluginInstance> result = VSTPluginInstance::create (module, initialSampleRate, initialBufferSize)) | |||
{ | |||
ScopedPointer<VSTPluginInstance> result (VSTPluginInstance::create (module, initialSampleRate, initialBufferSize)); | |||
if (result != nullptr) | |||
if (result->initialiseEffect (initialSampleRate, initialBufferSize)) | |||
return result.release(); | |||
} | |||
return nullptr; | |||
} | |||
@@ -2966,7 +2976,7 @@ void VSTPluginFormat::setExtraFunctions (AudioPluginInstance* plugin, ExtraFunct | |||
ScopedPointer<ExtraFunctions> f (functions); | |||
if (auto* vst = dynamic_cast<VSTPluginInstance*> (plugin)) | |||
vst->extraFunctions = f; | |||
std::swap (vst->extraFunctions, f); | |||
} | |||
AudioPluginInstance* VSTPluginFormat::getPluginInstanceFromVstEffectInterface (void* aEffect) | |||
@@ -46,7 +46,7 @@ AudioProcessorEditor::~AudioProcessorEditor() | |||
// if this fails, then the wrapper hasn't called editorBeingDeleted() on the | |||
// filter for some reason.. | |||
jassert (processor.getActiveEditor() != this); | |||
removeComponentListener (resizeListener); | |||
removeComponentListener (resizeListener.get()); | |||
} | |||
void AudioProcessorEditor::setControlHighlight (ParameterControlHighlightInfo) {} | |||
@@ -77,7 +77,8 @@ void AudioProcessorEditor::initialise() | |||
resizable = false; | |||
attachConstrainer (&defaultConstrainer); | |||
addComponentListener (resizeListener = new AudioProcessorEditorListener (*this)); | |||
resizeListener.reset (new AudioProcessorEditorListener (*this)); | |||
addComponentListener (resizeListener.get()); | |||
} | |||
//============================================================================== | |||
@@ -108,7 +109,8 @@ void AudioProcessorEditor::setResizable (const bool shouldBeResizable, const boo | |||
{ | |||
if (shouldHaveCornerResizer) | |||
{ | |||
Component::addChildComponent (resizableCorner = new ResizableCornerComponent (this, constrainer)); | |||
resizableCorner.reset (new ResizableCornerComponent (this, constrainer)); | |||
Component::addChildComponent (resizableCorner.get()); | |||
resizableCorner->setAlwaysOnTop (true); | |||
} | |||
else | |||
@@ -1144,8 +1144,8 @@ void AudioProcessorGraph::clearRenderingSequence() | |||
{ | |||
const ScopedLock sl (getCallbackLock()); | |||
renderSequenceFloat.swapWith (oldSequenceF); | |||
renderSequenceDouble.swapWith (oldSequenceD); | |||
std::swap (renderSequenceFloat, oldSequenceF); | |||
std::swap (renderSequenceDouble, oldSequenceD); | |||
} | |||
} | |||
@@ -1187,8 +1187,8 @@ void AudioProcessorGraph::buildRenderingSequence() | |||
const ScopedLock sl (getCallbackLock()); | |||
renderSequenceFloat.swapWith (newSequenceF); | |||
renderSequenceDouble.swapWith (newSequenceD); | |||
std::swap (renderSequenceFloat, newSequenceF); | |||
std::swap (renderSequenceDouble, newSequenceD); | |||
} | |||
void AudioProcessorGraph::handleAsyncUpdate() | |||
@@ -96,7 +96,7 @@ public: | |||
const NodeID nodeID; | |||
/** The actual processor object that this node represents. */ | |||
AudioProcessor* getProcessor() const noexcept { return processor; } | |||
AudioProcessor* getProcessor() const noexcept { return processor.get(); } | |||
/** A set of user-definable properties that are associated with this node. | |||
@@ -115,7 +115,7 @@ bool KnownPluginList::isListingUpToDate (const String& fileOrIdentifier, | |||
void KnownPluginList::setCustomScanner (CustomScanner* newScanner) | |||
{ | |||
scanner = newScanner; | |||
scanner.reset (newScanner); | |||
} | |||
bool KnownPluginList::scanAndAddFile (const String& fileOrIdentifier, | |||
@@ -425,7 +425,7 @@ struct PluginTreeUtils | |||
{ | |||
current->folder = lastType; | |||
tree.subFolders.add (current.release()); | |||
current = new KnownPluginList::PluginTree(); | |||
current.reset (new KnownPluginList::PluginTree()); | |||
} | |||
lastType = thisType; | |||
@@ -142,7 +142,7 @@ PluginListComponent::PluginListComponent (AudioPluginFormatManager& manager, Kno | |||
allowAsync (allowPluginsWhichRequireAsynchronousInstantiation), | |||
numThreads (allowAsync ? 1 : 0) | |||
{ | |||
tableModel = new TableModel (*this, listToEdit); | |||
tableModel.reset (new TableModel (*this, listToEdit)); | |||
TableHeaderComponent& header = table.getHeader(); | |||
@@ -154,7 +154,7 @@ PluginListComponent::PluginListComponent (AudioPluginFormatManager& manager, Kno | |||
table.setHeaderHeight (22); | |||
table.setRowHeight (20); | |||
table.setModel (tableModel); | |||
table.setModel (tableModel.get()); | |||
table.setMultipleSelectionEnabled (true); | |||
addAndMakeVisible (table); | |||
@@ -228,8 +228,8 @@ void PluginListComponent::removeSelectedPlugins() | |||
void PluginListComponent::setTableModel (TableListBoxModel* model) | |||
{ | |||
table.setModel (nullptr); | |||
tableModel = model; | |||
table.setModel (tableModel); | |||
tableModel.reset (model); | |||
table.setModel (tableModel.get()); | |||
table.getHeader().reSortTable(); | |||
table.updateContent(); | |||
@@ -479,8 +479,8 @@ private: | |||
{ | |||
pathChooserWindow.setVisible (false); | |||
scanner = new PluginDirectoryScanner (owner.list, formatToScan, pathList.getPath(), | |||
true, owner.deadMansPedalFile, allowAsync); | |||
scanner.reset (new PluginDirectoryScanner (owner.list, formatToScan, pathList.getPath(), | |||
true, owner.deadMansPedalFile, allowAsync)); | |||
if (propertiesToUse != nullptr) | |||
{ | |||
@@ -494,7 +494,7 @@ private: | |||
if (numThreads > 0) | |||
{ | |||
pool = new ThreadPool (numThreads); | |||
pool.reset (new ThreadPool (numThreads)); | |||
for (int i = numThreads; --i >= 0;) | |||
pool->addJob (new ScanJob (*this), true); | |||
@@ -560,9 +560,9 @@ private: | |||
void PluginListComponent::scanFor (AudioPluginFormat& format) | |||
{ | |||
currentScanner = new Scanner (*this, format, propertiesToUse, allowAsync, numThreads, | |||
dialogTitle.isNotEmpty() ? dialogTitle : TRANS("Scanning for plug-ins..."), | |||
dialogText.isNotEmpty() ? dialogText : TRANS("Searching for all possible plug-in files...")); | |||
currentScanner.reset (new Scanner (*this, format, propertiesToUse, allowAsync, numThreads, | |||
dialogTitle.isNotEmpty() ? dialogTitle : TRANS("Scanning for plug-ins..."), | |||
dialogText.isNotEmpty() ? dialogText : TRANS("Searching for all possible plug-in files..."))); | |||
} | |||
bool PluginListComponent::isScanning() const noexcept | |||
@@ -574,8 +574,8 @@ void PluginListComponent::scanFinished (const StringArray& failedFiles) | |||
{ | |||
StringArray shortNames; | |||
for (int i = 0; i < failedFiles.size(); ++i) | |||
shortNames.add (File::createFileWithoutCheckingPath (failedFiles[i]).getFileName()); | |||
for (auto& f : failedFiles) | |||
shortNames.add (File::createFileWithoutCheckingPath (f).getFileName()); | |||
currentScanner.reset(); // mustn't delete this before using the failed files array | |||
@@ -207,7 +207,8 @@ public: | |||
{ | |||
if (hideAdvancedOptionsWithButton) | |||
{ | |||
addAndMakeVisible (showAdvancedSettingsButton = new TextButton (TRANS("Show advanced settings..."))); | |||
showAdvancedSettingsButton.reset (new TextButton (TRANS("Show advanced settings..."))); | |||
addAndMakeVisible (showAdvancedSettingsButton.get()); | |||
showAdvancedSettingsButton->onClick = [this] { showAdvanced(); }; | |||
} | |||
@@ -353,8 +354,8 @@ public: | |||
error = setup.manager->setAudioDeviceSetup (config, true); | |||
showCorrectDeviceName (inputDeviceDropDown, true); | |||
showCorrectDeviceName (outputDeviceDropDown, false); | |||
showCorrectDeviceName (inputDeviceDropDown.get(), true); | |||
showCorrectDeviceName (outputDeviceDropDown.get(), false); | |||
updateControlPanelButton(); | |||
resized(); | |||
@@ -433,12 +434,12 @@ public: | |||
{ | |||
if (outputChanList == nullptr) | |||
{ | |||
addAndMakeVisible (outputChanList | |||
= new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioOutputType, | |||
TRANS ("(no audio output channels found)"))); | |||
outputChanLabel = new Label ({}, TRANS("Active output channels:")); | |||
outputChanList.reset (new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioOutputType, | |||
TRANS ("(no audio output channels found)"))); | |||
addAndMakeVisible (outputChanList.get()); | |||
outputChanLabel.reset (new Label ({}, TRANS("Active output channels:"))); | |||
outputChanLabel->setJustificationType (Justification::centredRight); | |||
outputChanLabel->attachToComponent (outputChanList, true); | |||
outputChanLabel->attachToComponent (outputChanList.get(), true); | |||
} | |||
outputChanList->refresh(); | |||
@@ -454,12 +455,12 @@ public: | |||
{ | |||
if (inputChanList == nullptr) | |||
{ | |||
addAndMakeVisible (inputChanList | |||
= new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioInputType, | |||
TRANS("(no audio input channels found)"))); | |||
inputChanLabel = new Label ({}, TRANS("Active input channels:")); | |||
inputChanList.reset (new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioInputType, | |||
TRANS("(no audio input channels found)"))); | |||
addAndMakeVisible (inputChanList.get()); | |||
inputChanLabel.reset (new Label ({}, TRANS("Active input channels:"))); | |||
inputChanLabel->setJustificationType (Justification::centredRight); | |||
inputChanLabel->attachToComponent (inputChanList, true); | |||
inputChanLabel->attachToComponent (inputChanList.get(), true); | |||
} | |||
inputChanList->refresh(); | |||
@@ -564,8 +565,9 @@ private: | |||
if (currentDevice != nullptr && currentDevice->hasControlPanel()) | |||
{ | |||
addAndMakeVisible (showUIButton = new TextButton (TRANS ("Control Panel"), | |||
TRANS ("Opens the device's own control panel"))); | |||
showUIButton.reset (new TextButton (TRANS ("Control Panel"), | |||
TRANS ("Opens the device's own control panel"))); | |||
addAndMakeVisible (showUIButton.get()); | |||
showUIButton->onClick = [this] { showDeviceUIPanel(); }; | |||
} | |||
@@ -580,9 +582,9 @@ private: | |||
{ | |||
if (resetDeviceButton == nullptr) | |||
{ | |||
addAndMakeVisible (resetDeviceButton = new TextButton (TRANS ("Reset Device"), | |||
TRANS ("Resets the audio interface - sometimes needed after changing a device's properties in its custom control panel"))); | |||
resetDeviceButton.reset (new TextButton (TRANS ("Reset Device"), | |||
TRANS ("Resets the audio interface - sometimes needed after changing a device's properties in its custom control panel"))); | |||
addAndMakeVisible (resetDeviceButton.get()); | |||
resetDeviceButton->onClick = [this] { resetDevice(); }; | |||
resized(); | |||
} | |||
@@ -600,19 +602,19 @@ private: | |||
{ | |||
if (outputDeviceDropDown == nullptr) | |||
{ | |||
outputDeviceDropDown = new ComboBox(); | |||
outputDeviceDropDown.reset (new ComboBox()); | |||
outputDeviceDropDown->onChange = [this] { updateConfig (true, false, false, false); }; | |||
addAndMakeVisible (outputDeviceDropDown); | |||
addAndMakeVisible (outputDeviceDropDown.get()); | |||
outputDeviceLabel = new Label ({}, type.hasSeparateInputsAndOutputs() ? TRANS("Output:") | |||
: TRANS("Device:")); | |||
outputDeviceLabel->attachToComponent (outputDeviceDropDown, true); | |||
outputDeviceLabel.reset (new Label ({}, type.hasSeparateInputsAndOutputs() ? TRANS("Output:") | |||
: TRANS("Device:"))); | |||
outputDeviceLabel->attachToComponent (outputDeviceDropDown.get(), true); | |||
if (setup.maxNumOutputChannels > 0) | |||
{ | |||
addAndMakeVisible (testButton = new TextButton (TRANS("Test"), | |||
TRANS("Plays a test tone"))); | |||
testButton.reset (new TextButton (TRANS("Test"), TRANS("Plays a test tone"))); | |||
addAndMakeVisible (testButton.get()); | |||
testButton->onClick = [this] { playTestSound(); }; | |||
} | |||
} | |||
@@ -620,7 +622,7 @@ private: | |||
addNamesToDeviceBox (*outputDeviceDropDown, false); | |||
} | |||
showCorrectDeviceName (outputDeviceDropDown, false); | |||
showCorrectDeviceName (outputDeviceDropDown.get(), false); | |||
} | |||
void updateInputsComboBox() | |||
@@ -629,31 +631,32 @@ private: | |||
{ | |||
if (inputDeviceDropDown == nullptr) | |||
{ | |||
inputDeviceDropDown = new ComboBox(); | |||
inputDeviceDropDown.reset (new ComboBox()); | |||
inputDeviceDropDown->onChange = [this] { updateConfig (false, true, false, false); }; | |||
addAndMakeVisible (inputDeviceDropDown); | |||
addAndMakeVisible (inputDeviceDropDown.get()); | |||
inputDeviceLabel = new Label ({}, TRANS("Input:")); | |||
inputDeviceLabel->attachToComponent (inputDeviceDropDown, true); | |||
inputDeviceLabel.reset (new Label ({}, TRANS("Input:"))); | |||
inputDeviceLabel->attachToComponent (inputDeviceDropDown.get(), true); | |||
addAndMakeVisible (inputLevelMeter | |||
= new SimpleDeviceManagerInputLevelMeter (*setup.manager)); | |||
inputLevelMeter.reset (new SimpleDeviceManagerInputLevelMeter (*setup.manager)); | |||
addAndMakeVisible (inputLevelMeter.get()); | |||
} | |||
addNamesToDeviceBox (*inputDeviceDropDown, true); | |||
} | |||
showCorrectDeviceName (inputDeviceDropDown, true); | |||
showCorrectDeviceName (inputDeviceDropDown.get(), true); | |||
} | |||
void updateSampleRateComboBox (AudioIODevice* currentDevice) | |||
{ | |||
if (sampleRateDropDown == nullptr) | |||
{ | |||
addAndMakeVisible (sampleRateDropDown = new ComboBox()); | |||
sampleRateDropDown.reset (new ComboBox()); | |||
addAndMakeVisible (sampleRateDropDown.get()); | |||
sampleRateLabel = new Label ({}, TRANS("Sample rate:")); | |||
sampleRateLabel->attachToComponent (sampleRateDropDown, true); | |||
sampleRateLabel.reset (new Label ({}, TRANS("Sample rate:"))); | |||
sampleRateLabel->attachToComponent (sampleRateDropDown.get(), true); | |||
} | |||
else | |||
{ | |||
@@ -675,10 +678,11 @@ private: | |||
{ | |||
if (bufferSizeDropDown == nullptr) | |||
{ | |||
addAndMakeVisible (bufferSizeDropDown = new ComboBox()); | |||
bufferSizeDropDown.reset (new ComboBox()); | |||
addAndMakeVisible (bufferSizeDropDown.get()); | |||
bufferSizeLabel = new Label ({}, TRANS("Audio buffer size:")); | |||
bufferSizeLabel->attachToComponent (bufferSizeDropDown, true); | |||
bufferSizeLabel.reset (new Label ({}, TRANS("Audio buffer size:"))); | |||
bufferSizeLabel->attachToComponent (bufferSizeDropDown.get(), true); | |||
} | |||
else | |||
{ | |||
@@ -975,33 +979,33 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||
if (types.size() > 1) | |||
{ | |||
deviceTypeDropDown = new ComboBox(); | |||
deviceTypeDropDown.reset (new ComboBox()); | |||
for (int i = 0; i < types.size(); ++i) | |||
deviceTypeDropDown->addItem (types.getUnchecked(i)->getTypeName(), i + 1); | |||
addAndMakeVisible (deviceTypeDropDown); | |||
addAndMakeVisible (deviceTypeDropDown.get()); | |||
deviceTypeDropDown->onChange = [this] { updateDeviceType(); }; | |||
deviceTypeDropDownLabel = new Label ({}, TRANS("Audio device type:")); | |||
deviceTypeDropDownLabel.reset (new Label ({}, TRANS("Audio device type:"))); | |||
deviceTypeDropDownLabel->setJustificationType (Justification::centredRight); | |||
deviceTypeDropDownLabel->attachToComponent (deviceTypeDropDown, true); | |||
deviceTypeDropDownLabel->attachToComponent (deviceTypeDropDown.get(), true); | |||
} | |||
if (showMidiInputOptions) | |||
{ | |||
addAndMakeVisible (midiInputsList | |||
= new MidiInputSelectorComponentListBox (deviceManager, | |||
midiInputsList.reset (new MidiInputSelectorComponentListBox (deviceManager, | |||
"(" + TRANS("No MIDI inputs available") + ")")); | |||
addAndMakeVisible (midiInputsList.get()); | |||
midiInputsLabel = new Label ({}, TRANS ("Active MIDI inputs:")); | |||
midiInputsLabel.reset (new Label ({}, TRANS ("Active MIDI inputs:"))); | |||
midiInputsLabel->setJustificationType (Justification::topRight); | |||
midiInputsLabel->attachToComponent (midiInputsList, true); | |||
midiInputsLabel->attachToComponent (midiInputsList.get(), true); | |||
if (BluetoothMidiDevicePairingDialogue::isAvailable()) | |||
{ | |||
addAndMakeVisible (bluetoothButton = new TextButton (TRANS("Bluetooth MIDI"), | |||
TRANS("Scan for bluetooth MIDI devices"))); | |||
bluetoothButton.reset (new TextButton (TRANS("Bluetooth MIDI"), TRANS("Scan for bluetooth MIDI devices"))); | |||
addAndMakeVisible (bluetoothButton.get()); | |||
bluetoothButton->onClick = [this] { handleBluetoothButton(); }; | |||
} | |||
} | |||
@@ -1014,11 +1018,12 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||
if (showMidiOutputSelector) | |||
{ | |||
addAndMakeVisible (midiOutputSelector = new ComboBox()); | |||
midiOutputSelector.reset (new ComboBox()); | |||
addAndMakeVisible (midiOutputSelector.get()); | |||
midiOutputSelector->onChange = [this] { updateMidiOutput(); }; | |||
midiOutputLabel = new Label ("lm", TRANS("MIDI Output:")); | |||
midiOutputLabel->attachToComponent (midiOutputSelector, true); | |||
midiOutputLabel.reset (new Label ("lm", TRANS("MIDI Output:"))); | |||
midiOutputLabel->attachToComponent (midiOutputSelector.get(), true); | |||
} | |||
else | |||
{ | |||
@@ -1139,7 +1144,7 @@ void AudioDeviceSelectorComponent::updateAllControls() | |||
details.useStereoPairs = showChannelsAsStereoPairs; | |||
auto* sp = new AudioDeviceSettingsPanel (*type, details, hideAdvancedOptionsWithButton); | |||
audioDeviceSettingsComp = sp; | |||
audioDeviceSettingsComp.reset (sp); | |||
addAndMakeVisible (sp); | |||
sp->updateAllControls(); | |||
} | |||
@@ -1186,7 +1191,7 @@ void AudioDeviceSelectorComponent::handleBluetoothButton() | |||
ListBox* AudioDeviceSelectorComponent::getMidiInputSelectorListBox() const noexcept | |||
{ | |||
return midiInputsList; | |||
return midiInputsList.get(); | |||
} | |||
} // namespace juce |
@@ -219,8 +219,8 @@ private: | |||
void createReader() | |||
{ | |||
if (reader == nullptr && source != nullptr) | |||
if (InputStream* audioFileStream = source->createInputStream()) | |||
reader = owner.formatManagerToUse.createReaderFor (audioFileStream); | |||
if (auto* audioFileStream = source->createInputStream()) | |||
reader.reset (owner.formatManagerToUse.createReaderFor (audioFileStream)); | |||
} | |||
bool readNextBlock() | |||
@@ -648,7 +648,7 @@ bool AudioThumbnail::setDataSource (LevelDataSource* newSource) | |||
if (cache.loadThumb (*this, newSource->hashCode) && isFullyLoaded()) | |||
{ | |||
source = newSource; // (make sure this isn't done before loadThumb is called) | |||
source.reset (newSource); // (make sure this isn't done before loadThumb is called) | |||
source->lengthInSamples = totalSamples; | |||
source->sampleRate = sampleRate; | |||
@@ -657,7 +657,7 @@ bool AudioThumbnail::setDataSource (LevelDataSource* newSource) | |||
} | |||
else | |||
{ | |||
source = newSource; // (make sure this isn't done before loadThumb is called) | |||
source.reset (newSource); // (make sure this isn't done before loadThumb is called) | |||
const ScopedLock sl (lock); | |||
source->initialise (numSamplesFinished); | |||
@@ -807,7 +807,7 @@ void AudioThumbnail::drawChannel (Graphics& g, const Rectangle<int>& area, doubl | |||
const ScopedLock sl (lock); | |||
window->drawChannel (g, area, startTime, endTime, channelNum, verticalZoomFactor, | |||
sampleRate, numChannels, samplesPerThumbSample, source, channels); | |||
sampleRate, numChannels, samplesPerThumbSample, source.get(), channels); | |||
} | |||
void AudioThumbnail::drawChannels (Graphics& g, const Rectangle<int>& area, double startTimeSeconds, | |||
@@ -68,8 +68,11 @@ private: | |||
MidiKeyboardComponent::MidiKeyboardComponent (MidiKeyboardState& s, Orientation o) | |||
: state (s), orientation (o) | |||
{ | |||
addChildComponent (scrollDown = new UpDownButton (*this, -1)); | |||
addChildComponent (scrollUp = new UpDownButton (*this, 1)); | |||
scrollDown.reset (new UpDownButton (*this, -1)); | |||
scrollUp .reset (new UpDownButton (*this, 1)); | |||
addChildComponent (scrollDown.get()); | |||
addChildComponent (scrollUp.get()); | |||
// initialise with a default set of qwerty key-mappings.. | |||
int note = 0; | |||
@@ -411,7 +411,7 @@ public: | |||
{ | |||
toDelete.reset (data.elements[indexToChange]); | |||
if (toDelete == newObject) | |||
if (toDelete.get() == newObject) | |||
toDelete.release(); | |||
} | |||
@@ -389,7 +389,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
struct DotOperator : public Expression | |||
{ | |||
DotOperator (const CodeLocation& l, ExpPtr& p, const Identifier& c) noexcept : Expression (l), parent (p), child (c) {} | |||
DotOperator (const CodeLocation& l, ExpPtr& p, const Identifier& c) noexcept : Expression (l), parent (p.release()), child (c) {} | |||
var getResult (const Scope& s) const override | |||
{ | |||
@@ -478,7 +478,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
struct BinaryOperatorBase : public Expression | |||
{ | |||
BinaryOperatorBase (const CodeLocation& l, ExpPtr& a, ExpPtr& b, TokenType op) noexcept | |||
: Expression (l), lhs (a), rhs (b), operation (op) {} | |||
: Expression (l), lhs (a.release()), rhs (b.release()), operation (op) {} | |||
ExpPtr lhs, rhs; | |||
TokenType operation; | |||
@@ -674,7 +674,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
struct Assignment : public Expression | |||
{ | |||
Assignment (const CodeLocation& l, ExpPtr& dest, ExpPtr& source) noexcept : Expression (l), target (dest), newValue (source) {} | |||
Assignment (const CodeLocation& l, ExpPtr& dest, ExpPtr& source) noexcept : Expression (l), target (dest.release()), newValue (source.release()) {} | |||
var getResult (const Scope& s) const override | |||
{ | |||
@@ -1080,7 +1080,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
} | |||
match (TokenTypes::closeParen); | |||
fo.body = parseBlock(); | |||
fo.body.reset (parseBlock()); | |||
} | |||
Expression* parseExpression() | |||
@@ -1270,7 +1270,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
Expression* parseFunctionCall (FunctionCall* call, ExpPtr& function) | |||
{ | |||
ScopedPointer<FunctionCall> s (call); | |||
s->object = function; | |||
s->object.reset (function.release()); | |||
match (TokenTypes::openParen); | |||
while (currentType != TokenTypes::closeParen) | |||
@@ -1296,7 +1296,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
if (matchIf (TokenTypes::openBracket)) | |||
{ | |||
ScopedPointer<ArraySubscript> s (new ArraySubscript (location)); | |||
s->object = input; | |||
s->object.reset (input.release()); | |||
s->index.reset (parseExpression()); | |||
match (TokenTypes::closeBracket); | |||
return parseSuffixes (s.release()); | |||
@@ -1505,7 +1505,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
Expression* parseTernaryOperator (ExpPtr& condition) | |||
{ | |||
ScopedPointer<ConditionalOp> e (new ConditionalOp (location)); | |||
e->condition = condition; | |||
e->condition.reset (condition.release()); | |||
e->trueBranch.reset (parseExpression()); | |||
match (TokenTypes::colon); | |||
e->falseBranch.reset (parseExpression()); | |||
@@ -1023,22 +1023,22 @@ Expression Expression::adjustedToGiveNewResult (const double targetValue, const | |||
{ | |||
ScopedPointer<Term> newTerm (term->clone()); | |||
Helpers::Constant* termToAdjust = Helpers::findTermToAdjust (newTerm, true); | |||
Helpers::Constant* termToAdjust = Helpers::findTermToAdjust (newTerm.get(), true); | |||
if (termToAdjust == nullptr) | |||
termToAdjust = Helpers::findTermToAdjust (newTerm, false); | |||
termToAdjust = Helpers::findTermToAdjust (newTerm.get(), false); | |||
if (termToAdjust == nullptr) | |||
{ | |||
newTerm = new Helpers::Add (newTerm.release(), new Helpers::Constant (0, false)); | |||
termToAdjust = Helpers::findTermToAdjust (newTerm, false); | |||
newTerm.reset (new Helpers::Add (newTerm.release(), new Helpers::Constant (0, false))); | |||
termToAdjust = Helpers::findTermToAdjust (newTerm.get(), false); | |||
} | |||
jassert (termToAdjust != nullptr); | |||
if (const Term* parent = Helpers::findDestinationFor (newTerm, termToAdjust)) | |||
if (const Term* parent = Helpers::findDestinationFor (newTerm.get(), termToAdjust)) | |||
{ | |||
if (const Helpers::TermPtr reverseTerm = parent->createTermToEvaluateInput (scope, termToAdjust, targetValue, newTerm)) | |||
if (Helpers::TermPtr reverseTerm = parent->createTermToEvaluateInput (scope, termToAdjust, targetValue, newTerm.get())) | |||
termToAdjust->value = Expression (reverseTerm).evaluate (scope); | |||
else | |||
return Expression (targetValue); | |||
@@ -66,7 +66,7 @@ namespace FunctionTestsHelpers | |||
FunctionObject (const FunctionObject& other) | |||
{ | |||
bigData = new BigData (*other.bigData); | |||
bigData.reset (new BigData (*other.bigData)); | |||
} | |||
int operator()(int i) const { return bigData->sum() + i; } | |||
@@ -1118,7 +1118,7 @@ private: | |||
[req addValue: juceStringToNS (value) forHTTPHeaderField: juceStringToNS (key)]; | |||
} | |||
connection = new URLConnectionState (req, numRedirectsToFollow); | |||
connection.reset (new URLConnectionState (req, numRedirectsToFollow)); | |||
} | |||
} | |||
@@ -1257,7 +1257,7 @@ bool ChildProcess::start (const StringArray& args, int streamFlags) | |||
if (args.size() == 0) | |||
return false; | |||
activeProcess = new ActiveProcess (args, streamFlags); | |||
activeProcess.reset (new ActiveProcess (args, streamFlags)); | |||
if (activeProcess->childPID == 0) | |||
activeProcess.reset(); | |||
@@ -118,9 +118,11 @@ URL::DownloadTask* URL::DownloadTask::createFallbackDownloader (const URL& urlTo | |||
const size_t bufferSize = 0x8000; | |||
targetFileToUse.deleteFile(); | |||
if (ScopedPointer<FileOutputStream> outputStream = targetFileToUse.createOutputStream (bufferSize)) | |||
ScopedPointer<FileOutputStream> outputStream (targetFileToUse.createOutputStream (bufferSize)); | |||
if (outputStream != nullptr) | |||
{ | |||
ScopedPointer<WebInputStream> stream = new WebInputStream (urlToUse, usePostRequest); | |||
ScopedPointer<WebInputStream> stream (new WebInputStream (urlToUse, usePostRequest)); | |||
stream->withExtraHeaders (extraHeadersToUse); | |||
if (stream->connect (nullptr)) | |||
@@ -650,10 +652,9 @@ InputStream* URL::createInputStream (const bool usePostCommand, | |||
ScopedPointer<WebInputStream> wi (new WebInputStream (*this, usePostCommand)); | |||
struct ProgressCallbackCaller : WebInputStream::Listener | |||
struct ProgressCallbackCaller : public WebInputStream::Listener | |||
{ | |||
ProgressCallbackCaller (OpenStreamProgressCallback* const progressCallbackToUse, | |||
void* const progressCallbackContextToUse) | |||
ProgressCallbackCaller (OpenStreamProgressCallback* progressCallbackToUse, void* progressCallbackContextToUse) | |||
: callback (progressCallbackToUse), data (progressCallbackContextToUse) | |||
{} | |||
@@ -670,7 +671,7 @@ InputStream* URL::createInputStream (const bool usePostCommand, | |||
ProgressCallbackCaller& operator= (const ProgressCallbackCaller&) { jassertfalse; return *this; } | |||
}; | |||
ScopedPointer<ProgressCallbackCaller> callbackCaller = | |||
ScopedPointer<ProgressCallbackCaller> callbackCaller | |||
(progressCallback != nullptr ? new ProgressCallbackCaller (progressCallback, progressCallbackContext) : nullptr); | |||
if (headers.isNotEmpty()) | |||
@@ -684,7 +685,7 @@ InputStream* URL::createInputStream (const bool usePostCommand, | |||
wi->withNumRedirectsToFollow (numRedirectsToFollow); | |||
bool success = wi->connect (callbackCaller); | |||
bool success = wi->connect (callbackCaller.get()); | |||
if (statusCode != nullptr) | |||
*statusCode = wi->getStatusCode(); | |||
@@ -44,7 +44,7 @@ LocalisedStrings& LocalisedStrings::operator= (const LocalisedStrings& other) | |||
languageName = other.languageName; | |||
countryCodes = other.countryCodes; | |||
translations = other.translations; | |||
fallback = createCopyIfNotNull (other.fallback.get()); | |||
fallback.reset (createCopyIfNotNull (other.fallback.get())); | |||
return *this; | |||
} | |||
@@ -171,19 +171,19 @@ void LocalisedStrings::addStrings (const LocalisedStrings& other) | |||
void LocalisedStrings::setFallback (LocalisedStrings* f) | |||
{ | |||
fallback = f; | |||
fallback.reset (f); | |||
} | |||
//============================================================================== | |||
void LocalisedStrings::setCurrentMappings (LocalisedStrings* newTranslations) | |||
{ | |||
const SpinLock::ScopedLockType sl (currentMappingsLock); | |||
currentMappings = newTranslations; | |||
currentMappings.reset (newTranslations); | |||
} | |||
LocalisedStrings* LocalisedStrings::getCurrentMappings() | |||
{ | |||
return currentMappings; | |||
return currentMappings.get(); | |||
} | |||
String LocalisedStrings::translateWithCurrentMappings (const String& text) { return juce::translate (text); } | |||
@@ -40,25 +40,25 @@ XmlElement* XmlDocument::parse (const String& xmlData) | |||
return doc.getDocumentElement(); | |||
} | |||
void XmlDocument::setInputSource (InputSource* const newSource) noexcept | |||
void XmlDocument::setInputSource (InputSource* newSource) noexcept | |||
{ | |||
inputSource = newSource; | |||
inputSource.reset (newSource); | |||
} | |||
void XmlDocument::setEmptyTextElementsIgnored (const bool shouldBeIgnored) noexcept | |||
void XmlDocument::setEmptyTextElementsIgnored (bool shouldBeIgnored) noexcept | |||
{ | |||
ignoreEmptyTextElements = shouldBeIgnored; | |||
} | |||
namespace XmlIdentifierChars | |||
{ | |||
static bool isIdentifierCharSlow (const juce_wchar c) noexcept | |||
static bool isIdentifierCharSlow (juce_wchar c) noexcept | |||
{ | |||
return CharacterFunctions::isLetterOrDigit (c) | |||
|| c == '_' || c == '-' || c == ':' || c == '.'; | |||
} | |||
static bool isIdentifierChar (const juce_wchar c) noexcept | |||
static bool isIdentifierChar (juce_wchar c) noexcept | |||
{ | |||
static const uint32 legalChars[] = { 0, 0x7ff6000, 0x87fffffe, 0x7fffffe, 0 }; | |||
@@ -93,7 +93,9 @@ XmlElement* XmlDocument::getDocumentElement (const bool onlyReadOuterDocumentEle | |||
{ | |||
if (originalText.isEmpty() && inputSource != nullptr) | |||
{ | |||
if (ScopedPointer<InputStream> in = inputSource->createInputStream()) | |||
ScopedPointer<InputStream> in (inputSource->createInputStream()); | |||
if (in != nullptr) | |||
{ | |||
MemoryOutputStream data; | |||
data.writeFromInputStream (*in, onlyReadOuterDocumentElement ? 8192 : -1); | |||
@@ -141,8 +143,12 @@ void XmlDocument::setLastError (const String& desc, const bool carryOn) | |||
String XmlDocument::getFileContents (const String& filename) const | |||
{ | |||
if (inputSource != nullptr) | |||
if (ScopedPointer<InputStream> in = inputSource->createInputStreamFor (filename.trim().unquoted())) | |||
{ | |||
ScopedPointer<InputStream> in (inputSource->createInputStreamFor (filename.trim().unquoted())); | |||
if (in != nullptr) | |||
return in->readEntireStreamAsString(); | |||
} | |||
return {}; | |||
} | |||
@@ -286,7 +286,7 @@ bool GZIPDecompressorInputStream::setPosition (int64 newPos) | |||
isEof = false; | |||
activeBufferSize = 0; | |||
currentPos = 0; | |||
helper = new GZIPDecompressHelper (format); | |||
helper.reset (new GZIPDecompressHelper (format)); | |||
sourceStream->setPosition (originalSourcePos); | |||
} | |||
@@ -128,7 +128,8 @@ struct ZipFile::ZipInputStream : public InputStream | |||
{ | |||
if (zf.inputSource != nullptr) | |||
{ | |||
inputStream = streamToDelete = file.inputSource->createInputStream(); | |||
streamToDelete.reset (file.inputSource->createInputStream()); | |||
inputStream = streamToDelete.get(); | |||
} | |||
else | |||
{ | |||
@@ -223,7 +224,7 @@ ZipFile::ZipFile (InputStream* stream, bool deleteStreamWhenDestroyed) | |||
: inputStream (stream) | |||
{ | |||
if (deleteStreamWhenDestroyed) | |||
streamToDelete = inputStream; | |||
streamToDelete.reset (inputStream); | |||
init(); | |||
} | |||
@@ -339,7 +340,7 @@ void ZipFile::init() | |||
if (inputSource != nullptr) | |||
{ | |||
in = inputSource->createInputStream(); | |||
toDelete = in; | |||
toDelete.reset (in); | |||
} | |||
if (in != nullptr) | |||
@@ -516,7 +517,7 @@ private: | |||
{ | |||
if (stream == nullptr) | |||
{ | |||
stream = file.createInputStream(); | |||
stream.reset (file.createInputStream()); | |||
if (stream == nullptr) | |||
return false; | |||
@@ -982,7 +982,9 @@ ValueTree ValueTree::fromXml (const XmlElement& xml) | |||
String ValueTree::toXmlString() const | |||
{ | |||
if (ScopedPointer<XmlElement> xml = createXml()) | |||
ScopedPointer<XmlElement> xml (createXml()); | |||
if (xml != nullptr) | |||
return xml->createDocument ({}); | |||
return {}; | |||
@@ -1142,7 +1144,7 @@ public: | |||
ScopedPointer<XmlElement> xml1 (v1.createXml()); | |||
ScopedPointer<XmlElement> xml2 (v2.createCopy().createXml()); | |||
expect (xml1->isEquivalentTo (xml2, false)); | |||
expect (xml1->isEquivalentTo (xml2.get(), false)); | |||
auto v4 = v2.createCopy(); | |||
expect (v1.isEquivalentTo (v4)); | |||
@@ -54,7 +54,7 @@ FillType::FillType (const Image& im, const AffineTransform& t) noexcept | |||
FillType::FillType (const FillType& other) | |||
: colour (other.colour), | |||
gradient (other.gradient.createCopy()), | |||
gradient (createCopyIfNotNull (other.gradient.get())), | |||
image (other.image), | |||
transform (other.transform) | |||
{ | |||
@@ -65,7 +65,7 @@ FillType& FillType::operator= (const FillType& other) | |||
if (this != &other) | |||
{ | |||
colour = other.colour; | |||
gradient.reset (other.gradient.createCopy()); | |||
gradient.reset (createCopyIfNotNull (other.gradient.get())); | |||
image = other.image; | |||
transform = other.transform; | |||
} | |||
@@ -2661,10 +2661,10 @@ public: | |||
void initialise (StateObjectType* state) | |||
{ | |||
currentState = state; | |||
currentState.reset (state); | |||
} | |||
inline StateObjectType* operator->() const noexcept { return currentState; } | |||
inline StateObjectType* operator->() const noexcept { return currentState.get(); } | |||
inline StateObjectType& operator*() const noexcept { return *currentState; } | |||
void save() | |||
@@ -2693,7 +2693,7 @@ public: | |||
void endTransparencyLayer() | |||
{ | |||
const ScopedPointer<StateObjectType> finishedTransparencyLayer (currentState); | |||
ScopedPointer<StateObjectType> finishedTransparencyLayer (currentState.release()); | |||
restore(); | |||
currentState->endTransparencyLayer (*finishedTransparencyLayer); | |||
} | |||
@@ -79,7 +79,7 @@ Button::Button (const String& name) : Component (name), text (name) | |||
callbackHelper.reset (new CallbackHelper (*this)); | |||
setWantsKeyboardFocus (true); | |||
isOn.addListener (callbackHelper); | |||
isOn.addListener (callbackHelper.get()); | |||
} | |||
Button::~Button() | |||
@@ -87,9 +87,9 @@ Button::~Button() | |||
clearShortcuts(); | |||
if (commandManagerToUse != nullptr) | |||
commandManagerToUse->removeListener (callbackHelper); | |||
commandManagerToUse->removeListener (callbackHelper.get()); | |||
isOn.removeListener (callbackHelper); | |||
isOn.removeListener (callbackHelper.get()); | |||
callbackHelper.reset(); | |||
} | |||
@@ -509,12 +509,12 @@ void Button::parentHierarchyChanged() | |||
if (newKeySource != keySource.get()) | |||
{ | |||
if (keySource != nullptr) | |||
keySource->removeKeyListener (callbackHelper); | |||
keySource->removeKeyListener (callbackHelper.get()); | |||
keySource = newKeySource; | |||
if (keySource != nullptr) | |||
keySource->addKeyListener (callbackHelper); | |||
keySource->addKeyListener (callbackHelper.get()); | |||
} | |||
} | |||
@@ -528,12 +528,12 @@ void Button::setCommandToTrigger (ApplicationCommandManager* const newCommandMan | |||
if (commandManagerToUse != newCommandManager) | |||
{ | |||
if (commandManagerToUse != nullptr) | |||
commandManagerToUse->removeListener (callbackHelper); | |||
commandManagerToUse->removeListener (callbackHelper.get()); | |||
commandManagerToUse = newCommandManager; | |||
if (commandManagerToUse != nullptr) | |||
commandManagerToUse->addListener (callbackHelper); | |||
commandManagerToUse->addListener (callbackHelper.get()); | |||
// if you've got clickTogglesState turned on, you shouldn't also connect the button | |||
// up to be a command invoker. Instead, your command handler must flip the state of whatever | |||
@@ -137,8 +137,8 @@ void DrawableButton::buttonStateChanged() | |||
} | |||
else | |||
{ | |||
imageToDraw = getToggleState() ? disabledImageOn | |||
: disabledImage; | |||
imageToDraw = getToggleState() ? disabledImageOn.get() | |||
: disabledImage.get(); | |||
if (imageToDraw == nullptr) | |||
{ | |||
@@ -201,19 +201,19 @@ Drawable* DrawableButton::getCurrentImage() const noexcept | |||
Drawable* DrawableButton::getNormalImage() const noexcept | |||
{ | |||
return (getToggleState() && normalImageOn != nullptr) ? normalImageOn | |||
: normalImage; | |||
return (getToggleState() && normalImageOn != nullptr) ? normalImageOn.get() | |||
: normalImage.get(); | |||
} | |||
Drawable* DrawableButton::getOverImage() const noexcept | |||
{ | |||
if (getToggleState()) | |||
{ | |||
if (overImageOn != nullptr) return overImageOn; | |||
if (normalImageOn != nullptr) return normalImageOn; | |||
if (overImageOn != nullptr) return overImageOn.get(); | |||
if (normalImageOn != nullptr) return normalImageOn.get(); | |||
} | |||
return overImage != nullptr ? overImage : normalImage; | |||
return overImage != nullptr ? overImage.get() : normalImage.get(); | |||
} | |||
Drawable* DrawableButton::getDownImage() const noexcept | |||
@@ -101,9 +101,9 @@ Drawable* ToolbarButton::getImageToUse() const | |||
return nullptr; | |||
if (getToggleState() && toggledOnImage != nullptr) | |||
return toggledOnImage; | |||
return toggledOnImage.get(); | |||
return normalImage; | |||
return normalImage.get(); | |||
} | |||
void ToolbarButton::buttonStateChanged() | |||
@@ -830,7 +830,7 @@ private: | |||
void Component::setCachedComponentImage (CachedComponentImage* newCachedImage) | |||
{ | |||
if (cachedImage != newCachedImage) | |||
if (cachedImage.get() != newCachedImage) | |||
{ | |||
cachedImage.reset (newCachedImage); | |||
repaint(); | |||
@@ -2140,14 +2140,13 @@ void Component::copyAllExplicitColoursTo (Component& target) const | |||
} | |||
//============================================================================== | |||
Component::Positioner::Positioner (Component& c) noexcept | |||
: component (c) | |||
Component::Positioner::Positioner (Component& c) noexcept : component (c) | |||
{ | |||
} | |||
Component::Positioner* Component::getPositioner() const noexcept | |||
{ | |||
return positioner; | |||
return positioner.get(); | |||
} | |||
void Component::setPositioner (Positioner* newPositioner) | |||
@@ -2775,7 +2774,9 @@ void Component::moveKeyboardFocusToSibling (bool moveToNext) | |||
if (parentComponent != nullptr) | |||
{ | |||
if (ScopedPointer<KeyboardFocusTraverser> traverser = createFocusTraverser()) | |||
ScopedPointer<KeyboardFocusTraverser> traverser (createFocusTraverser()); | |||
if (traverser != nullptr) | |||
{ | |||
auto* nextComp = moveToNext ? traverser->getNextComponent (this) | |||
: traverser->getPreviousComponent (this); | |||
@@ -96,7 +96,7 @@ LookAndFeel& Desktop::getDefaultLookAndFeel() noexcept | |||
if (defaultLookAndFeel == nullptr) | |||
defaultLookAndFeel.reset (new LookAndFeel_V4()); | |||
currentLookAndFeel = defaultLookAndFeel; | |||
currentLookAndFeel = defaultLookAndFeel.get(); | |||
} | |||
return *currentLookAndFeel; | |||
@@ -373,13 +373,13 @@ public: | |||
#ifndef DOXYGEN | |||
/** @internal */ | |||
void refresh(); | |||
/** @internal */ | |||
~Displays(); | |||
#endif | |||
private: | |||
friend class Desktop; | |||
friend struct ContainerDeletePolicy<Displays>; | |||
Displays (Desktop&); | |||
~Displays(); | |||
void init (Desktop&); | |||
void findDisplays (float masterScale); | |||
@@ -109,7 +109,7 @@ DrawableComposite* Drawable::getParent() const | |||
void Drawable::setClipPath (Drawable* clipPath) | |||
{ | |||
if (drawableClipPath != clipPath) | |||
if (drawableClipPath.get() != clipPath) | |||
{ | |||
drawableClipPath.reset (clipPath); | |||
repaint(); | |||
@@ -1711,8 +1711,8 @@ Drawable* Drawable::createFromSVGFile (const File& svgFile) | |||
if (svgDocument != nullptr) | |||
{ | |||
SVGState state (svgDocument, svgFile); | |||
return state.parseSVGElement (SVGState::XmlPath (svgDocument, nullptr)); | |||
SVGState state (svgDocument.get(), svgFile); | |||
return state.parseSVGElement (SVGState::XmlPath (svgDocument.get(), nullptr)); | |||
} | |||
} | |||
@@ -334,15 +334,15 @@ FilePreviewComponent* FileBrowserComponent::getPreviewComponent() const noexcept | |||
DirectoryContentsDisplayComponent* FileBrowserComponent::getDisplayComponent() const noexcept | |||
{ | |||
return fileListComponent; | |||
return fileListComponent.get(); | |||
} | |||
//============================================================================== | |||
void FileBrowserComponent::resized() | |||
{ | |||
getLookAndFeel() | |||
.layoutFileBrowserComponent (*this, fileListComponent, previewComp, | |||
¤tPathBox, &filenameBox, goUpButton); | |||
.layoutFileBrowserComponent (*this, fileListComponent.get(), previewComp, | |||
¤tPathBox, &filenameBox, goUpButton.get()); | |||
} | |||
//============================================================================== | |||
@@ -68,7 +68,7 @@ void FilenameComponent::paintOverChildren (Graphics& g) | |||
void FilenameComponent::resized() | |||
{ | |||
getLookAndFeel().layoutFilenameComponent (*this, &filenameBox, browseButton); | |||
getLookAndFeel().layoutFilenameComponent (*this, &filenameBox, browseButton.get()); | |||
} | |||
KeyboardFocusTraverser* FilenameComponent::createFocusTraverser() | |||
@@ -68,8 +68,8 @@ public: | |||
bool useTimeslice (const int elapsed) | |||
{ | |||
if (auto* c = proxy != nullptr ? static_cast<Component*> (proxy) | |||
: static_cast<Component*> (component)) | |||
if (auto* c = proxy != nullptr ? proxy.get() | |||
: component.get()) | |||
{ | |||
msElapsed += elapsed; | |||
double newProgress = msElapsed / (double) msTotal; | |||
@@ -114,7 +114,7 @@ ComponentBuilder::~ComponentBuilder() | |||
#if JUCE_DEBUG | |||
// Don't delete the managed component!! The builder owns that component, and will delete | |||
// it automatically when it gets deleted. | |||
jassert (componentRef.get() == static_cast<Component*> (component)); | |||
jassert (componentRef.get() == component.get()); | |||
#endif | |||
} | |||
@@ -125,11 +125,11 @@ Component* ComponentBuilder::getManagedComponent() | |||
component.reset (createComponent()); | |||
#if JUCE_DEBUG | |||
componentRef = component; | |||
componentRef = component.get(); | |||
#endif | |||
} | |||
return component; | |||
return component.get(); | |||
} | |||
Component* ComponentBuilder::createComponent() | |||
@@ -152,7 +152,7 @@ void TabBarButton::setExtraComponent (Component* comp, ExtraComponentPlacement p | |||
void TabBarButton::childBoundsChanged (Component* c) | |||
{ | |||
if (c == extraComponent) | |||
if (c == extraComponent.get()) | |||
{ | |||
owner.resized(); | |||
resized(); | |||
@@ -263,7 +263,7 @@ void TabbedButtonBar::addTab (const String& tabName, | |||
tabs.insert (insertIndex, newTab); | |||
currentTabIndex = tabs.indexOf (currentTab); | |||
addAndMakeVisible (newTab->button, insertIndex); | |||
addAndMakeVisible (newTab->button.get(), insertIndex); | |||
resized(); | |||
@@ -358,7 +358,7 @@ void TabbedButtonBar::setCurrentTabIndex (int newIndex, bool shouldSendChangeMes | |||
TabBarButton* TabbedButtonBar::getTabButton (const int index) const | |||
{ | |||
if (auto* tab = tabs[index]) | |||
return static_cast<TabBarButton*> (tab->button); | |||
return static_cast<TabBarButton*> (tab->button.get()); | |||
return nullptr; | |||
} | |||
@@ -366,7 +366,7 @@ TabBarButton* TabbedButtonBar::getTabButton (const int index) const | |||
int TabbedButtonBar::indexOfTabButton (const TabBarButton* button) const | |||
{ | |||
for (int i = tabs.size(); --i >= 0;) | |||
if (tabs.getUnchecked(i)->button == button) | |||
if (tabs.getUnchecked(i)->button.get() == button) | |||
return i; | |||
return -1; | |||
@@ -435,7 +435,8 @@ void TabbedButtonBar::updateTabPositions (bool animate) | |||
{ | |||
if (extraTabsButton == nullptr) | |||
{ | |||
addAndMakeVisible (extraTabsButton = lf.createTabBarExtrasButton()); | |||
extraTabsButton.reset (lf.createTabBarExtrasButton()); | |||
addAndMakeVisible (extraTabsButton.get()); | |||
extraTabsButton->setAlwaysOnTop (true); | |||
extraTabsButton->setTriggeredOnMouseDown (true); | |||
extraTabsButton->onClick = [this] { showExtraItemsMenu(); }; | |||
@@ -569,7 +570,7 @@ void TabbedButtonBar::showExtraItemsMenu() | |||
m.addItem (i + 1, tab->name, true, i == currentTabIndex); | |||
} | |||
m.showMenuAsync (PopupMenu::Options().withTargetComponent (extraTabsButton), | |||
m.showMenuAsync (PopupMenu::Options().withTargetComponent (extraTabsButton.get()), | |||
ModalCallbackFunction::forComponent (extraItemsMenuCallback, this)); | |||
} | |||
@@ -291,7 +291,7 @@ void Viewport::setScrollOnDragEnabled (bool shouldScrollOnDrag) | |||
if (isScrollOnDragEnabled() != shouldScrollOnDrag) | |||
{ | |||
if (shouldScrollOnDrag) | |||
dragToScrollListener = new DragToScrollListener (*this); | |||
dragToScrollListener.reset (new DragToScrollListener (*this)); | |||
else | |||
dragToScrollListener.reset(); | |||
} | |||
@@ -490,13 +490,13 @@ int Viewport::getScrollBarThickness() const | |||
void Viewport::scrollBarMoved (ScrollBar* scrollBarThatHasMoved, double newRangeStart) | |||
{ | |||
const int newRangeStartInt = roundToInt (newRangeStart); | |||
auto newRangeStartInt = roundToInt (newRangeStart); | |||
if (scrollBarThatHasMoved == horizontalScrollBar) | |||
if (scrollBarThatHasMoved == horizontalScrollBar.get()) | |||
{ | |||
setViewPosition (newRangeStartInt, getViewPositionY()); | |||
} | |||
else if (scrollBarThatHasMoved == verticalScrollBar) | |||
else if (scrollBarThatHasMoved == verticalScrollBar.get()) | |||
{ | |||
setViewPosition (getViewPositionX(), newRangeStartInt); | |||
} | |||
@@ -2623,7 +2623,7 @@ void LookAndFeel_V2::layoutFileBrowserComponent (FileBrowserComponent& browserCo | |||
//============================================================================== | |||
static Drawable* createDrawableFromSVG (const char* data) | |||
{ | |||
ScopedPointer<XmlElement> xml = XmlDocument::parse (data); | |||
ScopedPointer<XmlElement> xml (XmlDocument::parse (data)); | |||
jassert (xml != nullptr); | |||
return Drawable::createFromSVG (*xml); | |||
} | |||
@@ -2631,7 +2631,7 @@ static Drawable* createDrawableFromSVG (const char* data) | |||
const Drawable* LookAndFeel_V2::getDefaultFolderImage() | |||
{ | |||
if (folderImage == nullptr) | |||
folderImage = createDrawableFromSVG (R"svgdata( | |||
folderImage.reset (createDrawableFromSVG (R"svgdata( | |||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="706" height="532"> | |||
<defs> | |||
<linearGradient id="a"> | |||
@@ -2646,22 +2646,22 @@ const Drawable* LookAndFeel_V2::getDefaultFolderImage() | |||
<path d="M608.6 136.8L235.2 208a22.7 22.7 0 0 0-16 19l-40.8 241c1.7 8.4 9.6 14.5 17.8 12.3l380-104c8-2.2 10.7-10.2 12.3-18.4l38-210.1c.4-15.4-10.4-11.8-18-11.1z" display="block" fill="url(#c)" opacity=".8" stroke="#446c98" stroke-width="7"/> | |||
</g> | |||
</svg> | |||
)svgdata"); | |||
)svgdata")); | |||
return folderImage; | |||
return folderImage.get(); | |||
} | |||
const Drawable* LookAndFeel_V2::getDefaultDocumentFileImage() | |||
{ | |||
if (documentImage == nullptr) | |||
documentImage = createDrawableFromSVG (R"svgdata( | |||
documentImage.reset (createDrawableFromSVG (R"svgdata( | |||
<svg version="1" viewBox="-10 -10 450 600" xmlns="http://www.w3.org/2000/svg"> | |||
<path d="M17 0h290l120 132v426c0 10-8 19-17 19H17c-9 0-17-9-17-19V19C0 8 8 0 17 0z" fill="#e5e5e5" stroke="#888888" stroke-width="7"/> | |||
<path d="M427 132H324c-9 0-17-9-17-19V0l120 132z" fill="#ccc"/> | |||
</svg> | |||
)svgdata"); | |||
)svgdata")); | |||
return documentImage; | |||
return documentImage.get(); | |||
} | |||
//============================================================================== | |||
@@ -181,7 +181,7 @@ void BurgerMenuComponent::paintListBoxItem (int rowIndex, Graphics& g, int w, in | |||
hasSubMenu (item), | |||
item.text, | |||
item.shortcutKeyDescription, | |||
item.image, | |||
item.image.get(), | |||
colour); | |||
} | |||
} | |||
@@ -120,7 +120,7 @@ struct ItemComponent : public Component | |||
hasSubMenu (item), | |||
item.text, | |||
item.shortcutKeyDescription, | |||
item.image, | |||
item.image.get(), | |||
getColour (item)); | |||
} | |||
@@ -561,7 +561,7 @@ public: | |||
if (mw == window) | |||
return true; | |||
mw = mw->activeSubMenu; | |||
mw = mw->activeSubMenu.get(); | |||
} | |||
return false; | |||
@@ -1843,7 +1843,7 @@ bool PopupMenu::MenuItemIterator::next() | |||
if (searchRecursively && currentItem->subMenu != nullptr) | |||
{ | |||
index.add (0); | |||
menus.add (currentItem->subMenu); | |||
menus.add (currentItem->subMenu.get()); | |||
} | |||
else | |||
index.setUnchecked (index.size() - 1, index.getLast() + 1); | |||
@@ -78,7 +78,7 @@ public: | |||
delegate = [cls.createInstance() init]; | |||
object_setInstanceVariable (delegate, "cppObject", this); | |||
[panel setDelegate:delegate]; | |||
[panel setDelegate: delegate]; | |||
filters.addTokens (owner.filters.replaceCharacters (",:", ";;"), ";", String()); | |||
filters.trim(); | |||
@@ -150,10 +150,9 @@ public: | |||
} | |||
[panel close]; | |||
[panel release]; | |||
} | |||
panel.reset(); | |||
if (delegate != nil) | |||
{ | |||
[delegate release]; | |||
@@ -292,7 +291,7 @@ private: | |||
NSView* nsViewPreview = nullptr; | |||
bool selectsDirectories, selectsFiles, isSave, selectMultiple; | |||
ScopedPointer<NSSavePanel> panel; | |||
NSSavePanel* panel; | |||
DelegateType* delegate; | |||
StringArray filters; | |||
@@ -612,7 +612,7 @@ public: | |||
~TemporaryMainMenuWithStandardCommands() | |||
{ | |||
MenuBarModel::setMacMainMenu (oldMenu, oldAppleMenu, oldRecentItems); | |||
MenuBarModel::setMacMainMenu (oldMenu, oldAppleMenu.get(), oldRecentItems); | |||
} | |||
private: | |||
@@ -200,7 +200,8 @@ Value& TextPropertyComponent::getValue() const | |||
void TextPropertyComponent::createEditor (int maxNumChars, bool isMultiLine, bool isEditable) | |||
{ | |||
addAndMakeVisible (textEditor = new LabelComp (*this, maxNumChars, isMultiLine, isEditable)); | |||
textEditor.reset (new LabelComp (*this, maxNumChars, isMultiLine, isEditable)); | |||
addAndMakeVisible (textEditor.get()); | |||
if (isMultiLine) | |||
{ | |||
@@ -418,10 +418,10 @@ void ComboBox::lookAndFeelChanged() | |||
newLabel->setText (label->getText(), dontSendNotification); | |||
} | |||
label = newLabel; | |||
std::swap (label, newLabel); | |||
} | |||
addAndMakeVisible (label); | |||
addAndMakeVisible (label.get()); | |||
EditableState newEditableState = (label->isEditable() ? labelIsEditable : labelIsNotEditable); | |||
@@ -221,7 +221,7 @@ void Label::showEditor() | |||
resized(); | |||
repaint(); | |||
editorShown (editor); | |||
editorShown (editor.get()); | |||
enterModalState (false); | |||
editor->grabKeyboardFocus(); | |||
@@ -254,9 +254,10 @@ void Label::hideEditor (bool discardCurrentEditorContents) | |||
if (editor != nullptr) | |||
{ | |||
WeakReference<Component> deletionChecker (this); | |||
ScopedPointer<TextEditor> outgoingEditor (editor); | |||
ScopedPointer<TextEditor> outgoingEditor; | |||
std::swap (outgoingEditor, editor); | |||
editorAboutToBeHidden (outgoingEditor); | |||
editorAboutToBeHidden (outgoingEditor.get()); | |||
const bool changed = (! discardCurrentEditorContents) | |||
&& updateFromTextEditorContents (*outgoingEditor); | |||
@@ -311,7 +312,7 @@ TextEditor* Label::createEditorComponent() | |||
TextEditor* Label::getCurrentTextEditor() const noexcept | |||
{ | |||
return editor; | |||
return editor.get(); | |||
} | |||
//============================================================================== | |||
@@ -410,7 +411,7 @@ void Label::textEditorTextChanged (TextEditor& ed) | |||
{ | |||
if (editor != nullptr) | |||
{ | |||
jassert (&ed == editor); | |||
jassert (&ed == editor.get()); | |||
if (! (hasKeyboardFocus (true) || isCurrentlyBlockedByAnotherModalComponent())) | |||
{ | |||
@@ -426,7 +427,7 @@ void Label::textEditorReturnKeyPressed (TextEditor& ed) | |||
{ | |||
if (editor != nullptr) | |||
{ | |||
jassert (&ed == editor); | |||
jassert (&ed == editor.get()); | |||
WeakReference<Component> deletionChecker (this); | |||
bool changed = updateFromTextEditorContents (ed); | |||
@@ -446,7 +447,7 @@ void Label::textEditorEscapeKeyPressed (TextEditor& ed) | |||
{ | |||
if (editor != nullptr) | |||
{ | |||
jassert (&ed == editor); | |||
jassert (&ed == editor.get()); | |||
ignoreUnused (ed); | |||
editor->setText (textValue.toString(), false); | |||
@@ -52,11 +52,11 @@ public: | |||
{ | |||
setMouseCursor (m->getMouseCursorForRow (row)); | |||
customComponent = m->refreshComponentForRow (newRow, nowSelected, customComponent.release()); | |||
customComponent.reset (m->refreshComponentForRow (newRow, nowSelected, customComponent.release())); | |||
if (customComponent != nullptr) | |||
{ | |||
addAndMakeVisible (customComponent); | |||
addAndMakeVisible (customComponent.get()); | |||
customComponent->setBounds (getLocalBounds()); | |||
} | |||
} | |||
@@ -452,7 +452,7 @@ void ListBox::visibilityChanged() | |||
Viewport* ListBox::getViewport() const noexcept | |||
{ | |||
return viewport; | |||
return viewport.get(); | |||
} | |||
//============================================================================== | |||
@@ -655,7 +655,7 @@ int ListBox::getInsertionIndexForPosition (const int x, const int y) const noexc | |||
Component* ListBox::getComponentForRowNumber (const int row) const noexcept | |||
{ | |||
if (auto* listRowComp = viewport->getComponentForRowIfOnscreen (row)) | |||
return listRowComp->customComponent; | |||
return listRowComp->customComponent.get(); | |||
return nullptr; | |||
} | |||
@@ -850,18 +850,17 @@ void ListBox::parentHierarchyChanged() | |||
colourChanged(); | |||
} | |||
void ListBox::setOutlineThickness (const int newThickness) | |||
void ListBox::setOutlineThickness (int newThickness) | |||
{ | |||
outlineThickness = newThickness; | |||
resized(); | |||
} | |||
void ListBox::setHeaderComponent (Component* const newHeaderComponent) | |||
void ListBox::setHeaderComponent (Component* newHeaderComponent) | |||
{ | |||
if (headerComponent != newHeaderComponent) | |||
if (headerComponent.get() != newHeaderComponent) | |||
{ | |||
headerComponent.reset (newHeaderComponent); | |||
addAndMakeVisible (newHeaderComponent); | |||
ListBox::resized(); | |||
} | |||
@@ -695,7 +695,8 @@ void TableHeaderComponent::beginDrag (const MouseEvent& e) | |||
auto temp = columnIdBeingDragged; | |||
columnIdBeingDragged = 0; | |||
addAndMakeVisible (dragOverlayComp = new DragOverlayComp (createComponentSnapshot (columnRect, false))); | |||
dragOverlayComp.reset (new DragOverlayComp (createComponentSnapshot (columnRect, false))); | |||
addAndMakeVisible (dragOverlayComp.get()); | |||
columnIdBeingDragged = temp; | |||
dragOverlayComp->setBounds (columnRect); | |||
@@ -880,7 +880,8 @@ TextEditor::TextEditor (const String& name, juce_wchar passwordChar) | |||
{ | |||
setMouseCursor (MouseCursor::IBeamCursor); | |||
addAndMakeVisible (viewport = new TextEditorViewport (*this)); | |||
viewport.reset (new TextEditorViewport (*this)); | |||
addAndMakeVisible (viewport.get()); | |||
viewport->setViewedComponent (textHolder = new TextHolderComponent (*this)); | |||
viewport->setWantsKeyboardFocus (false); | |||
viewport->setScrollBarsShown (false, false); | |||
@@ -1082,7 +1083,8 @@ void TextEditor::recreateCaret() | |||
{ | |||
if (caret == nullptr) | |||
{ | |||
textHolder->addChildComponent (caret = getLookAndFeel().createCaretComponent (this)); | |||
caret.reset (getLookAndFeel().createCaretComponent (this)); | |||
textHolder->addChildComponent (caret.get()); | |||
updateCaretPosition(); | |||
} | |||
} | |||
@@ -543,7 +543,7 @@ void Toolbar::showMissingItems() | |||
{ | |||
PopupMenu m; | |||
m.addCustomItem (1, new MissingItemsComponent (*this, getThickness())); | |||
m.showMenuAsync (PopupMenu::Options().withTargetComponent (missingItemsButton), nullptr); | |||
m.showMenuAsync (PopupMenu::Options().withTargetComponent (missingItemsButton.get()), nullptr); | |||
} | |||
} | |||
@@ -173,9 +173,9 @@ void ToolbarItemComponent::paintButton (Graphics& g, const bool over, const bool | |||
if (toolbarStyle != Toolbar::iconsOnly) | |||
{ | |||
const int indent = contentArea.getX(); | |||
int y = indent; | |||
int h = getHeight() - indent * 2; | |||
auto indent = contentArea.getX(); | |||
auto y = indent; | |||
auto h = getHeight() - indent * 2; | |||
if (toolbarStyle == Toolbar::iconsWithText) | |||
{ | |||
@@ -212,7 +212,7 @@ void ToolbarItemComponent::resized() | |||
} | |||
else | |||
{ | |||
contentArea = Rectangle<int>(); | |||
contentArea = {}; | |||
} | |||
contentAreaChanged (contentArea); | |||
@@ -231,7 +231,8 @@ void ToolbarItemComponent::setEditingMode (const ToolbarEditingMode newMode) | |||
} | |||
else if (overlayComp == nullptr) | |||
{ | |||
addAndMakeVisible (overlayComp = new ItemDragAndDropOverlayComponent()); | |||
overlayComp.reset (new ItemDragAndDropOverlayComponent()); | |||
addAndMakeVisible (overlayComp.get()); | |||
overlayComp->parentSizeChanged(); | |||
} | |||
@@ -440,7 +440,7 @@ TreeView::TreeView (const String& name) | |||
: Component (name), | |||
viewport (new TreeViewport()) | |||
{ | |||
addAndMakeVisible (viewport); | |||
addAndMakeVisible (viewport.get()); | |||
viewport->setViewedComponent (new ContentComponent (*this)); | |||
setWantsKeyboardFocus (true); | |||
} | |||
@@ -547,7 +547,7 @@ void TreeView::setOpenCloseButtonsVisible (const bool shouldBeVisible) | |||
Viewport* TreeView::getViewport() const noexcept | |||
{ | |||
return viewport; | |||
return viewport.get(); | |||
} | |||
//============================================================================== | |||
@@ -68,10 +68,10 @@ DocumentWindow::~DocumentWindow() | |||
// Don't delete or remove the resizer components yourself! They're managed by the | |||
// DocumentWindow, and you should leave them alone! You may have deleted them | |||
// accidentally by careless use of deleteAllChildren()..? | |||
jassert (menuBar == nullptr || getIndexOfChildComponent (menuBar) >= 0); | |||
jassert (titleBarButtons[0] == nullptr || getIndexOfChildComponent (titleBarButtons[0]) >= 0); | |||
jassert (titleBarButtons[1] == nullptr || getIndexOfChildComponent (titleBarButtons[1]) >= 0); | |||
jassert (titleBarButtons[2] == nullptr || getIndexOfChildComponent (titleBarButtons[2]) >= 0); | |||
jassert (menuBar == nullptr || getIndexOfChildComponent (menuBar.get()) >= 0); | |||
jassert (titleBarButtons[0] == nullptr || getIndexOfChildComponent (titleBarButtons[0].get()) >= 0); | |||
jassert (titleBarButtons[1] == nullptr || getIndexOfChildComponent (titleBarButtons[1].get()) >= 0); | |||
jassert (titleBarButtons[2] == nullptr || getIndexOfChildComponent (titleBarButtons[2].get()) >= 0); | |||
for (auto& b : titleBarButtons) | |||
b.reset(); | |||
@@ -140,7 +140,7 @@ void DocumentWindow::setMenuBar (MenuBarModel* newMenuBarModel, const int newMen | |||
Component* DocumentWindow::getMenuBarComponent() const noexcept | |||
{ | |||
return menuBar; | |||
return menuBar.get(); | |||
} | |||
void DocumentWindow::setMenuBarComponent (Component* newMenuBarComponent) | |||
@@ -229,9 +229,9 @@ void DocumentWindow::resized() | |||
.positionDocumentWindowButtons (*this, | |||
titleBarArea.getX(), titleBarArea.getY(), | |||
titleBarArea.getWidth(), titleBarArea.getHeight(), | |||
titleBarButtons[0], | |||
titleBarButtons[1], | |||
titleBarButtons[2], | |||
titleBarButtons[0].get(), | |||
titleBarButtons[1].get(), | |||
titleBarButtons[2].get(), | |||
positionTitleBarButtonsOnLeft); | |||
if (menuBar != nullptr) | |||
@@ -270,9 +270,9 @@ Rectangle<int> DocumentWindow::getTitleBarArea() | |||
return { border.getLeft(), border.getTop(), getWidth() - border.getLeftAndRight(), getTitleBarHeight() }; | |||
} | |||
Button* DocumentWindow::getCloseButton() const noexcept { return titleBarButtons[2]; } | |||
Button* DocumentWindow::getMinimiseButton() const noexcept { return titleBarButtons[0]; } | |||
Button* DocumentWindow::getMaximiseButton() const noexcept { return titleBarButtons[1]; } | |||
Button* DocumentWindow::getCloseButton() const noexcept { return titleBarButtons[2].get(); } | |||
Button* DocumentWindow::getMinimiseButton() const noexcept { return titleBarButtons[0].get(); } | |||
Button* DocumentWindow::getMaximiseButton() const noexcept { return titleBarButtons[1].get(); } | |||
int DocumentWindow::getDesktopWindowStyleFlags() const | |||
{ | |||
@@ -305,11 +305,11 @@ void DocumentWindow::lookAndFeelChanged() | |||
if (buttonListener == nullptr) | |||
buttonListener.reset (new ButtonListenerProxy (*this)); | |||
b->addListener (buttonListener); | |||
b->addListener (buttonListener.get()); | |||
b->setWantsKeyboardFocus (false); | |||
// (call the Component method directly to avoid the assertion in ResizableWindow) | |||
Component::addAndMakeVisible (b); | |||
Component::addAndMakeVisible (b.get()); | |||
} | |||
} | |||
@@ -47,8 +47,8 @@ ResizableWindow::~ResizableWindow() | |||
// Don't delete or remove the resizer components yourself! They're managed by the | |||
// ResizableWindow, and you should leave them alone! You may have deleted them | |||
// accidentally by careless use of deleteAllChildren()..? | |||
jassert (resizableCorner == nullptr || getIndexOfChildComponent (resizableCorner) >= 0); | |||
jassert (resizableBorder == nullptr || getIndexOfChildComponent (resizableBorder) >= 0); | |||
jassert (resizableCorner == nullptr || getIndexOfChildComponent (resizableCorner.get()) >= 0); | |||
jassert (resizableBorder == nullptr || getIndexOfChildComponent (resizableBorder.get()) >= 0); | |||
resizableCorner.reset(); | |||
resizableBorder.reset(); | |||
@@ -367,14 +367,14 @@ CodeEditorComponent::CodeEditorComponent (CodeDocument& doc, CodeTokeniser* cons | |||
setLineNumbersShown (true); | |||
verticalScrollBar.addListener (pimpl); | |||
horizontalScrollBar.addListener (pimpl); | |||
document.addListener (pimpl); | |||
verticalScrollBar.addListener (pimpl.get()); | |||
horizontalScrollBar.addListener (pimpl.get()); | |||
document.addListener (pimpl.get()); | |||
} | |||
CodeEditorComponent::~CodeEditorComponent() | |||
{ | |||
document.removeListener (pimpl); | |||
document.removeListener (pimpl.get()); | |||
} | |||
int CodeEditorComponent::getGutterSize() const noexcept | |||
@@ -126,7 +126,7 @@ void PreferencesPanel::setCurrentPage (const String& pageName) | |||
if (currentPage != nullptr) | |||
{ | |||
addAndMakeVisible (currentPage); | |||
addAndMakeVisible (currentPage.get()); | |||
currentPage->toBack(); | |||
resized(); | |||
} | |||
@@ -76,11 +76,11 @@ public: | |||
: ThreadPoolJob ("OpenGL Rendering"), | |||
context (c), component (comp) | |||
{ | |||
nativeContext = new NativeContext (component, pixFormat, contextToShare, | |||
c.useMultisampling, c.versionRequired); | |||
nativeContext.reset (new NativeContext (component, pixFormat, contextToShare, | |||
c.useMultisampling, c.versionRequired)); | |||
if (nativeContext->createdOk()) | |||
context.nativeContext = nativeContext; | |||
context.nativeContext = nativeContext.get(); | |||
else | |||
nativeContext.reset(); | |||
} | |||
@@ -95,7 +95,7 @@ public: | |||
{ | |||
if (nativeContext != nullptr) | |||
{ | |||
renderThread = new ThreadPool (1); | |||
renderThread.reset (new ThreadPool (1)); | |||
resume(); | |||
} | |||
} | |||
@@ -886,7 +886,7 @@ void OpenGLContext::attachTo (Component& component) | |||
if (getTargetComponent() != &component) | |||
{ | |||
detach(); | |||
attachment = new Attachment (*this, component); | |||
attachment.reset (new Attachment (*this, component)); | |||
} | |||
} | |||
@@ -202,7 +202,7 @@ bool OpenGLFrameBuffer::initialise (OpenGLContext& context, const Image& image) | |||
bool OpenGLFrameBuffer::initialise (OpenGLFrameBuffer& other) | |||
{ | |||
const Pimpl* const p = other.pimpl; | |||
auto* p = other.pimpl.get(); | |||
if (p == nullptr) | |||
{ | |||
@@ -242,7 +242,7 @@ void OpenGLFrameBuffer::saveAndRelease() | |||
{ | |||
if (pimpl != nullptr) | |||
{ | |||
savedState = new SavedState (*this, pimpl->width, pimpl->height); | |||
savedState.reset (new SavedState (*this, pimpl->width, pimpl->height)); | |||
pimpl.reset(); | |||
} | |||
} | |||
@@ -251,12 +251,13 @@ bool OpenGLFrameBuffer::reloadSavedCopy (OpenGLContext& context) | |||
{ | |||
if (savedState != nullptr) | |||
{ | |||
ScopedPointer<SavedState> state (savedState); | |||
ScopedPointer<SavedState> state; | |||
std::swap (state, savedState); | |||
if (state->restore (context, *this)) | |||
return true; | |||
savedState = state; | |||
std::swap (state, savedState); | |||
} | |||
return false; | |||
@@ -1587,7 +1587,7 @@ struct SavedState : public RenderingHelpers::SavedStateBase<SavedState> | |||
SavedState (const SavedState& other) | |||
: BaseClass (other), font (other.font), state (other.state), | |||
transparencyLayer (other.transparencyLayer), | |||
previousTarget (other.previousTarget.createCopy()) | |||
previousTarget (createCopyIfNotNull (other.previousTarget.get())) | |||
{} | |||
SavedState* beginTransparencyLayer (float opacity) | |||
@@ -1600,7 +1600,7 @@ struct SavedState : public RenderingHelpers::SavedStateBase<SavedState> | |||
state->flush(); | |||
s->transparencyLayer = Image (OpenGLImageType().create (Image::ARGB, clipBounds.getWidth(), clipBounds.getHeight(), true)); | |||
s->previousTarget = new Target (state->target); | |||
s->previousTarget.reset (new Target (state->target)); | |||
state->target = Target (state->target.context, *OpenGLImageType::getFrameBufferFrom (s->transparencyLayer), clipBounds.getPosition()); | |||
s->transparencyLayerAlpha = opacity; | |||
s->cloneClipIfMultiplyReferenced(); | |||
@@ -156,8 +156,8 @@ private: | |||
static void initialise (OpenGLFrameBuffer& frameBuffer, Image::BitmapData& bitmapData, int x, int y) | |||
{ | |||
DataReleaser* r = new DataReleaser (frameBuffer, x, y, bitmapData.width, bitmapData.height); | |||
bitmapData.dataReleaser = r; | |||
auto* r = new DataReleaser (frameBuffer, x, y, bitmapData.width, bitmapData.height); | |||
bitmapData.dataReleaser.reset (r); | |||
bitmapData.data = (uint8*) r->data.get(); | |||
bitmapData.lineStride = (bitmapData.width * bitmapData.pixelStride + 3) & ~3; | |||
@@ -54,7 +54,8 @@ struct OnlineUnlockForm::OverlayComp : public Component, | |||
if (hasCancelButton) | |||
{ | |||
addAndMakeVisible (cancelButton = new TextButton (TRANS ("Cancel"))); | |||
cancelButton.reset (new TextButton (TRANS ("Cancel"))); | |||
addAndMakeVisible (cancelButton.get()); | |||
cancelButton->addListener (this); | |||
} | |||
@@ -128,7 +129,7 @@ struct OnlineUnlockForm::OverlayComp : public Component, | |||
void buttonClicked (Button* button) override | |||
{ | |||
if (button == cancelButton) | |||
if (button == cancelButton.get()) | |||
{ | |||
form.status.userCancelled(); | |||
@@ -267,8 +268,8 @@ void OnlineUnlockForm::lookAndFeelChanged() | |||
void OnlineUnlockForm::showBubbleMessage (const String& text, Component& target) | |||
{ | |||
bubble = new BubbleMessageComponent (500); | |||
addChildComponent (bubble); | |||
bubble.reset (new BubbleMessageComponent (500)); | |||
addChildComponent (bubble.get()); | |||
AttributedString attString; | |||
attString.append (text, Font (16.0f)); | |||
@@ -123,7 +123,7 @@ struct KeyFileUtils | |||
const MemoryBlock mb (val.toMemoryBlock()); | |||
if (CharPointer_UTF8::isValidString (static_cast<const char*> (mb.getData()), (int) mb.getSize())) | |||
xml = XmlDocument::parse (mb.toString()); | |||
xml.reset (XmlDocument::parse (mb.toString())); | |||
} | |||
return xml != nullptr ? *xml : XmlElement("key"); | |||
@@ -57,7 +57,7 @@ String TracktionMarketplaceStatus::readReplyFromWebserver (const String& email, | |||
{ | |||
ScopedLock lock (streamCreationLock); | |||
stream = new WebInputStream (url, true); | |||
stream.reset (new WebInputStream (url, true)); | |||
} | |||
if (stream->connect (nullptr)) | |||
@@ -36,7 +36,7 @@ namespace juce | |||
//============================================================================== | |||
VideoComponent::VideoComponent() : pimpl (new Pimpl()) | |||
{ | |||
addAndMakeVisible (pimpl); | |||
addAndMakeVisible (pimpl.get()); | |||
} | |||
VideoComponent::~VideoComponent() | |||
@@ -46,14 +46,14 @@ VideoComponent::~VideoComponent() | |||
Result VideoComponent::load (const File& file) | |||
{ | |||
Result r = pimpl->load (file); | |||
auto r = pimpl->load (file); | |||
resized(); | |||
return r; | |||
} | |||
Result VideoComponent::load (const URL& url) | |||
{ | |||
Result r = pimpl->load (url); | |||
auto r = pimpl->load (url); | |||
resized(); | |||
return r; | |||
} | |||
@@ -86,11 +86,11 @@ float VideoComponent::getAudioVolume() const { return pimpl->getV | |||
void VideoComponent::resized() | |||
{ | |||
Rectangle<int> r = getLocalBounds(); | |||
auto r = getLocalBounds(); | |||
if (isVideoOpen() && ! r.isEmpty()) | |||
{ | |||
Rectangle<int> nativeSize = getVideoNativeSize(); | |||
auto nativeSize = getVideoNativeSize(); | |||
if (nativeSize.isEmpty()) | |||
{ | |||