From 18f868c0f8299c960ba48c9ce78cd0ac329012b6 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 26 Dec 2020 12:09:34 +0000 Subject: [PATCH] Fix juce-legacy for macOS 11 --- .../juce_core/native/juce_mac_SystemStats.mm | 18 +++++++++++------- .../juce_core/native/juce_osx_ObjCHelpers.h | 11 ----------- .../juce_core/system/juce_PlatformDefs.h | 4 +++- .../juce_core/system/juce_SystemStats.h | 7 ++++--- .../native/juce_mac_NSViewComponentPeer.mm | 9 +++++++-- ports-legacy/meson.build | 2 +- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/libs/juce-legacy/source/modules/juce_core/native/juce_mac_SystemStats.mm b/libs/juce-legacy/source/modules/juce_core/native/juce_mac_SystemStats.mm index 81f62192..4b36aa42 100644 --- a/libs/juce-legacy/source/modules/juce_core/native/juce_mac_SystemStats.mm +++ b/libs/juce-legacy/source/modules/juce_core/native/juce_mac_SystemStats.mm @@ -120,11 +120,17 @@ SystemStats::OperatingSystemType SystemStats::getOperatingSystemType() StringArray parts; parts.addTokens (getOSXVersion(), ".", StringRef()); - jassert (parts[0].getIntValue() == 10); - const int major = parts[1].getIntValue(); - jassert (major > 2); + const auto major = parts[0].getIntValue(); + const auto minor = parts[1].getIntValue(); - return (OperatingSystemType) (major + MacOSX_10_4 - 4); + if (major == 10) + { + jassert (minor > 2); + return (OperatingSystemType) (minor + MacOSX_10_7 - 7); + } + + jassert (major == 11 && minor == 0); + return MacOSX_11_0; #endif } @@ -157,10 +163,8 @@ bool SystemStats::isOperatingSystem64Bit() { #if JUCE_IOS return false; - #elif JUCE_64BIT - return true; #else - return getOperatingSystemType() >= MacOSX_10_6; + return true; #endif } diff --git a/libs/juce-legacy/source/modules/juce_core/native/juce_osx_ObjCHelpers.h b/libs/juce-legacy/source/modules/juce_core/native/juce_osx_ObjCHelpers.h index 7c1d57ec..2711f16d 100644 --- a/libs/juce-legacy/source/modules/juce_core/native/juce_osx_ObjCHelpers.h +++ b/libs/juce-legacy/source/modules/juce_core/native/juce_osx_ObjCHelpers.h @@ -96,17 +96,6 @@ static inline ReturnValue ObjCMsgSendSuper (struct objc_super* s, SEL sel, Param // These hacks are a workaround for newer Xcode builds which by default prevent calls to these objc functions.. typedef id (*MsgSendSuperFn) (struct objc_super*, SEL, ...); static inline MsgSendSuperFn getMsgSendSuperFn() noexcept { return (MsgSendSuperFn) (void*) objc_msgSendSuper; } - -#if ! JUCE_IOS -typedef double (*MsgSendFPRetFn) (id, SEL op, ...); -static inline MsgSendFPRetFn getMsgSendFPRetFn() noexcept { return (MsgSendFPRetFn) (void*) - #if JUCE_ARM - objc_msgSend; - #else - objc_msgSend_fpret; - #endif -} -#endif #endif //============================================================================== diff --git a/libs/juce-legacy/source/modules/juce_core/system/juce_PlatformDefs.h b/libs/juce-legacy/source/modules/juce_core/system/juce_PlatformDefs.h index 32b93235..9cbd372d 100644 --- a/libs/juce-legacy/source/modules/juce_core/system/juce_PlatformDefs.h +++ b/libs/juce-legacy/source/modules/juce_core/system/juce_PlatformDefs.h @@ -62,12 +62,14 @@ namespace juce @see jassert() */ #define JUCE_BREAK_IN_DEBUGGER { ::kill (0, SIGTRAP); } +#elif JUCE_MAC && JUCE_CLANG && JUCE_ARM + #define JUCE_BREAK_IN_DEBUGGER { __builtin_debugtrap(); } #elif JUCE_MSVC #ifndef __INTEL_COMPILER #pragma intrinsic (__debugbreak) #endif #define JUCE_BREAK_IN_DEBUGGER { __debugbreak(); } -#elif JUCE_GCC || JUCE_MAC +#elif JUCE_INTEL && (JUCE_GCC || JUCE_MAC) #if JUCE_NO_INLINE_ASM #define JUCE_BREAK_IN_DEBUGGER { } #else diff --git a/libs/juce-legacy/source/modules/juce_core/system/juce_SystemStats.h b/libs/juce-legacy/source/modules/juce_core/system/juce_SystemStats.h index 89d3854e..593e6cf2 100644 --- a/libs/juce-legacy/source/modules/juce_core/system/juce_SystemStats.h +++ b/libs/juce-legacy/source/modules/juce_core/system/juce_SystemStats.h @@ -50,15 +50,16 @@ public: Android = 0x0800, iOS = 0x1000, - MacOSX_10_4 = MacOSX | 4, - MacOSX_10_5 = MacOSX | 5, - MacOSX_10_6 = MacOSX | 6, MacOSX_10_7 = MacOSX | 7, MacOSX_10_8 = MacOSX | 8, MacOSX_10_9 = MacOSX | 9, MacOSX_10_10 = MacOSX | 10, MacOSX_10_11 = MacOSX | 11, MacOSX_10_12 = MacOSX | 12, + MacOSX_10_13 = MacOSX | 13, + MacOSX_10_14 = MacOSX | 14, + MacOSX_10_15 = MacOSX | 15, + MacOSX_11_0 = MacOSX | 16, Win2000 = Windows | 1, WinXP = Windows | 2, diff --git a/libs/juce-legacy/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/libs/juce-legacy/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index d1b39752..60000c4f 100644 --- a/libs/juce-legacy/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/libs/juce-legacy/source/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -24,6 +24,11 @@ ============================================================================== */ +@interface NSEvent (DeviceDelta) +- (float)deviceDeltaX; +- (float)deviceDeltaY; +@end + namespace juce { typedef void (*AppFocusChangeCallback)(); @@ -640,8 +645,8 @@ public: #endif if ([ev respondsToSelector: @selector (deviceDeltaX)]) { - wheel.deltaX = checkDeviceDeltaReturnValue ((float) getMsgSendFPRetFn() (ev, @selector (deviceDeltaX))); - wheel.deltaY = checkDeviceDeltaReturnValue ((float) getMsgSendFPRetFn() (ev, @selector (deviceDeltaY))); + wheel.deltaX = checkDeviceDeltaReturnValue ([ev deviceDeltaX]); + wheel.deltaY = checkDeviceDeltaReturnValue ([ev deviceDeltaY]); } } @catch (...) diff --git a/ports-legacy/meson.build b/ports-legacy/meson.build index 2de0f936..c80282da 100644 --- a/ports-legacy/meson.build +++ b/ports-legacy/meson.build @@ -223,7 +223,7 @@ if build_lv2 or build_vst2 link_with_plugin += lib_juced endif - if plugin_uses_opengl + if plugin_uses_opengl or buildtype == 'debug' if os_darwin plugin_extra_link_flags += [ '-framework', 'OpenGL',