| @@ -363,7 +363,7 @@ public: | |||||
| setPortraitOrientationEnabled (true); | setPortraitOrientationEnabled (true); | ||||
| } | } | ||||
| ~VideoDemo() | |||||
| ~VideoDemo() override | |||||
| { | { | ||||
| curVideoComp->onPlaybackStarted = nullptr; | curVideoComp->onPlaybackStarted = nullptr; | ||||
| curVideoComp->onPlaybackStopped = nullptr; | curVideoComp->onPlaybackStopped = nullptr; | ||||
| @@ -73,7 +73,7 @@ public: | |||||
| AndroidAudioIODevice (const String& deviceName) | AndroidAudioIODevice (const String& deviceName) | ||||
| : AudioIODevice (deviceName, javaAudioTypeName), | : AudioIODevice (deviceName, javaAudioTypeName), | ||||
| Thread ("audio"), | Thread ("audio"), | ||||
| minBufferSizeOut (0), minBufferSizeIn (0), callback (0), sampleRate (0), | |||||
| minBufferSizeOut (0), minBufferSizeIn (0), callback (nullptr), sampleRate (0), | |||||
| numClientInputChannels (0), numDeviceInputChannels (0), numDeviceInputChannelsAvailable (2), | numClientInputChannels (0), numDeviceInputChannels (0), numDeviceInputChannelsAvailable (2), | ||||
| numClientOutputChannels (0), numDeviceOutputChannels (0), | numClientOutputChannels (0), numDeviceOutputChannels (0), | ||||
| actualBufferSize (0), isRunning (false), | actualBufferSize (0), isRunning (false), | ||||
| @@ -100,7 +100,7 @@ public: | |||||
| << sampleRate << " Hz; input chans: " << numDeviceInputChannelsAvailable); | << sampleRate << " Hz; input chans: " << numDeviceInputChannelsAvailable); | ||||
| } | } | ||||
| ~AndroidAudioIODevice() | |||||
| ~AndroidAudioIODevice() override | |||||
| { | { | ||||
| close(); | close(); | ||||
| } | } | ||||
| @@ -196,7 +196,7 @@ public: | |||||
| (jint) (minBufferSizeOut * numDeviceOutputChannels * static_cast<int> (sizeof (int16))), MODE_STREAM))); | (jint) (minBufferSizeOut * numDeviceOutputChannels * static_cast<int> (sizeof (int16))), MODE_STREAM))); | ||||
| const bool supportsUnderrunCount = (getAndroidSDKVersion() >= 24); | const bool supportsUnderrunCount = (getAndroidSDKVersion() >= 24); | ||||
| getUnderrunCount = supportsUnderrunCount ? env->GetMethodID (AudioTrack, "getUnderrunCount", "()I") : 0; | |||||
| getUnderrunCount = supportsUnderrunCount ? env->GetMethodID (AudioTrack, "getUnderrunCount", "()I") : nullptr; | |||||
| int outputDeviceState = env->CallIntMethod (outputDevice, AudioTrack.getState); | int outputDeviceState = env->CallIntMethod (outputDevice, AudioTrack.getState); | ||||
| if (outputDeviceState > 0) | if (outputDeviceState > 0) | ||||
| @@ -282,11 +282,11 @@ public: | |||||
| BigInteger getActiveOutputChannels() const override { return activeOutputChans; } | BigInteger getActiveOutputChannels() const override { return activeOutputChans; } | ||||
| BigInteger getActiveInputChannels() const override { return activeInputChans; } | BigInteger getActiveInputChannels() const override { return activeInputChans; } | ||||
| String getLastError() override { return lastError; } | String getLastError() override { return lastError; } | ||||
| bool isPlaying() override { return isRunning && callback != 0; } | |||||
| bool isPlaying() override { return isRunning && callback != nullptr; } | |||||
| int getXRunCount() const noexcept override | int getXRunCount() const noexcept override | ||||
| { | { | ||||
| if (outputDevice != nullptr && getUnderrunCount != 0) | |||||
| if (outputDevice != nullptr && getUnderrunCount != nullptr) | |||||
| return getEnv()->CallIntMethod (outputDevice, getUnderrunCount); | return getEnv()->CallIntMethod (outputDevice, getUnderrunCount); | ||||
| return -1; | return -1; | ||||
| @@ -337,7 +337,7 @@ public: | |||||
| DBG ("Audio read under-run! " << numRead); | DBG ("Audio read under-run! " << numRead); | ||||
| } | } | ||||
| jshort* const src = env->GetShortArrayElements (audioBuffer, 0); | |||||
| jshort* const src = env->GetShortArrayElements (audioBuffer, nullptr); | |||||
| for (int chan = 0; chan < inputChannelBuffer.getNumChannels(); ++chan) | for (int chan = 0; chan < inputChannelBuffer.getNumChannels(); ++chan) | ||||
| { | { | ||||
| @@ -380,7 +380,7 @@ public: | |||||
| if (threadShouldExit()) | if (threadShouldExit()) | ||||
| break; | break; | ||||
| jshort* const dest = env->GetShortArrayElements (audioBuffer, 0); | |||||
| jshort* const dest = env->GetShortArrayElements (audioBuffer, nullptr); | |||||
| for (int chan = 0; chan < numDeviceOutputChannels; ++chan) | for (int chan = 0; chan < numDeviceOutputChannels; ++chan) | ||||
| { | { | ||||
| @@ -417,7 +417,7 @@ private: | |||||
| BigInteger activeOutputChans, activeInputChans; | BigInteger activeOutputChans, activeInputChans; | ||||
| GlobalRef outputDevice, inputDevice; | GlobalRef outputDevice, inputDevice; | ||||
| AudioBuffer<float> inputChannelBuffer, outputChannelBuffer; | AudioBuffer<float> inputChannelBuffer, outputChannelBuffer; | ||||
| jmethodID getUnderrunCount = 0; | |||||
| jmethodID getUnderrunCount = nullptr; | |||||
| void closeDevices() | void closeDevices() | ||||
| { | { | ||||
| @@ -340,7 +340,7 @@ public: | |||||
| auto status = (*config)->AcquireJavaProxy (config, /*SL_ANDROID_JAVA_PROXY_ROUTING*/1, | auto status = (*config)->AcquireJavaProxy (config, /*SL_ANDROID_JAVA_PROXY_ROUTING*/1, | ||||
| &audioRoutingJni); | &audioRoutingJni); | ||||
| if (status == SL_RESULT_SUCCESS && audioRoutingJni != 0) | |||||
| if (status == SL_RESULT_SUCCESS && audioRoutingJni != nullptr) | |||||
| javaProxy = GlobalRef (LocalRef<jobject>(getEnv()->NewLocalRef (audioRoutingJni))); | javaProxy = GlobalRef (LocalRef<jobject>(getEnv()->NewLocalRef (audioRoutingJni))); | ||||
| } | } | ||||
| } | } | ||||
| @@ -662,7 +662,7 @@ public: | |||||
| } | } | ||||
| const bool supportsUnderrunCount = (getAndroidSDKVersion() >= 24); | const bool supportsUnderrunCount = (getAndroidSDKVersion() >= 24); | ||||
| getUnderrunCount = supportsUnderrunCount ? getEnv()->GetMethodID (AudioTrack, "getUnderrunCount", "()I") : 0; | |||||
| getUnderrunCount = supportsUnderrunCount ? getEnv()->GetMethodID (AudioTrack, "getUnderrunCount", "()I") : nullptr; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -727,7 +727,7 @@ public: | |||||
| int getXRunCount() const noexcept override | int getXRunCount() const noexcept override | ||||
| { | { | ||||
| if (player != nullptr && player->javaProxy != nullptr && getUnderrunCount != 0) | |||||
| if (player != nullptr && player->javaProxy != nullptr && getUnderrunCount != nullptr) | |||||
| return getEnv()->CallIntMethod (player->javaProxy, getUnderrunCount); | return getEnv()->CallIntMethod (player->javaProxy, getUnderrunCount); | ||||
| return -1; | return -1; | ||||
| @@ -783,7 +783,7 @@ public: | |||||
| std::unique_ptr<OpenSLQueueRunnerPlayer<T>> player; | std::unique_ptr<OpenSLQueueRunnerPlayer<T>> player; | ||||
| std::unique_ptr<OpenSLQueueRunnerRecorder<T>> recorder; | std::unique_ptr<OpenSLQueueRunnerRecorder<T>> recorder; | ||||
| Atomic<int> guard; | Atomic<int> guard; | ||||
| jmethodID getUnderrunCount = 0; | |||||
| jmethodID getUnderrunCount = nullptr; | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -810,7 +810,7 @@ public: | |||||
| ignoreUnused (success); | ignoreUnused (success); | ||||
| } | } | ||||
| ~OpenSLAudioIODevice() | |||||
| ~OpenSLAudioIODevice() override | |||||
| { | { | ||||
| close(); | close(); | ||||
| } | } | ||||
| @@ -216,7 +216,7 @@ class iOSAudioIODeviceType : public AudioIODeviceType, | |||||
| { | { | ||||
| public: | public: | ||||
| iOSAudioIODeviceType(); | iOSAudioIODeviceType(); | ||||
| ~iOSAudioIODeviceType(); | |||||
| ~iOSAudioIODeviceType() override; | |||||
| void scanForDevices() override; | void scanForDevices() override; | ||||
| StringArray getDeviceNames (bool) const override; | StringArray getDeviceNames (bool) const override; | ||||
| @@ -262,7 +262,7 @@ struct iOSAudioIODevice::Pimpl : public AudioPlayHead, | |||||
| sessionHolder->activeDevices.add (this); | sessionHolder->activeDevices.add (this); | ||||
| } | } | ||||
| ~Pimpl() | |||||
| ~Pimpl() override | |||||
| { | { | ||||
| sessionHolder->activeDevices.removeFirstMatchingValue (this); | sessionHolder->activeDevices.removeFirstMatchingValue (this); | ||||
| @@ -421,7 +421,7 @@ public: | |||||
| enterModalState (true, exitCallback.release(), true); | enterModalState (true, exitCallback.release(), true); | ||||
| } | } | ||||
| ~BluetoothMidiSelectorOverlay() | |||||
| ~BluetoothMidiSelectorOverlay() override | |||||
| { | { | ||||
| AndroidBluetoothMidiInterface::startStopScan (false); | AndroidBluetoothMidiInterface::startStopScan (false); | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ public: | |||||
| enterModalState (true, exitCallback.release(), true); | enterModalState (true, exitCallback.release(), true); | ||||
| } | } | ||||
| ~BluetoothMidiSelectorOverlay() | |||||
| ~BluetoothMidiSelectorOverlay() override | |||||
| { | { | ||||
| nativeSelectorComponent.setView (nullptr); | nativeSelectorComponent.setView (nullptr); | ||||
| [controller release]; | [controller release]; | ||||
| @@ -126,7 +126,7 @@ bool BluetoothMidiDevicePairingDialogue::open (ModalComponentManager::Callback* | |||||
| bool BluetoothMidiDevicePairingDialogue::isAvailable() | bool BluetoothMidiDevicePairingDialogue::isAvailable() | ||||
| { | { | ||||
| return NSClassFromString ([NSString stringWithUTF8String: "CABTMIDICentralViewController"]) != nil; | |||||
| return NSClassFromString (@"CABTMIDICentralViewController") != nil; | |||||
| } | } | ||||
| } // namespace juce | } // namespace juce | ||||
| @@ -174,7 +174,7 @@ struct NativeFunction | |||||
| jassert (slash > 0); // The slash can't be the first character in this string! | jassert (slash > 0); // The slash can't be the first character in this string! | ||||
| jassert (nameAndArgTypes[slash + 1] != 0); // The slash must be followed by a return type character | jassert (nameAndArgTypes[slash + 1] != 0); // The slash must be followed by a return type character | ||||
| jassert (String (nameAndArgTypes).substring (0, slash).containsOnly ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_")); | jassert (String (nameAndArgTypes).substring (0, slash).containsOnly ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_")); | ||||
| jassert (! String ("0123456789").containsChar (nameAndArgTypes[0])); | |||||
| jassert (! String ("0123456789").containsChar (String (nameAndArgTypes)[0])); | |||||
| jassert (String (nameAndArgTypes).substring (slash + 1).containsOnly ("vifb")); | jassert (String (nameAndArgTypes).substring (slash + 1).containsOnly ("vifb")); | ||||
| jassert (String (nameAndArgTypes).substring (slash + 2).containsOnly ("ifb")); // arguments must only be of these types | jassert (String (nameAndArgTypes).substring (slash + 2).containsOnly ("ifb")); // arguments must only be of these types | ||||
| @@ -111,7 +111,7 @@ bool ArgumentList::Argument::isShortOption (char option) const | |||||
| { | { | ||||
| jassert (option != '-'); // this is probably not what you intended to pass in | jassert (option != '-'); // this is probably not what you intended to pass in | ||||
| return isShortOption() && text.containsChar (option); | |||||
| return isShortOption() && text.containsChar (String (option)[0]); | |||||
| } | } | ||||
| bool ArgumentList::Argument::operator== (StringRef wildcard) const | bool ArgumentList::Argument::operator== (StringRef wildcard) const | ||||
| @@ -89,7 +89,7 @@ static File getWellKnownFolder (const char* folderId) | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| auto fieldId = env->GetStaticFieldID (AndroidEnvironment, folderId, "Ljava/lang/String;"); | auto fieldId = env->GetStaticFieldID (AndroidEnvironment, folderId, "Ljava/lang/String;"); | ||||
| if (fieldId == 0) | |||||
| if (fieldId == nullptr) | |||||
| { | { | ||||
| // unknown field in environment | // unknown field in environment | ||||
| jassertfalse; | jassertfalse; | ||||
| @@ -194,7 +194,7 @@ public: | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| LocalRef<jobject> contentResolver (env->CallObjectMethod (getAppContext().get(), AndroidContext.getContentResolver)); | LocalRef<jobject> contentResolver (env->CallObjectMethod (getAppContext().get(), AndroidContext.getContentResolver)); | ||||
| if (contentResolver == 0) | |||||
| if (contentResolver == nullptr) | |||||
| return {}; | return {}; | ||||
| auto filename = getStringUsingDataColumn ("_display_name", env, uri, contentResolver); | auto filename = getStringUsingDataColumn ("_display_name", env, uri, contentResolver); | ||||
| @@ -298,7 +298,7 @@ private: | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| static jmethodID m = (env->GetMethodID (AndroidContext, "getExternalFilesDirs", | static jmethodID m = (env->GetMethodID (AndroidContext, "getExternalFilesDirs", | ||||
| "(Ljava/lang/String;)[Ljava/io/File;")); | "(Ljava/lang/String;)[Ljava/io/File;")); | ||||
| if (m == 0) | |||||
| if (m == nullptr) | |||||
| return {}; | return {}; | ||||
| auto paths = convertFileArray (LocalRef<jobject> (env->CallObjectMethod (getAppContext().get(), m, nullptr))); | auto paths = convertFileArray (LocalRef<jobject> (env->CallObjectMethod (getAppContext().get(), m, nullptr))); | ||||
| @@ -406,7 +406,7 @@ private: | |||||
| return {}; | return {}; | ||||
| } | } | ||||
| if (cursor == 0) | |||||
| if (cursor == nullptr) | |||||
| return {}; | return {}; | ||||
| String fileName; | String fileName; | ||||
| @@ -439,7 +439,7 @@ struct AndroidContentUriOutputStream : public OutputStream | |||||
| { | { | ||||
| } | } | ||||
| ~AndroidContentUriOutputStream() | |||||
| ~AndroidContentUriOutputStream() override | |||||
| { | { | ||||
| stream.callVoidMethod (AndroidOutputStream.close); | stream.callVoidMethod (AndroidOutputStream.close); | ||||
| } | } | ||||
| @@ -484,7 +484,7 @@ OutputStream* juce_CreateContentURIOutputStream (const URL& url) | |||||
| { | { | ||||
| auto stream = AndroidContentUriResolver::getStreamForContentUri (url, false); | auto stream = AndroidContentUriResolver::getStreamForContentUri (url, false); | ||||
| return (stream.get() != 0 ? new AndroidContentUriOutputStream (std::move (stream)) : nullptr); | |||||
| return (stream.get() != nullptr ? new AndroidContentUriOutputStream (std::move (stream)) : nullptr); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -676,7 +676,7 @@ private: | |||||
| void FileOutputStream::flushInternal() | void FileOutputStream::flushInternal() | ||||
| { | { | ||||
| if (fileHandle != 0) | |||||
| if (fileHandle != nullptr) | |||||
| { | { | ||||
| if (fsync (getFD (fileHandle)) == -1) | if (fsync (getFD (fileHandle)) == -1) | ||||
| status = getResultForErrno(); | status = getResultForErrno(); | ||||
| @@ -116,7 +116,7 @@ struct SystemJavaClassComparator | |||||
| //============================================================================== | //============================================================================== | ||||
| JNIClassBase::JNIClassBase (const char* cp, int classMinSDK, const void* bc, size_t n) | JNIClassBase::JNIClassBase (const char* cp, int classMinSDK, const void* bc, size_t n) | ||||
| : classPath (cp), byteCode (bc), byteCodeSize (n), minSDK (classMinSDK), classRef (0) | |||||
| : classPath (cp), byteCode (bc), byteCodeSize (n), minSDK (classMinSDK), classRef (nullptr) | |||||
| { | { | ||||
| SystemJavaClassComparator comparator; | SystemJavaClassComparator comparator; | ||||
| @@ -162,13 +162,13 @@ void JNIClassBase::initialise (JNIEnv* env) | |||||
| LocalRef<jobject> defaultClassLoader (env->CallStaticObjectMethod (JavaClassLoader, JavaClassLoader.getSystemClassLoader)); | LocalRef<jobject> defaultClassLoader (env->CallStaticObjectMethod (JavaClassLoader, JavaClassLoader.getSystemClassLoader)); | ||||
| tryLoadingClassWithClassLoader (env, defaultClassLoader.get()); | tryLoadingClassWithClassLoader (env, defaultClassLoader.get()); | ||||
| if (classRef == 0) | |||||
| if (classRef == nullptr) | |||||
| { | { | ||||
| for (auto& byteCodeLoader : byteCodeLoaders) | for (auto& byteCodeLoader : byteCodeLoaders) | ||||
| { | { | ||||
| tryLoadingClassWithClassLoader (env, byteCodeLoader.get()); | tryLoadingClassWithClassLoader (env, byteCodeLoader.get()); | ||||
| if (classRef != 0) | |||||
| if (classRef != nullptr) | |||||
| break; | break; | ||||
| } | } | ||||
| @@ -234,10 +234,10 @@ void JNIClassBase::initialise (JNIEnv* env) | |||||
| } | } | ||||
| } | } | ||||
| if (classRef == 0) | |||||
| if (classRef == nullptr) | |||||
| classRef = (jclass) env->NewGlobalRef (LocalRef<jobject> (env->FindClass (classPath))); | classRef = (jclass) env->NewGlobalRef (LocalRef<jobject> (env->FindClass (classPath))); | ||||
| jassert (classRef != 0); | |||||
| jassert (classRef != nullptr); | |||||
| initialiseFields (env); | initialiseFields (env); | ||||
| } | } | ||||
| } | } | ||||
| @@ -253,7 +253,7 @@ void JNIClassBase::tryLoadingClassWithClassLoader (JNIEnv* env, jobject classLoa | |||||
| if (jthrowable exception = env->ExceptionOccurred ()) | if (jthrowable exception = env->ExceptionOccurred ()) | ||||
| { | { | ||||
| env->ExceptionClear(); | env->ExceptionClear(); | ||||
| classObj = 0; | |||||
| classObj = nullptr; | |||||
| } | } | ||||
| // later versions of Android don't throw at all, so re-check the object | // later versions of Android don't throw at all, so re-check the object | ||||
| @@ -263,7 +263,7 @@ void JNIClassBase::tryLoadingClassWithClassLoader (JNIEnv* env, jobject classLoa | |||||
| void JNIClassBase::release (JNIEnv* env) | void JNIClassBase::release (JNIEnv* env) | ||||
| { | { | ||||
| if (classRef != 0) | |||||
| if (classRef != nullptr) | |||||
| env->DeleteGlobalRef (classRef); | env->DeleteGlobalRef (classRef); | ||||
| } | } | ||||
| @@ -284,28 +284,28 @@ void JNIClassBase::releaseAllClasses (JNIEnv* env) | |||||
| jmethodID JNIClassBase::resolveMethod (JNIEnv* env, const char* methodName, const char* params) | jmethodID JNIClassBase::resolveMethod (JNIEnv* env, const char* methodName, const char* params) | ||||
| { | { | ||||
| jmethodID m = env->GetMethodID (classRef, methodName, params); | jmethodID m = env->GetMethodID (classRef, methodName, params); | ||||
| jassert (m != 0); | |||||
| jassert (m != nullptr); | |||||
| return m; | return m; | ||||
| } | } | ||||
| jmethodID JNIClassBase::resolveStaticMethod (JNIEnv* env, const char* methodName, const char* params) | jmethodID JNIClassBase::resolveStaticMethod (JNIEnv* env, const char* methodName, const char* params) | ||||
| { | { | ||||
| jmethodID m = env->GetStaticMethodID (classRef, methodName, params); | jmethodID m = env->GetStaticMethodID (classRef, methodName, params); | ||||
| jassert (m != 0); | |||||
| jassert (m != nullptr); | |||||
| return m; | return m; | ||||
| } | } | ||||
| jfieldID JNIClassBase::resolveField (JNIEnv* env, const char* fieldName, const char* signature) | jfieldID JNIClassBase::resolveField (JNIEnv* env, const char* fieldName, const char* signature) | ||||
| { | { | ||||
| jfieldID f = env->GetFieldID (classRef, fieldName, signature); | jfieldID f = env->GetFieldID (classRef, fieldName, signature); | ||||
| jassert (f != 0); | |||||
| jassert (f != nullptr); | |||||
| return f; | return f; | ||||
| } | } | ||||
| jfieldID JNIClassBase::resolveStaticField (JNIEnv* env, const char* fieldName, const char* signature) | jfieldID JNIClassBase::resolveStaticField (JNIEnv* env, const char* fieldName, const char* signature) | ||||
| { | { | ||||
| jfieldID f = env->GetStaticFieldID (classRef, fieldName, signature); | jfieldID f = env->GetStaticFieldID (classRef, fieldName, signature); | ||||
| jassert (f != 0); | |||||
| jassert (f != nullptr); | |||||
| return f; | return f; | ||||
| } | } | ||||
| @@ -440,10 +440,10 @@ int getAndroidSDKVersion() | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| auto buildVersion = env->FindClass ("android/os/Build$VERSION"); | auto buildVersion = env->FindClass ("android/os/Build$VERSION"); | ||||
| jassert (buildVersion != 0); | |||||
| jassert (buildVersion != nullptr); | |||||
| auto sdkVersionField = env->GetStaticFieldID (buildVersion, "SDK_INT", "I"); | auto sdkVersionField = env->GetStaticFieldID (buildVersion, "SDK_INT", "I"); | ||||
| jassert (sdkVersionField != 0); | |||||
| jassert (sdkVersionField != nullptr); | |||||
| return env->GetStaticIntField (buildVersion, sdkVersionField); | return env->GetStaticIntField (buildVersion, sdkVersionField); | ||||
| }(); | }(); | ||||
| @@ -581,7 +581,7 @@ void FragmentOverlay::onRequestPermissionsResultNative (JNIEnv* env, jobject, jl | |||||
| if (n > 0) | if (n > 0) | ||||
| { | { | ||||
| auto* data = env->GetIntArrayElements (jGrantResults, 0); | |||||
| auto* data = env->GetIntArrayElements (jGrantResults, nullptr); | |||||
| for (int i = 0; i < n; ++i) | for (int i = 0; i < n; ++i) | ||||
| grantResults.add (data[i]); | grantResults.add (data[i]); | ||||
| @@ -31,18 +31,18 @@ template <typename JavaType> | |||||
| class LocalRef | class LocalRef | ||||
| { | { | ||||
| public: | public: | ||||
| explicit inline LocalRef() noexcept : obj (0) {} | |||||
| explicit inline LocalRef() noexcept : obj (nullptr) {} | |||||
| explicit inline LocalRef (JavaType o) noexcept : obj (o) {} | explicit inline LocalRef (JavaType o) noexcept : obj (o) {} | ||||
| inline LocalRef (const LocalRef& other) noexcept : obj (retain (other.obj)) {} | inline LocalRef (const LocalRef& other) noexcept : obj (retain (other.obj)) {} | ||||
| inline LocalRef (LocalRef&& other) noexcept : obj (0) { std::swap (obj, other.obj); } | |||||
| inline LocalRef (LocalRef&& other) noexcept : obj (nullptr) { std::swap (obj, other.obj); } | |||||
| ~LocalRef() { clear(); } | ~LocalRef() { clear(); } | ||||
| void clear() | void clear() | ||||
| { | { | ||||
| if (obj != 0) | |||||
| if (obj != nullptr) | |||||
| { | { | ||||
| getEnv()->DeleteLocalRef (obj); | getEnv()->DeleteLocalRef (obj); | ||||
| obj = 0; | |||||
| obj = nullptr; | |||||
| } | } | ||||
| } | } | ||||
| @@ -69,7 +69,7 @@ private: | |||||
| static JavaType retain (JavaType obj) | static JavaType retain (JavaType obj) | ||||
| { | { | ||||
| return obj == 0 ? 0 : (JavaType) getEnv()->NewLocalRef (obj); | |||||
| return obj == nullptr ? nullptr : (JavaType) getEnv()->NewLocalRef (obj); | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -77,21 +77,21 @@ private: | |||||
| class GlobalRef | class GlobalRef | ||||
| { | { | ||||
| public: | public: | ||||
| inline GlobalRef() noexcept : obj (0) {} | |||||
| inline GlobalRef() noexcept : obj (nullptr) {} | |||||
| inline explicit GlobalRef (const LocalRef<jobject>& o) : obj (retain (o.get(), getEnv())) {} | inline explicit GlobalRef (const LocalRef<jobject>& o) : obj (retain (o.get(), getEnv())) {} | ||||
| inline explicit GlobalRef (const LocalRef<jobject>& o, JNIEnv* env) : obj (retain (o.get(), env)) {} | inline explicit GlobalRef (const LocalRef<jobject>& o, JNIEnv* env) : obj (retain (o.get(), env)) {} | ||||
| inline GlobalRef (const GlobalRef& other) : obj (retain (other.obj, getEnv())) {} | inline GlobalRef (const GlobalRef& other) : obj (retain (other.obj, getEnv())) {} | ||||
| inline GlobalRef (GlobalRef && other) noexcept : obj (0) { std::swap (other.obj, obj); } | |||||
| inline GlobalRef (GlobalRef && other) noexcept : obj (nullptr) { std::swap (other.obj, obj); } | |||||
| ~GlobalRef() { clear(); } | ~GlobalRef() { clear(); } | ||||
| inline void clear() { if (obj != 0) clear (getEnv()); } | |||||
| inline void clear() { if (obj != nullptr) clear (getEnv()); } | |||||
| inline void clear (JNIEnv* env) | inline void clear (JNIEnv* env) | ||||
| { | { | ||||
| if (obj != 0) | |||||
| if (obj != nullptr) | |||||
| { | { | ||||
| env->DeleteGlobalRef (obj); | env->DeleteGlobalRef (obj); | ||||
| obj = 0; | |||||
| obj = nullptr; | |||||
| } | } | ||||
| } | } | ||||
| @@ -147,11 +147,11 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| jobject obj = 0; | |||||
| jobject obj = nullptr; | |||||
| static inline jobject retain (jobject obj, JNIEnv* env) | static inline jobject retain (jobject obj, JNIEnv* env) | ||||
| { | { | ||||
| return obj == 0 ? 0 : env->NewGlobalRef (obj); | |||||
| return obj == nullptr ? nullptr : env->NewGlobalRef (obj); | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -193,7 +193,7 @@ private: | |||||
| size_t byteCodeSize; | size_t byteCodeSize; | ||||
| int minSDK; | int minSDK; | ||||
| jclass classRef = 0; | |||||
| jclass classRef = nullptr; | |||||
| static Array<JNIClassBase*>& getClasses(); | static Array<JNIClassBase*>& getClasses(); | ||||
| void initialise (JNIEnv*); | void initialise (JNIEnv*); | ||||
| @@ -755,7 +755,7 @@ namespace | |||||
| { | { | ||||
| inline String juceString (JNIEnv* env, jstring s) | inline String juceString (JNIEnv* env, jstring s) | ||||
| { | { | ||||
| if (s == 0) | |||||
| if (s == nullptr) | |||||
| return {}; | return {}; | ||||
| const char* const utf8 = env->GetStringUTFChars (s, nullptr); | const char* const utf8 = env->GetStringUTFChars (s, nullptr); | ||||
| @@ -889,7 +889,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| struct SurfaceHolderCallback : AndroidInterfaceImplementer | struct SurfaceHolderCallback : AndroidInterfaceImplementer | ||||
| { | { | ||||
| virtual ~SurfaceHolderCallback() {} | |||||
| virtual ~SurfaceHolderCallback() override = default; | |||||
| virtual void surfaceChanged (LocalRef<jobject> holder, int format, int width, int height) = 0; | virtual void surfaceChanged (LocalRef<jobject> holder, int format, int width, int height) = 0; | ||||
| virtual void surfaceCreated (LocalRef<jobject> holder) = 0; | virtual void surfaceCreated (LocalRef<jobject> holder) = 0; | ||||
| @@ -297,7 +297,7 @@ public: | |||||
| const ScopedLock lock (createStreamLock); | const ScopedLock lock (createStreamLock); | ||||
| if (stream != 0) | |||||
| if (stream != nullptr) | |||||
| { | { | ||||
| stream.callVoidMethod (HTTPStream.release); | stream.callVoidMethod (HTTPStream.release); | ||||
| stream.clear(); | stream.clear(); | ||||
| @@ -333,7 +333,7 @@ public: | |||||
| if (isPost) | if (isPost) | ||||
| WebInputStream::createHeadersAndPostData (url, headers, postData); | WebInputStream::createHeadersAndPostData (url, headers, postData); | ||||
| jbyteArray postDataArray = 0; | |||||
| jbyteArray postDataArray = nullptr; | |||||
| if (postData.getSize() > 0) | if (postData.getSize() > 0) | ||||
| { | { | ||||
| @@ -348,7 +348,7 @@ public: | |||||
| jassert (Thread::getCurrentThread() != nullptr); | jassert (Thread::getCurrentThread() != nullptr); | ||||
| jintArray statusCodeArray = env->NewIntArray (1); | jintArray statusCodeArray = env->NewIntArray (1); | ||||
| jassert (statusCodeArray != 0); | |||||
| jassert (statusCodeArray != nullptr); | |||||
| { | { | ||||
| const ScopedLock lock (createStreamLock); | const ScopedLock lock (createStreamLock); | ||||
| @@ -367,18 +367,18 @@ public: | |||||
| javaString (httpRequest).get()))); | javaString (httpRequest).get()))); | ||||
| } | } | ||||
| if (stream != 0 && ! stream.callBooleanMethod (HTTPStream.connect)) | |||||
| if (stream != nullptr && ! stream.callBooleanMethod (HTTPStream.connect)) | |||||
| stream.clear(); | stream.clear(); | ||||
| jint* const statusCodeElements = env->GetIntArrayElements (statusCodeArray, 0); | |||||
| jint* const statusCodeElements = env->GetIntArrayElements (statusCodeArray, nullptr); | |||||
| statusCode = statusCodeElements[0]; | statusCode = statusCodeElements[0]; | ||||
| env->ReleaseIntArrayElements (statusCodeArray, statusCodeElements, 0); | env->ReleaseIntArrayElements (statusCodeArray, statusCodeElements, 0); | ||||
| env->DeleteLocalRef (statusCodeArray); | env->DeleteLocalRef (statusCodeArray); | ||||
| if (postDataArray != 0) | |||||
| if (postDataArray != nullptr) | |||||
| env->DeleteLocalRef (postDataArray); | env->DeleteLocalRef (postDataArray); | ||||
| if (stream != 0) | |||||
| if (stream != nullptr) | |||||
| { | { | ||||
| StringArray headerLines; | StringArray headerLines; | ||||
| @@ -547,12 +547,12 @@ static Array<InterfaceInfo> findIPAddresses (int dummySocket) | |||||
| if (item.ifr_addr.sa_family == AF_INET) | if (item.ifr_addr.sa_family == AF_INET) | ||||
| { | { | ||||
| InterfaceInfo info; | InterfaceInfo info; | ||||
| info.interfaceAddress = makeAddress ((const sockaddr_in*) &item.ifr_addr); | |||||
| info.interfaceAddress = makeAddress (reinterpret_cast<const sockaddr_in*> (&item.ifr_addr)); | |||||
| if (! info.interfaceAddress.isNull()) | if (! info.interfaceAddress.isNull()) | ||||
| { | { | ||||
| if (ioctl (dummySocket, SIOCGIFBRDADDR, &item) == 0) | if (ioctl (dummySocket, SIOCGIFBRDADDR, &item) == 0) | ||||
| info.broadcastAddress = makeAddress ((const sockaddr_in*) &item.ifr_broadaddr); | |||||
| info.broadcastAddress = makeAddress (reinterpret_cast<const sockaddr_in*> (&item.ifr_broadaddr)); | |||||
| result.add (info); | result.add (info); | ||||
| } | } | ||||
| @@ -95,7 +95,7 @@ struct PermissionsRequest | |||||
| struct PermissionsOverlay : FragmentOverlay | struct PermissionsOverlay : FragmentOverlay | ||||
| { | { | ||||
| PermissionsOverlay (CriticalSection& cs) : overlayGuard (cs) {} | PermissionsOverlay (CriticalSection& cs) : overlayGuard (cs) {} | ||||
| ~PermissionsOverlay() {} | |||||
| ~PermissionsOverlay() override = default; | |||||
| struct PermissionResult | struct PermissionResult | ||||
| { | { | ||||
| @@ -175,7 +175,7 @@ struct PermissionsOverlay : FragmentOverlay | |||||
| // this code should only be reached for SDKs >= 23, so this method should be | // this code should only be reached for SDKs >= 23, so this method should be | ||||
| // be available | // be available | ||||
| jassert(requestPermissionsMethodID != 0); | |||||
| jassert(requestPermissionsMethodID != nullptr); | |||||
| env->CallVoidMethod (getNativeHandle(), requestPermissionsMethodID, jPermissionsArray.get (), 0); | env->CallVoidMethod (getNativeHandle(), requestPermissionsMethodID, jPermissionsArray.get (), 0); | ||||
| } | } | ||||
| @@ -113,7 +113,7 @@ public: | |||||
| checkActivityIsMain (androidApkContext); | checkActivityIsMain (androidApkContext); | ||||
| } | } | ||||
| ~JuceActivityWatcher() | |||||
| ~JuceActivityWatcher() override | |||||
| { | { | ||||
| LocalRef<jobject> appContext (getAppContext()); | LocalRef<jobject> appContext (getAppContext()); | ||||
| @@ -425,7 +425,8 @@ struct BackgroundDownloadTask : public URL::DownloadTask | |||||
| DelegateClass::setState (delegate, this); | DelegateClass::setState (delegate, this); | ||||
| activeSessions.set (uniqueIdentifier, this); | activeSessions.set (uniqueIdentifier, this); | ||||
| NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:juceStringToNS (urlToUse.toString (true))]]; | |||||
| auto nsUrl = [NSURL URLWithString: juceStringToNS (urlToUse.toString (true))]; | |||||
| NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL: nsUrl]; | |||||
| if (shouldUsePostRequest) | if (shouldUsePostRequest) | ||||
| [request setHTTPMethod: @"POST"]; | [request setHTTPMethod: @"POST"]; | ||||
| @@ -76,7 +76,7 @@ struct AndroidMessageQueue : private Android::Runnable | |||||
| { | { | ||||
| } | } | ||||
| ~AndroidMessageQueue() | |||||
| ~AndroidMessageQueue() override | |||||
| { | { | ||||
| JUCE_ASSERT_MESSAGE_THREAD | JUCE_ASSERT_MESSAGE_THREAD | ||||
| clearSingletonInstance(); | clearSingletonInstance(); | ||||
| @@ -156,14 +156,14 @@ void MessageManager::stopDispatchLoop() | |||||
| { | { | ||||
| jmethodID quitMethod = env->GetMethodID (AndroidActivity, "finishAndRemoveTask", "()V"); | jmethodID quitMethod = env->GetMethodID (AndroidActivity, "finishAndRemoveTask", "()V"); | ||||
| if (quitMethod != 0) | |||||
| if (quitMethod != nullptr) | |||||
| { | { | ||||
| env->CallVoidMethod (activity.get(), quitMethod); | env->CallVoidMethod (activity.get(), quitMethod); | ||||
| return; | return; | ||||
| } | } | ||||
| quitMethod = env->GetMethodID (AndroidActivity, "finish", "()V"); | quitMethod = env->GetMethodID (AndroidActivity, "finish", "()V"); | ||||
| jassert (quitMethod != 0); | |||||
| jassert (quitMethod != nullptr); | |||||
| env->CallVoidMethod (activity.get(), quitMethod); | env->CallVoidMethod (activity.get(), quitMethod); | ||||
| } | } | ||||
| else | else | ||||
| @@ -195,7 +195,7 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| ~JuceAppLifecycle() | |||||
| ~JuceAppLifecycle() override | |||||
| { | { | ||||
| LocalRef<jobject> appContext (getAppContext()); | LocalRef<jobject> appContext (getAppContext()); | ||||
| @@ -43,6 +43,7 @@ namespace jpeglibNamespace | |||||
| #pragma clang diagnostic push | #pragma clang diagnostic push | ||||
| #pragma clang diagnostic ignored "-Wconversion" | #pragma clang diagnostic ignored "-Wconversion" | ||||
| #pragma clang diagnostic ignored "-Wdeprecated-register" | #pragma clang diagnostic ignored "-Wdeprecated-register" | ||||
| #pragma clang diagnostic ignored "-Wcast-align" | |||||
| #if __has_warning("-Wzero-as-null-pointer-constant") | #if __has_warning("-Wzero-as-null-pointer-constant") | ||||
| #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" | ||||
| #endif | #endif | ||||
| @@ -374,7 +374,7 @@ public: | |||||
| { | { | ||||
| et = new EdgeTable (bounds); | et = new EdgeTable (bounds); | ||||
| jint* const maskDataElements = env->GetIntArrayElements ((jintArray) cachedRenderArray.get(), 0); | |||||
| jint* const maskDataElements = env->GetIntArrayElements ((jintArray) cachedRenderArray.get(), nullptr); | |||||
| const jint* mask = maskDataElements; | const jint* mask = maskDataElements; | ||||
| for (int y = bounds.getY(); y < bounds.getBottom(); ++y) | for (int y = bounds.getY(); y < bounds.getBottom(); ++y) | ||||
| @@ -494,7 +494,7 @@ private: | |||||
| String key; | String key; | ||||
| { | { | ||||
| LocalRef<jobject> digest (env->CallStaticObjectMethod (JavaMessageDigest, JavaMessageDigest.getInstance, javaString("MD5").get())); | LocalRef<jobject> digest (env->CallStaticObjectMethod (JavaMessageDigest, JavaMessageDigest.getInstance, javaString("MD5").get())); | ||||
| LocalRef<jbyteArray> bytes(env->NewByteArray(size)); | |||||
| LocalRef<jbyteArray> bytes(env->NewByteArray ((int) size)); | |||||
| jboolean ignore; | jboolean ignore; | ||||
| auto* jbytes = env->GetByteArrayElements(bytes.get(), &ignore); | auto* jbytes = env->GetByteArrayElements(bytes.get(), &ignore); | ||||
| @@ -44,7 +44,7 @@ public: | |||||
| startThread(); | startThread(); | ||||
| } | } | ||||
| ~PrepareImagesThread() | |||||
| ~PrepareImagesThread() override | |||||
| { | { | ||||
| signalThreadShouldExit(); | signalThreadShouldExit(); | ||||
| waitForThreadToExit (10000); | waitForThreadToExit (10000); | ||||
| @@ -98,7 +98,7 @@ public: | |||||
| startThread(); | startThread(); | ||||
| } | } | ||||
| ~PrepareDataThread() | |||||
| ~PrepareDataThread() override | |||||
| { | { | ||||
| signalThreadShouldExit(); | signalThreadShouldExit(); | ||||
| waitForThreadToExit (10000); | waitForThreadToExit (10000); | ||||
| @@ -35,7 +35,7 @@ public: | |||||
| int getIndexOfTouch (ComponentPeer* peer, IDType touchID) | int getIndexOfTouch (ComponentPeer* peer, IDType touchID) | ||||
| { | { | ||||
| jassert (touchID != 0); // need to rethink this if IDs can be 0! | |||||
| jassert (touchID != nullptr); // need to rethink this if IDs can be 0! | |||||
| TouchInfo info {touchID, peer}; | TouchInfo info {touchID, peer}; | ||||
| int touchIndex = currentTouches.indexOf (info); | int touchIndex = currentTouches.indexOf (info); | ||||
| @@ -64,7 +64,7 @@ public: | |||||
| bool areAnyTouchesActive() const noexcept | bool areAnyTouchesActive() const noexcept | ||||
| { | { | ||||
| for (auto& t : currentTouches) | for (auto& t : currentTouches) | ||||
| if (t.touchId != 0) | |||||
| if (t.touchId != nullptr) | |||||
| return true; | return true; | ||||
| return false; | return false; | ||||
| @@ -74,14 +74,14 @@ public: | |||||
| { | { | ||||
| for (auto& t : currentTouches) | for (auto& t : currentTouches) | ||||
| if (t.owner == peer) | if (t.owner == peer) | ||||
| t.touchId = 0; | |||||
| t.touchId = nullptr; | |||||
| } | } | ||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| struct TouchInfo | struct TouchInfo | ||||
| { | { | ||||
| TouchInfo() noexcept : touchId (0), owner (nullptr) {} | |||||
| TouchInfo() noexcept : touchId (nullptr), owner (nullptr) {} | |||||
| TouchInfo (IDType idToUse, ComponentPeer* peer) noexcept : touchId (idToUse), owner (peer) {} | TouchInfo (IDType idToUse, ComponentPeer* peer) noexcept : touchId (idToUse), owner (peer) {} | ||||
| TouchInfo (const TouchInfo&) = default; | TouchInfo (const TouchInfo&) = default; | ||||
| @@ -135,7 +135,7 @@ public: | |||||
| resultColumns.get())))) | resultColumns.get())))) | ||||
| { | { | ||||
| // the content provider must be created first | // the content provider must be created first | ||||
| jassert (contentProvider.get() != 0); | |||||
| jassert (contentProvider.get() != nullptr); | |||||
| } | } | ||||
| jobject getNativeCursor() { return cursor.get(); } | jobject getNativeCursor() { return cursor.get(); } | ||||
| @@ -199,7 +199,7 @@ public: | |||||
| open | access | closeWrite | closeNoWrite)))) | open | access | closeWrite | closeNoWrite)))) | ||||
| { | { | ||||
| // the content provider must be created first | // the content provider must be created first | ||||
| jassert (contentProvider.get() != 0); | |||||
| jassert (contentProvider.get() != nullptr); | |||||
| env->CallVoidMethod (fileObserver, JuceContentProviderFileObserver.startWatching); | env->CallVoidMethod (fileObserver, JuceContentProviderFileObserver.startWatching); | ||||
| } | } | ||||
| @@ -284,7 +284,7 @@ public: | |||||
| startThread(); | startThread(); | ||||
| } | } | ||||
| ~AndroidContentSharerPrepareFilesThread() | |||||
| ~AndroidContentSharerPrepareFilesThread() override | |||||
| { | { | ||||
| signalThreadShouldExit(); | signalThreadShouldExit(); | ||||
| waitForThreadToExit (10000); | waitForThreadToExit (10000); | ||||
| @@ -307,7 +307,7 @@ private: | |||||
| ~StreamCloser() | ~StreamCloser() | ||||
| { | { | ||||
| if (stream.get() != 0) | |||||
| if (stream.get() != nullptr) | |||||
| getEnv()->CallVoidMethod (stream, JavaCloseable.close); | getEnv()->CallVoidMethod (stream, JavaCloseable.close); | ||||
| } | } | ||||
| @@ -471,7 +471,7 @@ public: | |||||
| { | { | ||||
| } | } | ||||
| ~ContentSharerNativeImpl() | |||||
| ~ContentSharerNativeImpl() override | |||||
| { | { | ||||
| masterReference.clear(); | masterReference.clear(); | ||||
| } | } | ||||
| @@ -586,7 +586,7 @@ public: | |||||
| return cursor->getNativeCursor(); | return cursor->getNativeCursor(); | ||||
| auto values = LocalRef<jobjectArray> (env->NewObjectArray ((jsize) resultColumns.size(), | auto values = LocalRef<jobjectArray> (env->NewObjectArray ((jsize) resultColumns.size(), | ||||
| JavaObject, 0)); | |||||
| JavaObject, nullptr)); | |||||
| for (int i = 0; i < resultColumns.size(); ++i) | for (int i = 0; i < resultColumns.size(); ++i) | ||||
| { | { | ||||
| @@ -134,7 +134,7 @@ public: | |||||
| jassertfalse; // there can only be a single file chooser | jassertfalse; // there can only be a single file chooser | ||||
| } | } | ||||
| ~Native() | |||||
| ~Native() override | |||||
| { | { | ||||
| masterReference.clear(); | masterReference.clear(); | ||||
| currentFileChooser = nullptr; | currentFileChooser = nullptr; | ||||
| @@ -318,7 +318,7 @@ public: | |||||
| handleFocusGain(); | handleFocusGain(); | ||||
| } | } | ||||
| ~AndroidComponentPeer() | |||||
| ~AndroidComponentPeer() override | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| @@ -466,7 +466,7 @@ public: | |||||
| LocalRef<jintArray> position (env->NewIntArray (2)); | LocalRef<jintArray> position (env->NewIntArray (2)); | ||||
| env->CallVoidMethod (view.get(), AndroidView.getLocationOnScreen, position.get()); | env->CallVoidMethod (view.get(), AndroidView.getLocationOnScreen, position.get()); | ||||
| jint* const screenPosition = env->GetIntArrayElements (position.get(), 0); | |||||
| jint* const screenPosition = env->GetIntArrayElements (position.get(), nullptr); | |||||
| Point<int> pos (screenPosition[0], screenPosition[1]); | Point<int> pos (screenPosition[0], screenPosition[1]); | ||||
| env->ReleaseIntArrayElements (position.get(), screenPosition, 0); | env->ReleaseIntArrayElements (position.get(), screenPosition, 0); | ||||
| @@ -774,7 +774,7 @@ public: | |||||
| return; | return; | ||||
| } | } | ||||
| if (jint* dest = env->GetIntArrayElements ((jintArray) buffer.get(), 0)) | |||||
| if (jint* dest = env->GetIntArrayElements ((jintArray) buffer.get(), nullptr)) | |||||
| { | { | ||||
| { | { | ||||
| Image temp (new PreallocatedImage (clip.getWidth(), clip.getHeight(), | Image temp (new PreallocatedImage (clip.getWidth(), clip.getHeight(), | ||||
| @@ -936,7 +936,7 @@ private: | |||||
| zeromem (data_, static_cast<size_t> (width * height) * sizeof (jint)); | zeromem (data_, static_cast<size_t> (width * height) * sizeof (jint)); | ||||
| } | } | ||||
| ~PreallocatedImage() | |||||
| ~PreallocatedImage() override | |||||
| { | { | ||||
| if (hasAlpha) | if (hasAlpha) | ||||
| { | { | ||||
| @@ -970,7 +970,7 @@ private: | |||||
| ImagePixelData::Ptr clone() override | ImagePixelData::Ptr clone() override | ||||
| { | { | ||||
| auto s = new PreallocatedImage (width, height, 0, hasAlpha); | |||||
| auto s = new PreallocatedImage (width, height, nullptr, hasAlpha); | |||||
| s->allocatedData.malloc (sizeof (jint) * static_cast<size_t> (width * height)); | s->allocatedData.malloc (sizeof (jint) * static_cast<size_t> (width * height)); | ||||
| s->data = s->allocatedData; | s->data = s->allocatedData; | ||||
| memcpy (s->data, data, sizeof (jint) * static_cast<size_t> (width * height)); | memcpy (s->data, data, sizeof (jint) * static_cast<size_t> (width * height)); | ||||
| @@ -1027,11 +1027,11 @@ Desktop::DisplayOrientation Desktop::getCurrentOrientation() const | |||||
| LocalRef<jobject> windowManager = LocalRef<jobject> (env->CallObjectMethod (getAppContext().get(), AndroidContext.getSystemService, windowServiceString.get())); | LocalRef<jobject> windowManager = LocalRef<jobject> (env->CallObjectMethod (getAppContext().get(), AndroidContext.getSystemService, windowServiceString.get())); | ||||
| if (windowManager.get() != 0) | |||||
| if (windowManager.get() != nullptr) | |||||
| { | { | ||||
| LocalRef<jobject> display = LocalRef<jobject> (env->CallObjectMethod (windowManager, AndroidWindowManager.getDefaultDisplay)); | LocalRef<jobject> display = LocalRef<jobject> (env->CallObjectMethod (windowManager, AndroidWindowManager.getDefaultDisplay)); | ||||
| if (display.get() != 0) | |||||
| if (display.get() != nullptr) | |||||
| { | { | ||||
| int rotation = env->CallIntMethod (display, AndroidDisplay.getRotation); | int rotation = env->CallIntMethod (display, AndroidDisplay.getRotation); | ||||
| @@ -1414,7 +1414,7 @@ void Displays::findDisplays (float masterScale) | |||||
| jmethodID getRealMetricsMethod = env->GetMethodID (AndroidDisplay, "getRealMetrics", "(Landroid/util/DisplayMetrics;)V"); | jmethodID getRealMetricsMethod = env->GetMethodID (AndroidDisplay, "getRealMetrics", "(Landroid/util/DisplayMetrics;)V"); | ||||
| if (getRealMetricsMethod != 0) | |||||
| if (getRealMetricsMethod != nullptr) | |||||
| env->CallVoidMethod (display.get(), getRealMetricsMethod, displayMetrics.get()); | env->CallVoidMethod (display.get(), getRealMetricsMethod, displayMetrics.get()); | ||||
| else | else | ||||
| env->CallVoidMethod (display.get(), AndroidDisplay.getMetrics, displayMetrics.get()); | env->CallVoidMethod (display.get(), AndroidDisplay.getMetrics, displayMetrics.get()); | ||||
| @@ -38,7 +38,7 @@ public: | |||||
| popoverDelegate.reset ([cls.createInstance() init]); | popoverDelegate.reset ([cls.createInstance() init]); | ||||
| } | } | ||||
| ~ContentSharerNativeImpl() | |||||
| ~ContentSharerNativeImpl() override | |||||
| { | { | ||||
| exitModalState (0); | exitModalState (0); | ||||
| } | } | ||||
| @@ -115,7 +115,7 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| ~Native() | |||||
| ~Native() override | |||||
| { | { | ||||
| exitModalState (0); | exitModalState (0); | ||||
| } | } | ||||
| @@ -177,7 +177,7 @@ class UIViewComponentPeer : public ComponentPeer, | |||||
| { | { | ||||
| public: | public: | ||||
| UIViewComponentPeer (Component&, int windowStyleFlags, UIView* viewToAttachTo); | UIViewComponentPeer (Component&, int windowStyleFlags, UIView* viewToAttachTo); | ||||
| ~UIViewComponentPeer(); | |||||
| ~UIViewComponentPeer() override; | |||||
| //============================================================================== | //============================================================================== | ||||
| void* getNativeHandle() const override { return view; } | void* getNativeHandle() const override { return view; } | ||||
| @@ -50,7 +50,7 @@ public: | |||||
| AndroidViewComponent(); | AndroidViewComponent(); | ||||
| /** Destructor. */ | /** Destructor. */ | ||||
| ~AndroidViewComponent(); | |||||
| ~AndroidViewComponent() override; | |||||
| /** Assigns a View to this peer. | /** Assigns a View to this peer. | ||||
| @@ -50,7 +50,7 @@ public: | |||||
| UIViewComponent(); | UIViewComponent(); | ||||
| /** Destructor. */ | /** Destructor. */ | ||||
| ~UIViewComponent(); | |||||
| ~UIViewComponent() override; | |||||
| /** Assigns an UIView to this peer. | /** Assigns an UIView to this peer. | ||||
| @@ -39,7 +39,7 @@ public: | |||||
| componentPeerChanged(); | componentPeerChanged(); | ||||
| } | } | ||||
| ~Pimpl() | |||||
| ~Pimpl() override | |||||
| { | { | ||||
| removeFromParent(); | removeFromParent(); | ||||
| } | } | ||||
| @@ -123,7 +123,7 @@ private: | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| auto parentView = env->CallObjectMethod (view, AndroidView.getParent); | auto parentView = env->CallObjectMethod (view, AndroidView.getParent); | ||||
| if (parentView != 0) | |||||
| if (parentView != nullptr) | |||||
| { | { | ||||
| // Assuming a parent is always of ViewGroup type | // Assuming a parent is always of ViewGroup type | ||||
| env->CallVoidMethod (parentView, AndroidViewGroup.removeView, view.get()); | env->CallVoidMethod (parentView, AndroidViewGroup.removeView, view.get()); | ||||
| @@ -280,7 +280,7 @@ struct PushNotifications::Pimpl | |||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| if (notificationManager.get() != 0) | |||||
| if (notificationManager.get() != nullptr) | |||||
| return env->CallBooleanMethod (notificationManager, NotificationManagerApi24.areNotificationsEnabled); | return env->CallBooleanMethod (notificationManager, NotificationManagerApi24.areNotificationsEnabled); | ||||
| } | } | ||||
| @@ -297,7 +297,7 @@ struct PushNotifications::Pimpl | |||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| if (notificationManager.get() != 0) | |||||
| if (notificationManager.get() != nullptr) | |||||
| { | { | ||||
| auto notification = juceNotificationToJavaNotification (n); | auto notification = juceNotificationToJavaNotification (n); | ||||
| @@ -317,10 +317,9 @@ struct PushNotifications::Pimpl | |||||
| Array<PushNotifications::Notification> notifications; | Array<PushNotifications::Notification> notifications; | ||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| jassert (notificationManager != nullptr); | |||||
| jassert (notificationManager.get() != 0); | |||||
| if (notificationManager.get() != 0) | |||||
| if (notificationManager.get() != nullptr) | |||||
| { | { | ||||
| auto statusBarNotifications = LocalRef<jobjectArray> ((jobjectArray)env->CallObjectMethod (notificationManager, | auto statusBarNotifications = LocalRef<jobjectArray> ((jobjectArray)env->CallObjectMethod (notificationManager, | ||||
| NotificationManagerApi23.getActiveNotifications)); | NotificationManagerApi23.getActiveNotifications)); | ||||
| @@ -389,7 +388,7 @@ struct PushNotifications::Pimpl | |||||
| auto remoteInputResult = LocalRef<jobject> (env->CallStaticObjectMethod (RemoteInput, RemoteInput.getResultsFromIntent, intent.get())); | auto remoteInputResult = LocalRef<jobject> (env->CallStaticObjectMethod (RemoteInput, RemoteInput.getResultsFromIntent, intent.get())); | ||||
| String responseString; | String responseString; | ||||
| if (remoteInputResult.get() != 0) | |||||
| if (remoteInputResult.get() == nullptr) | |||||
| { | { | ||||
| auto charSequence = LocalRef<jobject> (env->CallObjectMethod (remoteInputResult, AndroidBundle.getCharSequence, resultKeyString.get())); | auto charSequence = LocalRef<jobject> (env->CallObjectMethod (remoteInputResult, AndroidBundle.getCharSequence, resultKeyString.get())); | ||||
| auto responseStringRef = LocalRef<jstring> ((jstring) env->CallObjectMethod (charSequence, JavaCharSequence.toString)); | auto responseStringRef = LocalRef<jstring> ((jstring) env->CallObjectMethod (charSequence, JavaCharSequence.toString)); | ||||
| @@ -416,7 +415,7 @@ struct PushNotifications::Pimpl | |||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| if (notificationManager.get() != 0) | |||||
| if (notificationManager.get() != nullptr) | |||||
| env->CallVoidMethod (notificationManager.get(), NotificationManagerBase.cancelAll); | env->CallVoidMethod (notificationManager.get(), NotificationManagerBase.cancelAll); | ||||
| } | } | ||||
| @@ -426,7 +425,7 @@ struct PushNotifications::Pimpl | |||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| if (notificationManager.get() != 0) | |||||
| if (notificationManager.get() != nullptr) | |||||
| { | { | ||||
| auto tag = javaString (identifier); | auto tag = javaString (identifier); | ||||
| const int id = 0; | const int id = 0; | ||||
| @@ -635,12 +634,12 @@ struct PushNotifications::Pimpl | |||||
| LocalRef<jobject> context (getMainActivity()); | LocalRef<jobject> context (getMainActivity()); | ||||
| jclass builderClass = env->FindClass ("android/app/Notification$Builder"); | jclass builderClass = env->FindClass ("android/app/Notification$Builder"); | ||||
| jassert (builderClass != 0); | |||||
| jassert (builderClass != nullptr); | |||||
| if (builderClass == 0) | |||||
| return LocalRef<jobject> (0); | |||||
| if (builderClass == nullptr) | |||||
| return LocalRef<jobject> (nullptr); | |||||
| jmethodID builderConstructor = 0; | |||||
| jmethodID builderConstructor = nullptr; | |||||
| const bool apiAtLeast26 = (getAndroidSDKVersion() >= 26); | const bool apiAtLeast26 = (getAndroidSDKVersion() >= 26); | ||||
| @@ -649,10 +648,10 @@ struct PushNotifications::Pimpl | |||||
| else | else | ||||
| builderConstructor = env->GetMethodID (builderClass, "<init>", "(Landroid/content/Context;)V"); | builderConstructor = env->GetMethodID (builderClass, "<init>", "(Landroid/content/Context;)V"); | ||||
| jassert (builderConstructor != 0); | |||||
| jassert (builderConstructor != nullptr); | |||||
| if (builderConstructor == 0) | |||||
| return LocalRef<jobject> (0); | |||||
| if (builderConstructor == nullptr) | |||||
| return LocalRef<jobject> (nullptr); | |||||
| if (apiAtLeast26) | if (apiAtLeast26) | ||||
| return LocalRef<jobject> (env->NewObject (builderClass, builderConstructor, | return LocalRef<jobject> (env->NewObject (builderClass, builderConstructor, | ||||
| @@ -754,7 +753,7 @@ struct PushNotifications::Pimpl | |||||
| { | { | ||||
| auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | ||||
| jlong* elements = env->GetLongArrayElements (array, 0); | |||||
| jlong* elements = env->GetLongArrayElements (array, nullptr); | |||||
| for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||||
| elements[i] = (jlong) n.vibrationPattern[i]; | elements[i] = (jlong) n.vibrationPattern[i]; | ||||
| @@ -808,7 +807,7 @@ struct PushNotifications::Pimpl | |||||
| { | { | ||||
| auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | ||||
| jlong* elements = env->GetLongArrayElements (array, 0); | |||||
| jlong* elements = env->GetLongArrayElements (array, nullptr); | |||||
| for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||||
| elements[i] = (jlong) n.vibrationPattern[i]; | elements[i] = (jlong) n.vibrationPattern[i]; | ||||
| @@ -993,7 +992,7 @@ struct PushNotifications::Pimpl | |||||
| const int size = action.allowedResponses.size(); | const int size = action.allowedResponses.size(); | ||||
| auto array = LocalRef<jobjectArray> (env->NewObjectArray (size, env->FindClass ("java/lang/String"), 0)); | |||||
| auto array = LocalRef<jobjectArray> (env->NewObjectArray (size, env->FindClass ("java/lang/String"), nullptr)); | |||||
| for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||||
| { | { | ||||
| @@ -1123,7 +1122,7 @@ struct PushNotifications::Pimpl | |||||
| PushNotifications::Notification n; | PushNotifications::Notification n; | ||||
| if (bundle.get() != 0) | |||||
| if (bundle.get() != nullptr) | |||||
| { | { | ||||
| n.identifier = getStringFromBundle (env, "identifier", bundle); | n.identifier = getStringFromBundle (env, "identifier", bundle); | ||||
| n.title = getStringFromBundle (env, "title", bundle); | n.title = getStringFromBundle (env, "title", bundle); | ||||
| @@ -1239,7 +1238,7 @@ struct PushNotifications::Pimpl | |||||
| const int size = env->GetArrayLength (array.get()); | const int size = env->GetArrayLength (array.get()); | ||||
| jlong* elements = env->GetLongArrayElements (array.get(), 0); | |||||
| jlong* elements = env->GetLongArrayElements (array.get(), nullptr); | |||||
| Array<int> resultArray; | Array<int> resultArray; | ||||
| @@ -1280,7 +1279,7 @@ struct PushNotifications::Pimpl | |||||
| static var bundleToVar (const LocalRef<jobject>& bundle) | static var bundleToVar (const LocalRef<jobject>& bundle) | ||||
| { | { | ||||
| if (bundle.get() != 0) | |||||
| if (bundle.get() == nullptr) | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| @@ -1400,7 +1399,7 @@ struct PushNotifications::Pimpl | |||||
| propertiesDynamicObject->setProperty ("titleLocalizationKey", juceString (titleLocalizationKey.get())); | propertiesDynamicObject->setProperty ("titleLocalizationKey", juceString (titleLocalizationKey.get())); | ||||
| propertiesDynamicObject->setProperty ("bodyLocalizationArgs", javaStringArrayToJuce (bodyLocalizationArgs)); | propertiesDynamicObject->setProperty ("bodyLocalizationArgs", javaStringArrayToJuce (bodyLocalizationArgs)); | ||||
| propertiesDynamicObject->setProperty ("titleLocalizationArgs", javaStringArrayToJuce (titleLocalizationArgs)); | propertiesDynamicObject->setProperty ("titleLocalizationArgs", javaStringArrayToJuce (titleLocalizationArgs)); | ||||
| propertiesDynamicObject->setProperty ("link", link.get() != 0 ? juceString ((jstring) env->CallObjectMethod (link, AndroidUri.toString)) : String()); | |||||
| propertiesDynamicObject->setProperty ("link", link.get() == nullptr ? juceString ((jstring) env->CallObjectMethod (link, AndroidUri.toString)) : String()); | |||||
| } | } | ||||
| n.properties = var (propertiesDynamicObject.get()); | n.properties = var (propertiesDynamicObject.get()); | ||||
| @@ -1418,9 +1417,9 @@ struct PushNotifications::Pimpl | |||||
| auto notificationManager = getNotificationManager(); | auto notificationManager = getNotificationManager(); | ||||
| jassert (notificationManager.get() != 0); | |||||
| jassert (notificationManager.get() != nullptr); | |||||
| if (notificationManager.get() == 0) | |||||
| if (notificationManager.get() == nullptr) | |||||
| return; | return; | ||||
| for (const auto& g : groups) | for (const auto& g : groups) | ||||
| @@ -1463,7 +1462,7 @@ struct PushNotifications::Pimpl | |||||
| if (size > 0) | if (size > 0) | ||||
| { | { | ||||
| auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | auto array = LocalRef<jlongArray> (env->NewLongArray (size)); | ||||
| jlong* elements = env->GetLongArrayElements (array, 0); | |||||
| jlong* elements = env->GetLongArrayElements (array, nullptr); | |||||
| for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||||
| elements[i] = (jlong) c.vibrationPattern[i]; | elements[i] = (jlong) c.vibrationPattern[i]; | ||||
| @@ -1527,7 +1526,7 @@ struct PushNotifications::Pimpl | |||||
| auto categories = LocalRef<jobject> (env->CallObjectMethod (intent, AndroidIntent.getCategories)); | auto categories = LocalRef<jobject> (env->CallObjectMethod (intent, AndroidIntent.getCategories)); | ||||
| int categoriesNum = categories != 0 | |||||
| int categoriesNum = categories != nullptr | |||||
| ? env->CallIntMethod (categories, JavaSet.size) | ? env->CallIntMethod (categories, JavaSet.size) | ||||
| : 0; | : 0; | ||||
| @@ -1542,7 +1541,7 @@ struct PushNotifications::Pimpl | |||||
| auto extras = LocalRef<jobject> (env->CallObjectMethod (intent, AndroidIntent.getExtras)); | auto extras = LocalRef<jobject> (env->CallObjectMethod (intent, AndroidIntent.getExtras)); | ||||
| if (extras == 0) | |||||
| if (extras == nullptr) | |||||
| return false; | return false; | ||||
| return env->CallBooleanMethod (extras, AndroidBundle.containsKey, javaString ("google.sent_time").get()) | return env->CallBooleanMethod (extras, AndroidBundle.containsKey, javaString ("google.sent_time").get()) | ||||
| @@ -424,7 +424,7 @@ private: | |||||
| startThread(); | startThread(); | ||||
| } | } | ||||
| ~ConnectionThread() | |||||
| ~ConnectionThread() override | |||||
| { | { | ||||
| webInputStream->cancel(); | webInputStream->cancel(); | ||||
| signalThreadShouldExit(); | signalThreadShouldExit(); | ||||
| @@ -559,11 +559,11 @@ private: | |||||
| LocalRef<jclass> responseClass (env->FindClass ("android/webkit/WebResourceResponse")); | LocalRef<jclass> responseClass (env->FindClass ("android/webkit/WebResourceResponse")); | ||||
| if (responseClass != 0) | |||||
| if (responseClass != nullptr) | |||||
| { | { | ||||
| jmethodID method = env->GetMethodID (responseClass, "getReasonPhrase", "()Ljava/lang/String;"); | jmethodID method = env->GetMethodID (responseClass, "getReasonPhrase", "()Ljava/lang/String;"); | ||||
| if (method != 0) | |||||
| if (method != nullptr) | |||||
| { | { | ||||
| auto errorString = LocalRef<jstring> ((jstring) env->CallObjectMethod (errorResponse, method)); | auto errorString = LocalRef<jstring> ((jstring) env->CallObjectMethod (errorResponse, method)); | ||||
| @@ -671,7 +671,7 @@ void WebBrowserComponent::checkWindowAssociation() | |||||
| // page to avoid this, (and send it back when it's made visible again). | // page to avoid this, (and send it back when it's made visible again). | ||||
| blankPageShown = true; | blankPageShown = true; | ||||
| browser->goToURL ("about:blank", 0, 0); | |||||
| browser->goToURL ("about:blank", nullptr, nullptr); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -711,7 +711,7 @@ void WebBrowserComponent::clearCookies() | |||||
| auto cookieManager = LocalRef<jobject> (env->CallStaticObjectMethod (AndroidCookieManager, | auto cookieManager = LocalRef<jobject> (env->CallStaticObjectMethod (AndroidCookieManager, | ||||
| AndroidCookieManager.getInstance)); | AndroidCookieManager.getInstance)); | ||||
| jmethodID clearCookiesMethod = 0; | |||||
| jmethodID clearCookiesMethod = nullptr; | |||||
| if (getAndroidSDKVersion() >= 21) | if (getAndroidSDKVersion() >= 21) | ||||
| { | { | ||||
| @@ -41,7 +41,7 @@ public: | |||||
| componentPeerChanged(); | componentPeerChanged(); | ||||
| } | } | ||||
| ~Pimpl() | |||||
| ~Pimpl() override | |||||
| { | { | ||||
| [view removeFromSuperview]; | [view removeFromSuperview]; | ||||
| [view release]; | [view release]; | ||||
| @@ -118,7 +118,7 @@ public: | |||||
| hasInitialised = true; | hasInitialised = true; | ||||
| } | } | ||||
| ~NativeContext() | |||||
| ~NativeContext() override | |||||
| { | { | ||||
| auto env = getEnv(); | auto env = getEnv(); | ||||
| @@ -165,7 +165,7 @@ public: | |||||
| } | } | ||||
| // create the surface | // create the surface | ||||
| surface = eglCreateWindowSurface (display, config, window, 0); | |||||
| surface = eglCreateWindowSurface (display, config, window, nullptr); | |||||
| jassert (surface != EGL_NO_SURFACE); | jassert (surface != EGL_NO_SURFACE); | ||||
| ANativeWindow_release (window); | ANativeWindow_release (window); | ||||
| @@ -317,7 +317,7 @@ private: | |||||
| return false; | return false; | ||||
| } | } | ||||
| if (! eglInitialize (display, 0, 0)) | |||||
| if (! eglInitialize (display, nullptr, nullptr)) | |||||
| { | { | ||||
| jassertfalse; | jassertfalse; | ||||
| return false; | return false; | ||||
| @@ -40,8 +40,8 @@ extern Array<AppInactivityCallback*> appBecomingInactiveCallbacks; | |||||
| // this prevents them from happening (which some messy locking behaviour) | // this prevents them from happening (which some messy locking behaviour) | ||||
| struct iOSBackgroundProcessCheck : public AppInactivityCallback | struct iOSBackgroundProcessCheck : public AppInactivityCallback | ||||
| { | { | ||||
| iOSBackgroundProcessCheck() { isBackgroundProcess(); appBecomingInactiveCallbacks.add (this); } | |||||
| ~iOSBackgroundProcessCheck() { appBecomingInactiveCallbacks.removeAllInstancesOf (this); } | |||||
| iOSBackgroundProcessCheck() { isBackgroundProcess(); appBecomingInactiveCallbacks.add (this); } | |||||
| ~iOSBackgroundProcessCheck() override { appBecomingInactiveCallbacks.removeAllInstancesOf (this); } | |||||
| bool isBackgroundProcess() | bool isBackgroundProcess() | ||||
| { | { | ||||
| @@ -508,7 +508,7 @@ struct CameraDevice::Pimpl | |||||
| startBackgroundThread(); | startBackgroundThread(); | ||||
| } | } | ||||
| ~Pimpl() | |||||
| ~Pimpl() override | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| @@ -764,18 +764,18 @@ private: | |||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| #define PRINT_ELEMENTS(elem_type, array_type, fun_name_middle) \ | |||||
| { \ | |||||
| elem_type* elements = env->Get##fun_name_middle##ArrayElements ((array_type) keyValue.get(), 0); \ | |||||
| int size = env->GetArrayLength ((array_type) keyValue.get()); \ | |||||
| \ | |||||
| for (int i = 0; i < size - 1; ++i) \ | |||||
| result << String (elements[i]) << " "; \ | |||||
| \ | |||||
| if (size > 0) \ | |||||
| result << String (elements[size - 1]); \ | |||||
| \ | |||||
| env->Release##fun_name_middle##ArrayElements ((array_type) keyValue.get(), elements, 0); \ | |||||
| #define PRINT_ELEMENTS(elem_type, array_type, fun_name_middle) \ | |||||
| { \ | |||||
| elem_type* elements = env->Get##fun_name_middle##ArrayElements ((array_type) keyValue.get(), nullptr); \ | |||||
| int size = env->GetArrayLength ((array_type) keyValue.get()); \ | |||||
| \ | |||||
| for (int i = 0; i < size - 1; ++i) \ | |||||
| result << String (elements[i]) << " "; \ | |||||
| \ | |||||
| if (size > 0) \ | |||||
| result << String (elements[size - 1]); \ | |||||
| \ | |||||
| env->Release##fun_name_middle##ArrayElements ((array_type) keyValue.get(), elements, 0); \ | |||||
| } | } | ||||
| if (keyValueString.startsWith ("[I")) | if (keyValueString.startsWith ("[I")) | ||||
| @@ -996,7 +996,7 @@ private: | |||||
| "android/view/TextureView$SurfaceTextureListener").get()); | "android/view/TextureView$SurfaceTextureListener").get()); | ||||
| } | } | ||||
| ~PreviewDisplay() | |||||
| ~PreviewDisplay() override | |||||
| { | { | ||||
| getEnv()->CallVoidMethod (textureView, AndroidTextureView.setSurfaceTextureListener, nullptr); | getEnv()->CallVoidMethod (textureView, AndroidTextureView.setSurfaceTextureListener, nullptr); | ||||
| } | } | ||||
| @@ -1144,7 +1144,7 @@ private: | |||||
| handlerToUse.get()); | handlerToUse.get()); | ||||
| } | } | ||||
| ~ImageReader() | |||||
| ~ImageReader() override | |||||
| { | { | ||||
| getEnv()->CallVoidMethod (imageReader, AndroidImageReader.close); | getEnv()->CallVoidMethod (imageReader, AndroidImageReader.close); | ||||
| } | } | ||||
| @@ -1405,7 +1405,7 @@ private: | |||||
| getEnv()->CallVoidMethod (mediaRecorder, AndroidMediaRecorder.prepare); | getEnv()->CallVoidMethod (mediaRecorder, AndroidMediaRecorder.prepare); | ||||
| } | } | ||||
| ~MediaRecorder() | |||||
| ~MediaRecorder() override | |||||
| { | { | ||||
| getEnv()->CallVoidMethod (mediaRecorder, AndroidMediaRecorder.release); | getEnv()->CallVoidMethod (mediaRecorder, AndroidMediaRecorder.release); | ||||
| } | } | ||||
| @@ -2494,7 +2494,7 @@ private: | |||||
| //============================================================================== | //============================================================================== | ||||
| struct CaptureSessionModeBase | struct CaptureSessionModeBase | ||||
| { | { | ||||
| virtual ~CaptureSessionModeBase() { } | |||||
| virtual ~CaptureSessionModeBase() = default; | |||||
| virtual bool isVideoRecordSession() const = 0; | virtual bool isVideoRecordSession() const = 0; | ||||
| @@ -2507,7 +2507,7 @@ private: | |||||
| private PreviewDisplay::Listener, | private PreviewDisplay::Listener, | ||||
| private ScopedCameraDevice::CaptureSession::ConfiguredCallback | private ScopedCameraDevice::CaptureSession::ConfiguredCallback | ||||
| { | { | ||||
| ~CaptureSessionMode() | |||||
| ~CaptureSessionMode() override | |||||
| { | { | ||||
| captureSession.reset(); | captureSession.reset(); | ||||
| @@ -2789,7 +2789,7 @@ private: | |||||
| setEnabled (true); | setEnabled (true); | ||||
| } | } | ||||
| ~DeviceOrientationChangeListener() | |||||
| ~DeviceOrientationChangeListener() override | |||||
| { | { | ||||
| setEnabled (false); | setEnabled (false); | ||||
| } | } | ||||
| @@ -2985,7 +2985,7 @@ private: | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| auto* jArrayElems = env->GetIntArrayElements (jArray, 0); | |||||
| auto* jArrayElems = env->GetIntArrayElements (jArray, nullptr); | |||||
| auto numElems = env->GetArrayLength (jArray); | auto numElems = env->GetArrayLength (jArray); | ||||
| Array<int> juceArray; | Array<int> juceArray; | ||||
| @@ -375,7 +375,7 @@ struct VideoComponent::Pimpl | |||||
| } | } | ||||
| } | } | ||||
| ~Pimpl() | |||||
| ~Pimpl() override | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| @@ -502,7 +502,7 @@ private: | |||||
| env->CallVoidMethod (nativeMediaSession, AndroidMediaSession.setCallback, mediaSessionCallback.get()); | env->CallVoidMethod (nativeMediaSession, AndroidMediaSession.setCallback, mediaSessionCallback.get()); | ||||
| } | } | ||||
| ~MediaSession() | |||||
| ~MediaSession() override | |||||
| { | { | ||||
| auto* env = getEnv(); | auto* env = getEnv(); | ||||
| @@ -1405,7 +1405,7 @@ private: | |||||
| auto playPos = player.getPlayPosition(); | auto playPos = player.getPlayPosition(); | ||||
| auto durationMs = player.getVideoDuration(); | auto durationMs = player.getVideoDuration(); | ||||
| int playPosPercent = 100 * playPos / static_cast<double> (durationMs); | |||||
| auto playPosPercent = (int) (100.0 * playPos / static_cast<double> (durationMs)); | |||||
| // NB: assuming the playback will start roughly when there is 5% of content loaded... | // NB: assuming the playback will start roughly when there is 5% of content loaded... | ||||
| return ! bufferedRegions.containsRange (Range<int> (playPosPercent, jmin (101, playPosPercent + 5))); | return ! bufferedRegions.containsRange (Range<int> (playPosPercent, jmin (101, playPosPercent + 5))); | ||||
| @@ -1456,7 +1456,7 @@ private: | |||||
| auto playPos = player.getPlayPosition(); | auto playPos = player.getPlayPosition(); | ||||
| auto durationMs = player.getVideoDuration(); | auto durationMs = player.getVideoDuration(); | ||||
| int playPosPercent = 100 * playPos / static_cast<double> (durationMs); | |||||
| auto playPosPercent = (int) (100.0 * playPos / static_cast<double> (durationMs)); | |||||
| bufferedRegions.addRange (Range<int> (playPosPercent, progress + 1)); | bufferedRegions.addRange (Range<int> (playPosPercent, progress + 1)); | ||||
| @@ -304,7 +304,7 @@ private: | |||||
| static String cmTimeToString (CMTime time) | static String cmTimeToString (CMTime time) | ||||
| { | { | ||||
| CFStringRef timeDesc = CMTimeCopyDescription (NULL, time); | |||||
| CFStringRef timeDesc = CMTimeCopyDescription (nullptr, time); | |||||
| String result = String::fromCFString (timeDesc); | String result = String::fromCFString (timeDesc); | ||||
| CFRelease (timeDesc); | CFRelease (timeDesc); | ||||
| @@ -984,7 +984,7 @@ private: | |||||
| class VideoRecorder | class VideoRecorder | ||||
| { | { | ||||
| public: | public: | ||||
| VideoRecorder (CaptureSession& captureSession) | |||||
| VideoRecorder (CaptureSession& session) | |||||
| : movieFileOutput ([AVCaptureMovieFileOutput new]), | : movieFileOutput ([AVCaptureMovieFileOutput new]), | ||||
| delegate (nullptr) | delegate (nullptr) | ||||
| { | { | ||||
| @@ -992,7 +992,7 @@ private: | |||||
| delegate.reset ([cls.createInstance() init]); | delegate.reset ([cls.createInstance() init]); | ||||
| FileOutputRecordingDelegateClass::setOwner (delegate.get(), this); | FileOutputRecordingDelegateClass::setOwner (delegate.get(), this); | ||||
| captureSession.addOutputIfPossible (movieFileOutput); | |||||
| session.addOutputIfPossible (movieFileOutput); | |||||
| } | } | ||||
| ~VideoRecorder() | ~VideoRecorder() | ||||