@@ -169,8 +169,8 @@ private: | |||||
static VstEvent* allocateVSTEvent() | static VstEvent* allocateVSTEvent() | ||||
{ | { | ||||
VstEvent* const e = (VstEvent*) ::calloc (1, sizeof (VstMidiEvent) > sizeof (VstMidiSysexEvent) ? sizeof (VstMidiEvent) | |||||
: sizeof (VstMidiSysexEvent)); | |||||
VstEvent* const e = (VstEvent*) std::calloc (1, sizeof (VstMidiEvent) > sizeof (VstMidiSysexEvent) ? sizeof (VstMidiEvent) | |||||
: sizeof (VstMidiSysexEvent)); | |||||
e->type = kVstMidiType; | e->type = kVstMidiType; | ||||
e->byteSize = sizeof (VstMidiEvent); | e->byteSize = sizeof (VstMidiEvent); | ||||
return e; | return e; | ||||
@@ -181,7 +181,7 @@ private: | |||||
if (e->type == kVstSysExType) | if (e->type == kVstSysExType) | ||||
delete[] (((VstMidiSysexEvent*) e)->sysexDump); | delete[] (((VstMidiSysexEvent*) e)->sysexDump); | ||||
::free (e); | |||||
std::free (e); | |||||
} | } | ||||
}; | }; | ||||
@@ -105,7 +105,7 @@ public: | |||||
If you want an array of zero values, you can use the calloc() method instead. | If you want an array of zero values, you can use the calloc() method instead. | ||||
*/ | */ | ||||
explicit HeapBlock (const size_t numElements) | explicit HeapBlock (const size_t numElements) | ||||
: data (static_cast <ElementType*> (::malloc (numElements * sizeof (ElementType)))) | |||||
: data (static_cast <ElementType*> (std::malloc (numElements * sizeof (ElementType)))) | |||||
{ | { | ||||
throwOnAllocationFailure(); | throwOnAllocationFailure(); | ||||
} | } | ||||
@@ -116,7 +116,7 @@ public: | |||||
*/ | */ | ||||
~HeapBlock() | ~HeapBlock() | ||||
{ | { | ||||
::free (data); | |||||
std::free (data); | |||||
} | } | ||||
#if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS | ||||
@@ -203,8 +203,8 @@ public: | |||||
*/ | */ | ||||
void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | void malloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | ||||
{ | { | ||||
::free (data); | |||||
data = static_cast <ElementType*> (::malloc (newNumElements * elementSize)); | |||||
std::free (data); | |||||
data = static_cast <ElementType*> (std::malloc (newNumElements * elementSize)); | |||||
throwOnAllocationFailure(); | throwOnAllocationFailure(); | ||||
} | } | ||||
@@ -213,8 +213,8 @@ public: | |||||
*/ | */ | ||||
void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | void calloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | ||||
{ | { | ||||
::free (data); | |||||
data = static_cast <ElementType*> (::calloc (newNumElements, elementSize)); | |||||
std::free (data); | |||||
data = static_cast <ElementType*> (std::calloc (newNumElements, elementSize)); | |||||
throwOnAllocationFailure(); | throwOnAllocationFailure(); | ||||
} | } | ||||
@@ -224,12 +224,12 @@ public: | |||||
*/ | */ | ||||
void allocate (const size_t newNumElements, const bool initialiseToZero) | void allocate (const size_t newNumElements, const bool initialiseToZero) | ||||
{ | { | ||||
::free (data); | |||||
std::free (data); | |||||
if (initialiseToZero) | if (initialiseToZero) | ||||
data = static_cast <ElementType*> (::calloc (newNumElements, sizeof (ElementType))); | |||||
data = static_cast <ElementType*> (std::calloc (newNumElements, sizeof (ElementType))); | |||||
else | else | ||||
data = static_cast <ElementType*> (::malloc (newNumElements * sizeof (ElementType))); | |||||
data = static_cast <ElementType*> (std::malloc (newNumElements * sizeof (ElementType))); | |||||
throwOnAllocationFailure(); | throwOnAllocationFailure(); | ||||
} | } | ||||
@@ -242,9 +242,9 @@ public: | |||||
void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | void realloc (const size_t newNumElements, const size_t elementSize = sizeof (ElementType)) | ||||
{ | { | ||||
if (data == nullptr) | if (data == nullptr) | ||||
data = static_cast <ElementType*> (::malloc (newNumElements * elementSize)); | |||||
data = static_cast <ElementType*> (std::malloc (newNumElements * elementSize)); | |||||
else | else | ||||
data = static_cast <ElementType*> (::realloc (data, newNumElements * elementSize)); | |||||
data = static_cast <ElementType*> (std::realloc (data, newNumElements * elementSize)); | |||||
throwOnAllocationFailure(); | throwOnAllocationFailure(); | ||||
} | } | ||||
@@ -254,7 +254,7 @@ public: | |||||
*/ | */ | ||||
void free() | void free() | ||||
{ | { | ||||
::free (data); | |||||
std::free (data); | |||||
data = nullptr; | data = nullptr; | ||||
} | } | ||||
@@ -108,7 +108,7 @@ template <typename JavaType> | |||||
class LocalRef | class LocalRef | ||||
{ | { | ||||
public: | public: | ||||
explicit inline LocalRef (JavaType obj_) noexcept : obj (obj_){} | |||||
explicit inline LocalRef (JavaType obj_) noexcept : obj (obj_) {} | |||||
inline LocalRef (const LocalRef& other) noexcept : obj (retain (other.obj)) {} | inline LocalRef (const LocalRef& other) noexcept : obj (retain (other.obj)) {} | ||||
~LocalRef() { clear(); } | ~LocalRef() { clear(); } | ||||
@@ -143,8 +143,7 @@ namespace | |||||
{ | { | ||||
String juceString (JNIEnv* env, jstring s) | String juceString (JNIEnv* env, jstring s) | ||||
{ | { | ||||
jboolean isCopy; | |||||
const char* const utf8 = env->GetStringUTFChars (s, &isCopy); | |||||
const char* const utf8 = env->GetStringUTFChars (s, nullptr); | |||||
CharPointer_UTF8 utf8CP (utf8); | CharPointer_UTF8 utf8CP (utf8); | ||||
const String result (utf8CP); | const String result (utf8CP); | ||||
env->ReleaseStringUTFChars (s, utf8); | env->ReleaseStringUTFChars (s, utf8); | ||||
@@ -30,8 +30,8 @@ void Logger::outputDebugString (const String& text) | |||||
//============================================================================== | //============================================================================== | ||||
#ifdef JUCE_DLL | #ifdef JUCE_DLL | ||||
JUCE_API void* juceDLL_malloc (size_t sz) { return ::malloc (sz); } | |||||
JUCE_API void juceDLL_free (void* block) { ::free (block); } | |||||
JUCE_API void* juceDLL_malloc (size_t sz) { return std::malloc (sz); } | |||||
JUCE_API void juceDLL_free (void* block) { std::free (block); } | |||||
#endif | #endif | ||||
//============================================================================== | //============================================================================== | ||||
@@ -104,7 +104,6 @@ | |||||
#endif | #endif | ||||
#if JUCE_MSVC | #if JUCE_MSVC | ||||
#include <malloc.h> | |||||
#pragma warning (pop) | #pragma warning (pop) | ||||
#endif | #endif | ||||
@@ -103,6 +103,7 @@ void MessageManager::runDispatchLoop() | |||||
void MessageManager::stopDispatchLoop() | void MessageManager::stopDispatchLoop() | ||||
{ | { | ||||
(new QuitMessage())->post(); | (new QuitMessage())->post(); | ||||
quitMessagePosted = true; | |||||
} | } | ||||
bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | ||||
@@ -50,12 +50,12 @@ namespace pnglibNamespace | |||||
#if JUCE_INCLUDE_PNGLIB_CODE || ! defined (JUCE_INCLUDE_PNGLIB_CODE) | #if JUCE_INCLUDE_PNGLIB_CODE || ! defined (JUCE_INCLUDE_PNGLIB_CODE) | ||||
#if _MSC_VER != 1310 | #if _MSC_VER != 1310 | ||||
using ::calloc; // (causes conflict in VS.NET 2003) | |||||
using ::malloc; | |||||
using ::free; | |||||
using std::calloc; // (causes conflict in VS.NET 2003) | |||||
using std::malloc; | |||||
using std::free; | |||||
#endif | #endif | ||||
using ::abs; | |||||
using std::abs; | |||||
#define PNG_INTERNAL | #define PNG_INTERNAL | ||||
#define NO_DUMMY_DECL | #define NO_DUMMY_DECL | ||||
#define PNG_SETJMP_NOT_SUPPORTED | #define PNG_SETJMP_NOT_SUPPORTED | ||||
@@ -95,10 +95,6 @@ namespace pnglibNamespace | |||||
#pragma warning (pop) | #pragma warning (pop) | ||||
#endif | #endif | ||||
using ::calloc; | |||||
using ::malloc; | |||||
using ::free; | |||||
//============================================================================== | //============================================================================== | ||||
namespace PNGHelpers | namespace PNGHelpers | ||||
{ | { | ||||
@@ -180,28 +180,30 @@ public: | |||||
const Rectangle<int> bounds (left, top, right - left, bottom - top); | const Rectangle<int> bounds (left, top, right - left, bottom - top); | ||||
if (bounds.isEmpty()) | |||||
return nullptr; | |||||
EdgeTable* et = nullptr; | |||||
jint* const maskDataElements = env->GetIntArrayElements (maskData, 0); | |||||
if (! bounds.isEmpty()) | |||||
{ | |||||
et = new EdgeTable (bounds); | |||||
EdgeTable* et = new EdgeTable (bounds); | |||||
jint* const maskDataElements = env->GetIntArrayElements (maskData, 0); | |||||
const jint* mask = maskDataElements; | |||||
const jint* mask = maskDataElements; | |||||
for (int y = top; y < bottom; ++y) | |||||
{ | |||||
#if JUCE_LITTLE_ENDIAN | |||||
const uint8* const lineBytes = ((const uint8*) mask) + 3; | |||||
#else | |||||
const uint8* const lineBytes = (const uint8*) mask; | |||||
#endif | |||||
for (int y = top; y < bottom; ++y) | |||||
{ | |||||
#if JUCE_LITTLE_ENDIAN | |||||
const uint8* const lineBytes = ((const uint8*) mask) + 3; | |||||
#else | |||||
const uint8* const lineBytes = (const uint8*) mask; | |||||
#endif | |||||
et->clipLineToMask (left, y, lineBytes, 4, bounds.getWidth()); | |||||
mask += bounds.getWidth(); | |||||
et->clipLineToMask (left, y, lineBytes, 4, bounds.getWidth()); | |||||
mask += bounds.getWidth(); | |||||
} | |||||
env->ReleaseIntArrayElements (maskData, maskDataElements, 0); | |||||
} | } | ||||
env->ReleaseIntArrayElements (maskData, maskDataElements, 0); | |||||
env->DeleteLocalRef (maskData); | env->DeleteLocalRef (maskData); | ||||
return et; | return et; | ||||
} | } | ||||
@@ -45,6 +45,8 @@ JUCE_JNI_CALLBACK (JUCE_ANDROID_ACTIVITY_CLASSNAME, launchApp, void, (JNIEnv* en | |||||
JUCEApplication* app = dynamic_cast <JUCEApplication*> (JUCEApplicationBase::createInstance()); | JUCEApplication* app = dynamic_cast <JUCEApplication*> (JUCEApplicationBase::createInstance()); | ||||
if (! app->initialiseApp (String::empty)) | if (! app->initialiseApp (String::empty)) | ||||
exit (0); | exit (0); | ||||
jassert (MessageManager::getInstance()->isThisTheMessageThread()); | |||||
} | } | ||||
JUCE_JNI_CALLBACK (JUCE_ANDROID_ACTIVITY_CLASSNAME, quitApp, void, (JNIEnv* env, jobject activity)) | JUCE_JNI_CALLBACK (JUCE_ANDROID_ACTIVITY_CLASSNAME, quitApp, void, (JNIEnv* env, jobject activity)) | ||||
@@ -386,7 +388,7 @@ public: | |||||
jint* dest = env->GetIntArrayElements ((jintArray) buffer.get(), 0); | jint* dest = env->GetIntArrayElements ((jintArray) buffer.get(), 0); | ||||
if (dest != 0) | |||||
if (dest != nullptr) | |||||
{ | { | ||||
{ | { | ||||
Image temp (new PreallocatedImage (clip.getWidth(), clip.getHeight(), | Image temp (new PreallocatedImage (clip.getWidth(), clip.getHeight(), | ||||
@@ -415,26 +417,23 @@ public: | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
class ViewRepainter : public CallbackMessage | |||||
struct ViewRepainter : public CallbackMessage | |||||
{ | { | ||||
public: | |||||
ViewRepainter (const GlobalRef& view_, const Rectangle<int>& area_) | ViewRepainter (const GlobalRef& view_, const Rectangle<int>& area_) | ||||
: view (view_), area (area_) | |||||
{ | |||||
post(); | |||||
} | |||||
: view (view_), area (area_) {} | |||||
void messageCallback() | void messageCallback() | ||||
{ | { | ||||
view.callVoidMethod (ComponentPeerView.invalidate, area.getX(), area.getY(), area.getRight(), area.getBottom()); | |||||
view.callVoidMethod (ComponentPeerView.invalidate, area.getX(), area.getY(), | |||||
area.getRight(), area.getBottom()); | |||||
} | } | ||||
private: | private: | ||||
GlobalRef view; | GlobalRef view; | ||||
const Rectangle<int>& area; | |||||
const Rectangle<int> area; | |||||
}; | }; | ||||
new ViewRepainter (view, area); | |||||
(new ViewRepainter (view, area))->post(); | |||||
} | } | ||||
} | } | ||||
@@ -448,29 +447,6 @@ public: | |||||
// TODO | // TODO | ||||
} | } | ||||
#if USE_ANDROID_CANVAS | |||||
StringArray getAvailableRenderingEngines() | |||||
{ | |||||
StringArray s (ComponentPeer::getAvailableRenderingEngines()); | |||||
s.add ("Android Canvas Renderer"); | |||||
return s; | |||||
} | |||||
int getCurrentRenderingEngine() const | |||||
{ | |||||
return usingAndroidGraphics ? 1 : 0; | |||||
} | |||||
void setCurrentRenderingEngine (int index) | |||||
{ | |||||
if (usingAndroidGraphics != (index > 0)) | |||||
{ | |||||
usingAndroidGraphics = index > 0; | |||||
component->repaint(); | |||||
} | |||||
} | |||||
#endif | |||||
//============================================================================== | //============================================================================== | ||||
static AndroidComponentPeer* findPeerForJavaView (JNIEnv* env, jobject viewToFind) | static AndroidComponentPeer* findPeerForJavaView (JNIEnv* env, jobject viewToFind) | ||||
{ | { | ||||