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