1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-14 00:14:18 +00:00

Workaround for OSX tiled image rendering bug. Mingw atomics fix. Fix for compiling atomics on 10.4. Added a 'new folder' button to the directory chooser on Mac.

This commit is contained in:
Julian Storer 2010-01-29 22:45:39 +00:00
parent 5153493b46
commit 91eeebda2f
7 changed files with 40 additions and 17 deletions

View file

@ -21,6 +21,10 @@
8414DE8511122A8D00DAF75A /* juce_DynamicObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8414DE8311122A8D00DAF75A /* juce_DynamicObject.h */; };
843D4A3B10D3C54500624BA6 /* juce_ValueTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 843D4A3910D3C54500624BA6 /* juce_ValueTree.cpp */; };
843D4A3C10D3C54500624BA6 /* juce_ValueTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 843D4A3A10D3C54500624BA6 /* juce_ValueTree.h */; };
843E5C6F1113949F006F959F /* juce_NamedValueSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8414DE76111229B300DAF75A /* juce_NamedValueSet.cpp */; };
843E5C701113949F006F959F /* juce_NamedValueSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 8414DE77111229B300DAF75A /* juce_NamedValueSet.h */; };
843E5C71111394A2006F959F /* juce_DynamicObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8414DE8211122A8D00DAF75A /* juce_DynamicObject.cpp */; };
843E5C72111394A3006F959F /* juce_DynamicObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8414DE8311122A8D00DAF75A /* juce_DynamicObject.h */; };
844BB95B10C5578800DF5536 /* juce_TargetPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8481730E10832513008FEC33 /* juce_TargetPlatform.h */; };
844BB95C10C5579A00DF5536 /* juce_FillType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F29A9D10C2EFA5005014DF /* juce_FillType.cpp */; };
844BB95D10C5579B00DF5536 /* juce_FillType.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F29A9E10C2EFA5005014DF /* juce_FillType.h */; };
@ -3244,6 +3248,8 @@
84AF419B10F0008E0035D74F /* juce_ScopedPointer.h in Headers */,
84842F9610F6559400490977 /* juce_Value.h in Headers */,
84CAC0C1110478D50088D64D /* juce_TemporaryFile.h in Headers */,
843E5C701113949F006F959F /* juce_NamedValueSet.h in Headers */,
843E5C72111394A3006F959F /* juce_DynamicObject.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -3923,6 +3929,8 @@
84B2053F10D535EC008B4A79 /* juce_ValueTree.cpp in Sources */,
84842F9510F6559300490977 /* juce_Value.cpp in Sources */,
84CAC0C0110478D50088D64D /* juce_TemporaryFile.cpp in Sources */,
843E5C6F1113949F006F959F /* juce_NamedValueSet.cpp in Sources */,
843E5C71111394A2006F959F /* juce_DynamicObject.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -212367,7 +212367,7 @@ int SystemStats::getPageSize() throw()
extern HWND juce_messageWindowHandle;
#endif
#if ! (JUCE_USE_INTRINSICS || JUCE_GCC)
#if ! JUCE_USE_INTRINSICS
// In newer compilers, the inline versions of these are used (in juce_Atomic.h), but in
// older ones we have to actually call the ops as win32 functions..
void Atomic::increment (int32& variable) { InterlockedIncrement (reinterpret_cast <volatile long*> (&variable)); }
@ -240472,7 +240472,9 @@ public:
CGContextDrawTiledImage (context, imageRect, image);
#else
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if (CGContextDrawTiledImage != 0)
// There's a bug in CGContextDrawTiledImage that makes it incredibly slow
// if it's doing a transformation - it's quicker to just draw lots of images manually
if (CGContextDrawTiledImage != 0 && transform.isOnlyTranslation())
CGContextDrawTiledImage (context, imageRect, image);
else
#endif
@ -241996,6 +241998,9 @@ void FileChooser::showPlatformDialog (Array<File>& results,
[panel setDelegate: delegate];
if (isSaveDialogue || selectsDirectory)
[panel setCanCreateDirectories: YES];
String directory, filename;
if (currentFileOrDirectory.isDirectory())
@ -244894,7 +244899,9 @@ public:
CGContextDrawTiledImage (context, imageRect, image);
#else
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if (CGContextDrawTiledImage != 0)
// There's a bug in CGContextDrawTiledImage that makes it incredibly slow
// if it's doing a transformation - it's quicker to just draw lots of images manually
if (CGContextDrawTiledImage != 0 && transform.isOnlyTranslation())
CGContextDrawTiledImage (context, imageRect, image);
else
#endif
@ -248196,6 +248203,9 @@ void FileChooser::showPlatformDialog (Array<File>& results,
[panel setDelegate: delegate];
if (isSaveDialogue || selectsDirectory)
[panel setCanCreateDirectories: YES];
String directory, filename;
if (currentFileOrDirectory.isDirectory())

View file

@ -3100,14 +3100,14 @@ public:
#if (JUCE_MAC || JUCE_IPHONE) // Mac and iPhone...
inline void Atomic::increment (int32& variable) { OSAtomicIncrement32 ((volatile int32_t*) &variable); }
inline int32 Atomic::incrementAndReturn (int32& variable) { return OSAtomicIncrement32 ((volatile int32_t*) &variable); }
inline void Atomic::decrement (int32& variable) { OSAtomicDecrement32 ((volatile int32_t*) &variable); }
inline int32 Atomic::decrementAndReturn (int32& variable) { return OSAtomicDecrement32 ((volatile int32_t*) &variable); }
inline void Atomic::increment (int32& variable) { OSAtomicIncrement32 ((int32_t*) &variable); }
inline int32 Atomic::incrementAndReturn (int32& variable) { return OSAtomicIncrement32 ((int32_t*) &variable); }
inline void Atomic::decrement (int32& variable) { OSAtomicDecrement32 ((int32_t*) &variable); }
inline int32 Atomic::decrementAndReturn (int32& variable) { return OSAtomicDecrement32 ((int32_t*) &variable); }
inline int32 Atomic::compareAndExchange (int32& destination, int32 newValue, int32 oldValue)
{ return OSAtomicCompareAndSwap32Barrier (oldValue, newValue, (volatile int32_t*) &destination); }
{ return OSAtomicCompareAndSwap32Barrier (oldValue, newValue, (int32_t*) &destination); }
#elif JUCE_GCC // Linux...
#elif JUCE_LINUX // Linux...
inline void Atomic::increment (int32& variable) { __sync_add_and_fetch (&variable, 1); }
inline int32 Atomic::incrementAndReturn (int32& variable) { return __sync_add_and_fetch (&variable, 1); }

View file

@ -56,14 +56,14 @@ public:
//==============================================================================
#if (JUCE_MAC || JUCE_IPHONE) // Mac and iPhone...
inline void Atomic::increment (int32& variable) { OSAtomicIncrement32 ((volatile int32_t*) &variable); }
inline int32 Atomic::incrementAndReturn (int32& variable) { return OSAtomicIncrement32 ((volatile int32_t*) &variable); }
inline void Atomic::decrement (int32& variable) { OSAtomicDecrement32 ((volatile int32_t*) &variable); }
inline int32 Atomic::decrementAndReturn (int32& variable) { return OSAtomicDecrement32 ((volatile int32_t*) &variable); }
inline void Atomic::increment (int32& variable) { OSAtomicIncrement32 ((int32_t*) &variable); }
inline int32 Atomic::incrementAndReturn (int32& variable) { return OSAtomicIncrement32 ((int32_t*) &variable); }
inline void Atomic::decrement (int32& variable) { OSAtomicDecrement32 ((int32_t*) &variable); }
inline int32 Atomic::decrementAndReturn (int32& variable) { return OSAtomicDecrement32 ((int32_t*) &variable); }
inline int32 Atomic::compareAndExchange (int32& destination, int32 newValue, int32 oldValue)
{ return OSAtomicCompareAndSwap32Barrier (oldValue, newValue, (volatile int32_t*) &destination); }
{ return OSAtomicCompareAndSwap32Barrier (oldValue, newValue, (int32_t*) &destination); }
#elif JUCE_GCC // Linux...
#elif JUCE_LINUX // Linux...
//==============================================================================
inline void Atomic::increment (int32& variable) { __sync_add_and_fetch (&variable, 1); }

View file

@ -402,7 +402,9 @@ public:
CGContextDrawTiledImage (context, imageRect, image);
#else
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if (CGContextDrawTiledImage != 0)
// There's a bug in CGContextDrawTiledImage that makes it incredibly slow
// if it's doing a transformation - it's quicker to just draw lots of images manually
if (CGContextDrawTiledImage != 0 && transform.isOnlyTranslation())
CGContextDrawTiledImage (context, imageRect, image);
else
#endif

View file

@ -115,6 +115,9 @@ void FileChooser::showPlatformDialog (Array<File>& results,
[panel setDelegate: delegate];
if (isSaveDialogue || selectsDirectory)
[panel setCanCreateDirectories: YES];
String directory, filename;
if (currentFileOrDirectory.isDirectory())

View file

@ -32,7 +32,7 @@
#endif
//==============================================================================
#if ! (JUCE_USE_INTRINSICS || JUCE_GCC)
#if ! JUCE_USE_INTRINSICS
// In newer compilers, the inline versions of these are used (in juce_Atomic.h), but in
// older ones we have to actually call the ops as win32 functions..
void Atomic::increment (int32& variable) { InterlockedIncrement (reinterpret_cast <volatile long*> (&variable)); }