| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||
| index a19c7b05e..deabba6db 100644 | |||
| index d1beeb968..40c2c7ee0 100644 | |||
| --- a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||
| +++ b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||
| @@ -185,8 +185,8 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray<AudioIODeviceType>& | |||
| @@ -237,8 +237,8 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray<AudioIODeviceType>& | |||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_CoreAudio()); | |||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_iOSAudio()); | |||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_Bela()); | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| index 8683dc728..94f6bf569 100644 | |||
| index a2b0286fb..431919098 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| @@ -61,7 +61,7 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996 4100) | |||
| @@ -55,7 +55,7 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996 4100) | |||
| #define PRAGMA_ALIGN_SUPPORTED 1 | |||
| #endif | |||
| @@ -11,27 +11,11 @@ index 8683dc728..94f6bf569 100644 | |||
| #define __cdecl | |||
| #endif | |||
| diff --git a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h | |||
| index 6bea84307..baaa59f06 100644 | |||
| --- a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h | |||
| +++ b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h | |||
| @@ -73,11 +73,6 @@ | |||
| #define JucePlugin_Build_RTAS 0 | |||
| #endif | |||
| -#if ! (defined (_MSC_VER) || defined (__APPLE_CPP__) || defined (__APPLE_CC__) || defined (LINUX) || defined (__linux__)) | |||
| - #undef JucePlugin_Build_VST3 | |||
| - #define JucePlugin_Build_VST3 0 | |||
| -#endif | |||
| - | |||
| //============================================================================== | |||
| #if JucePlugin_Build_LV2 && ! defined (JucePlugin_LV2URI) | |||
| #error "You need to define the JucePlugin_LV2URI value!" | |||
| diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||
| index 620ba9874..d9359b736 100644 | |||
| index 06b5d5a95..f3506b8bd 100644 | |||
| --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||
| +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||
| @@ -62,9 +62,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4355) | |||
| @@ -50,9 +50,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4355) | |||
| #ifndef WM_APPCOMMAND | |||
| #define WM_APPCOMMAND 0x0319 | |||
| #endif | |||
| @@ -41,18 +25,75 @@ index 620ba9874..d9359b736 100644 | |||
| #elif ! JUCE_WINDOWS | |||
| static void _fpreset() {} | |||
| static void _clearfp() {} | |||
| diff --git a/modules/juce_core/threads/juce_WaitableEvent.h b/modules/juce_core/threads/juce_WaitableEvent.h | |||
| index 52269f706..670903653 100644 | |||
| --- a/modules/juce_core/threads/juce_WaitableEvent.h | |||
| +++ b/modules/juce_core/threads/juce_WaitableEvent.h | |||
| @@ -20,6 +20,10 @@ | |||
| ============================================================================== | |||
| */ | |||
| +#if JUCE_MINGW && !defined(_GLIBCXX_HAS_GTHREADS) | |||
| +#include "mingw-std-threads/mingw.condition_variable.h" | |||
| +#endif | |||
| diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| index 2727a4507..bd19f7bec 100644 | |||
| --- a/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| +++ b/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| @@ -62,9 +62,12 @@ | |||
| #include <vfw.h> | |||
| #include <commdlg.h> | |||
| #include <commctrl.h> | |||
| - #include <UIAutomation.h> | |||
| #include <sapi.h> | |||
| + #if JUCE_MSVC | |||
| + #include <UIAutomation.h> | |||
| + #endif | |||
| + | |||
| namespace juce | |||
| { | |||
| #if JUCE_WEB_BROWSER | |||
| #include <exdisp.h> | |||
| #include <exdispid.h> | |||
| @@ -279,13 +282,15 @@ namespace juce | |||
| #include "native/juce_mac_MouseCursor.mm" | |||
| #elif JUCE_WINDOWS | |||
| - #include "native/accessibility/juce_win32_ComInterfaces.h" | |||
| - #include "native/accessibility/juce_win32_WindowsUIAWrapper.h" | |||
| - #include "native/accessibility/juce_win32_AccessibilityElement.h" | |||
| - #include "native/accessibility/juce_win32_UIAHelpers.h" | |||
| - #include "native/accessibility/juce_win32_UIAProviders.h" | |||
| - #include "native/accessibility/juce_win32_AccessibilityElement.cpp" | |||
| - #include "native/accessibility/juce_win32_Accessibility.cpp" | |||
| + #if JUCE_MSVC | |||
| + #include "native/accessibility/juce_win32_ComInterfaces.h" | |||
| + #include "native/accessibility/juce_win32_WindowsUIAWrapper.h" | |||
| + #include "native/accessibility/juce_win32_AccessibilityElement.h" | |||
| + #include "native/accessibility/juce_win32_UIAHelpers.h" | |||
| + #include "native/accessibility/juce_win32_UIAProviders.h" | |||
| + #include "native/accessibility/juce_win32_AccessibilityElement.cpp" | |||
| + #include "native/accessibility/juce_win32_Accessibility.cpp" | |||
| + #endif | |||
| #include "native/juce_win32_Windowing.cpp" | |||
| #include "native/juce_win32_DragAndDrop.cpp" | |||
| #include "native/juce_win32_FileChooser.cpp" | |||
| diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| index 954200135..a62f8521e 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| @@ -1524,8 +1524,10 @@ public: | |||
| // do this first to avoid messages arriving for this window before it's destroyed | |||
| JuceWindowIdentifier::setAsJUCEWindow (hwnd, false); | |||
| + #if JUCE_MSVC | |||
| if (isAccessibilityActive) | |||
| WindowsAccessibility::revokeUIAMapEntriesForWindow (hwnd); | |||
| + #endif | |||
| shadower = nullptr; | |||
| currentTouches.deleteAllTouchesForPeer (this); | |||
| @@ -4057,6 +4059,7 @@ private: | |||
| case WM_GETDLGCODE: | |||
| return DLGC_WANTALLKEYS; | |||
| + #if JUCE_MSVC | |||
| case WM_GETOBJECT: | |||
| { | |||
| if (static_cast<long> (lParam) == WindowsAccessibility::getUiaRootObjectId()) | |||
| @@ -4075,6 +4078,7 @@ private: | |||
| break; | |||
| } | |||
| + #endif | |||
| default: | |||
| break; | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| index 17361fc7e..1fed43c3d 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| @@ -1089,6 +1089,7 @@ public: | |||
| auto dispatchRectangles = [this] () | |||
| { | |||
| + #if USE_COREGRAPHICS_RENDERING | |||
| if (@available (macOS 10.14, *)) | |||
| { | |||
| if (metalRenderer != nullptr) | |||
| @@ -1101,6 +1102,7 @@ public: | |||
| deferredRepaints); | |||
| } | |||
| } | |||
| + #endif | |||
| for (auto& i : deferredRepaints) | |||
| [view setNeedsDisplayInRect: makeNSRect (i)]; | |||
| @@ -1900,7 +1902,9 @@ private: | |||
| CVDisplayLinkRef displayLink = nullptr; | |||
| dispatch_source_t displaySource = nullptr; | |||
| + #if USE_COREGRAPHICS_RENDERING | |||
| std::unique_ptr<CoreGraphicsMetalLayerRenderer> metalRenderer; | |||
| + #endif | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NSViewComponentPeer) | |||
| }; | |||
| @@ -1,307 +0,0 @@ | |||
| diff --git a/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h b/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h | |||
| index acd165ff0..bdc0bf58f 100644 | |||
| --- a/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h | |||
| +++ b/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h | |||
| @@ -20,6 +20,11 @@ | |||
| ============================================================================== | |||
| */ | |||
| +#ifndef __clang__ | |||
| +// GCC4 compatibility | |||
| +namespace std { using ::max_align_t; } | |||
| +#endif | |||
| + | |||
| namespace juce | |||
| { | |||
| diff --git a/modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h b/modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h | |||
| index ac5ce32da..f0cd938ae 100644 | |||
| --- a/modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h | |||
| +++ b/modules/juce_audio_basics/native/juce_mac_CoreAudioLayouts.h | |||
| @@ -236,8 +236,10 @@ private: | |||
| { kAudioChannelLayoutTag_AAC_6_0, { centre, left, right, leftSurround, rightSurround, centreSurround } }, | |||
| { kAudioChannelLayoutTag_AAC_6_1, { centre, left, right, leftSurround, rightSurround, centreSurround, LFE } }, | |||
| { kAudioChannelLayoutTag_AAC_7_0, { centre, left, right, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear } }, | |||
| +#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| { kAudioChannelLayoutTag_AAC_7_1_B, { centre, left, right, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, LFE } }, | |||
| { kAudioChannelLayoutTag_AAC_7_1_C, { centre, left, right, leftSurround, rightSurround, LFE, topFrontLeft, topFrontRight } }, | |||
| +#endif | |||
| { kAudioChannelLayoutTag_AAC_Octagonal, { centre, left, right, leftSurround, rightSurround, leftSurroundRear, rightSurroundRear, centreSurround } }, | |||
| { kAudioChannelLayoutTag_TMH_10_2_std, { left, right, centre, topFrontCentre, leftSurroundSide, rightSurroundSide, leftSurround, rightSurround, topFrontLeft, topFrontRight, wideLeft, wideRight, topRearCentre, centreSurround, LFE, LFE2 } }, | |||
| { kAudioChannelLayoutTag_AC3_1_0_1, { centre, LFE } }, | |||
| diff --git a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm | |||
| index 9aa4a338e..7cad3e7c1 100644 | |||
| --- a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm | |||
| +++ b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm | |||
| @@ -59,6 +59,10 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") | |||
| namespace juce | |||
| { | |||
| +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_8 | |||
| +static const uint32 kAudioUnitType_MIDIProcessor = 'aumi'; | |||
| +#endif | |||
| + | |||
| // Change this to disable logging of various activities | |||
| #ifndef AU_LOGGING | |||
| #define AU_LOGGING 1 | |||
| @@ -276,7 +280,7 @@ namespace AudioUnitFormatHelpers | |||
| NSBundle* bundle = [[NSBundle alloc] initWithPath: (NSString*) fileOrIdentifier.toCFString()]; | |||
| NSArray* audioComponents = [bundle objectForInfoDictionaryKey: @"AudioComponents"]; | |||
| - NSDictionary* dict = audioComponents[0]; | |||
| + NSDictionary* dict = [audioComponents objectAtIndex: 0]; | |||
| desc.componentManufacturer = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"manufacturer"])); | |||
| desc.componentType = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"type"])); | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| index 39eac8211..f556f12b3 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| @@ -1184,7 +1184,7 @@ public: | |||
| String xMeterID, yMeterID; | |||
| }; | |||
| - virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; } | |||
| + virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return CurveData(); } | |||
| //============================================================================== | |||
| /** Not for public use - this is called before deleting an editor component. */ | |||
| diff --git a/modules/juce_core/native/juce_osx_ObjCHelpers.h b/modules/juce_core/native/juce_osx_ObjCHelpers.h | |||
| index a9a7c8eb7..aa068eaa0 100644 | |||
| --- a/modules/juce_core/native/juce_osx_ObjCHelpers.h | |||
| +++ b/modules/juce_core/native/juce_osx_ObjCHelpers.h | |||
| @@ -71,7 +71,7 @@ inline NSArray* varArrayToNSArray (const var& varToParse); | |||
| inline NSDictionary* varObjectToNSDictionary (const var& varToParse) | |||
| { | |||
| - auto dictionary = [NSMutableDictionary dictionary]; | |||
| + NSDictionary* dictionary = [NSMutableDictionary dictionary]; | |||
| if (varToParse.isObject()) | |||
| { | |||
| @@ -118,7 +118,7 @@ inline NSArray* varArrayToNSArray (const var& varToParse) | |||
| const auto* varArray = varToParse.getArray(); | |||
| - auto array = [NSMutableArray arrayWithCapacity: (NSUInteger) varArray->size()]; | |||
| + NSArray* array = [NSMutableArray arrayWithCapacity: (NSUInteger) varArray->size()]; | |||
| for (const auto& aVar : *varArray) | |||
| { | |||
| @@ -152,7 +152,8 @@ inline var nsDictionaryToVar (NSDictionary* dictionary) | |||
| DynamicObject::Ptr dynamicObject (new DynamicObject()); | |||
| for (NSString* key in dictionary) | |||
| - dynamicObject->setProperty (nsStringToJuce (key), nsObjectToVar (dictionary[key])); | |||
| + dynamicObject->setProperty (nsStringToJuce (key), | |||
| + nsObjectToVar ([dictionary objectForKey: key])); | |||
| return var (dynamicObject.get()); | |||
| } | |||
| diff --git a/modules/juce_core/system/juce_CompilerSupport.h b/modules/juce_core/system/juce_CompilerSupport.h | |||
| index 4d96d7cb0..d76d92d49 100644 | |||
| --- a/modules/juce_core/system/juce_CompilerSupport.h | |||
| +++ b/modules/juce_core/system/juce_CompilerSupport.h | |||
| @@ -92,7 +92,7 @@ | |||
| //============================================================================== | |||
| // C++ library | |||
| -#if (defined (__GLIBCXX__) && __GLIBCXX__ < 20130322) || (defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION < 3700)) | |||
| +#if (defined (__GLIBCXX__) && __GLIBCXX__ < 20130322) | |||
| #error "JUCE requires a C++ library containing std::atomic" | |||
| #endif | |||
| diff --git a/modules/juce_core/system/juce_PlatformDefs.h b/modules/juce_core/system/juce_PlatformDefs.h | |||
| index 43000cab6..0a1798ba2 100644 | |||
| --- a/modules/juce_core/system/juce_PlatformDefs.h | |||
| +++ b/modules/juce_core/system/juce_PlatformDefs.h | |||
| @@ -99,11 +99,7 @@ namespace juce | |||
| deliberately and want to ignore the warning. | |||
| */ | |||
| #if JUCE_CLANG | |||
| - #if __has_cpp_attribute(clang::fallthrough) | |||
| - #define JUCE_FALLTHROUGH [[clang::fallthrough]]; | |||
| - #else | |||
| - #define JUCE_FALLTHROUGH | |||
| - #endif | |||
| + #define JUCE_FALLTHROUGH [[clang::fallthrough]]; | |||
| #elif JUCE_GCC | |||
| #if __GNUC__ >= 7 | |||
| #define JUCE_FALLTHROUGH [[gnu::fallthrough]]; | |||
| diff --git a/modules/juce_core/system/juce_TargetPlatform.h b/modules/juce_core/system/juce_TargetPlatform.h | |||
| index 5b4d293bb..6b41688b2 100644 | |||
| --- a/modules/juce_core/system/juce_TargetPlatform.h | |||
| +++ b/modules/juce_core/system/juce_TargetPlatform.h | |||
| @@ -145,8 +145,8 @@ | |||
| #endif | |||
| #if JUCE_MAC | |||
| - #if ! defined (MAC_OS_X_VERSION_10_11) | |||
| - #error "The 10.11 SDK (Xcode 7.3.1+) is required to build JUCE apps. You can create apps that run on macOS 10.7+ by changing the deployment target." | |||
| + #if ! defined (MAC_OS_X_VERSION_10_8) | |||
| + #error "The 10.8 SDK is required to build JUCE apps. You can create apps that run on macOS 10.7+ by changing the deployment target." | |||
| #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7 | |||
| #error "Building for OSX 10.6 is no longer supported!" | |||
| #endif | |||
| diff --git a/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm b/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm | |||
| index de6ffecfc..2a85d25f5 100644 | |||
| --- a/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm | |||
| +++ b/modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm | |||
| @@ -26,6 +26,10 @@ | |||
| namespace juce | |||
| { | |||
| +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_8 | |||
| + #define __nullable | |||
| +#endif | |||
| + | |||
| //============================================================================== | |||
| // This class has been renamed from CoreGraphicsImage to avoid a symbol | |||
| // collision in Pro Tools 2019.12 and possibly 2020 depending on the Pro Tools | |||
| diff --git a/modules/juce_graphics/native/juce_mac_Fonts.mm b/modules/juce_graphics/native/juce_mac_Fonts.mm | |||
| index ff0a23a9f..88142091d 100644 | |||
| --- a/modules/juce_graphics/native/juce_mac_Fonts.mm | |||
| +++ b/modules/juce_graphics/native/juce_mac_Fonts.mm | |||
| @@ -359,20 +359,20 @@ namespace CoreTextTypeLayout | |||
| auto verticalJustification = text.getJustification().getOnlyVerticalFlags(); | |||
| - auto ctFrameArea = [area, minCTFrameHeight, verticalJustification] | |||
| + const Rectangle<float> ctFrameArea = [area, minCTFrameHeight, verticalJustification] | |||
| { | |||
| if (minCTFrameHeight < area.getHeight()) | |||
| - return area; | |||
| + return Rectangle<float> (area); | |||
| if (verticalJustification == Justification::verticallyCentred) | |||
| return area.withSizeKeepingCentre (area.getWidth(), minCTFrameHeight); | |||
| - auto frameArea = area.withHeight (minCTFrameHeight); | |||
| + const Rectangle<float> frameArea = area.withHeight (minCTFrameHeight); | |||
| if (verticalJustification == Justification::bottom) | |||
| return frameArea.withBottomY (area.getBottom()); | |||
| - return frameArea; | |||
| + return Rectangle<float> (frameArea); | |||
| }(); | |||
| auto frame = createCTFrame (framesetter, CGRectMake ((CGFloat) ctFrameArea.getX(), flipHeight - (CGFloat) ctFrameArea.getBottom(), | |||
| diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| index 26ca40630..bd5e69ab0 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm | |||
| @@ -1583,17 +1583,21 @@ private: | |||
| case NSEventTypeSystemDefined: | |||
| case NSEventTypeApplicationDefined: | |||
| case NSEventTypePeriodic: | |||
| + #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| case NSEventTypeGesture: | |||
| + #endif | |||
| case NSEventTypeMagnify: | |||
| case NSEventTypeSwipe: | |||
| case NSEventTypeRotate: | |||
| case NSEventTypeBeginGesture: | |||
| case NSEventTypeEndGesture: | |||
| case NSEventTypeQuickLook: | |||
| - #if JUCE_64BIT | |||
| + #if JUCE_64BIT | |||
| case NSEventTypeSmartMagnify: | |||
| + #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| case NSEventTypePressure: | |||
| #endif | |||
| + #endif | |||
| #if defined (MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12 | |||
| #if JUCE_64BIT | |||
| case NSEventTypeDirectTouch: | |||
| diff --git a/modules/juce_gui_basics/native/juce_mac_Windowing.mm b/modules/juce_gui_basics/native/juce_mac_Windowing.mm | |||
| index 918f0b4a6..63e15d07b 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_mac_Windowing.mm | |||
| +++ b/modules/juce_gui_basics/native/juce_mac_Windowing.mm | |||
| @@ -309,7 +309,7 @@ bool DragAndDropContainer::performExternalDragDropOfFiles (const StringArray& fi | |||
| for (auto& filename : files) | |||
| { | |||
| auto* nsFilename = juceStringToNS (filename); | |||
| - auto fileURL = [NSURL fileURLWithPath: nsFilename]; | |||
| + NSURL* fileURL = [NSURL fileURLWithPath: nsFilename]; | |||
| auto dragItem = [[NSDraggingItem alloc] initWithPasteboardWriter: fileURL]; | |||
| auto eventPos = [event locationInWindow]; | |||
| diff --git a/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp b/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| index b8e6e0c7e..6ad01c68a 100644 | |||
| --- a/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| +++ b/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| @@ -3329,7 +3329,7 @@ void XWindowSystem::handleButtonPressEvent (LinuxComponentPeer* peer, const XBut | |||
| peer->toFront (true); | |||
| peer->handleMouseEvent (MouseInputSource::InputSourceType::mouse, getLogicalMousePos (buttonPressEvent, peer->getPlatformScaleFactor()), | |||
| ModifierKeys::currentModifiers, MouseInputSource::invalidPressure, | |||
| - MouseInputSource::invalidOrientation, getEventTime (buttonPressEvent), {}); | |||
| + MouseInputSource::invalidOrientation, getEventTime (buttonPressEvent)); | |||
| } | |||
| void XWindowSystem::handleButtonPressEvent (LinuxComponentPeer* peer, const XButtonPressedEvent& buttonPressEvent) const | |||
| diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.h b/modules/juce_gui_basics/windows/juce_ComponentPeer.h | |||
| index 691e5679b..ed4f3c199 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.h | |||
| +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.h | |||
| @@ -321,7 +321,7 @@ public: | |||
| //============================================================================== | |||
| void handleMouseEvent (MouseInputSource::InputSourceType type, Point<float> positionWithinPeer, ModifierKeys newMods, float pressure, | |||
| - float orientation, int64 time, PenDetails pen = {}, int touchIndex = 0); | |||
| + float orientation, int64 time, PenDetails pen = PenDetails(), int touchIndex = 0); | |||
| void handleMouseWheel (MouseInputSource::InputSourceType type, Point<float> positionWithinPeer, | |||
| int64 time, const MouseWheelDetails&, int touchIndex = 0); | |||
| diff --git a/modules/juce_gui_extra/juce_gui_extra.cpp b/modules/juce_gui_extra/juce_gui_extra.cpp | |||
| index 9cf367411..d42555e13 100644 | |||
| --- a/modules/juce_gui_extra/juce_gui_extra.cpp | |||
| +++ b/modules/juce_gui_extra/juce_gui_extra.cpp | |||
| @@ -136,7 +136,9 @@ | |||
| #include "misc/juce_PushNotifications.cpp" | |||
| #include "misc/juce_RecentlyOpenedFilesList.cpp" | |||
| #include "misc/juce_SplashScreen.cpp" | |||
| +#if !JUCE_MAC || MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| #include "misc/juce_SystemTrayIconComponent.cpp" | |||
| +#endif | |||
| #include "misc/juce_LiveConstantEditor.cpp" | |||
| #include "misc/juce_AnimatedAppComponent.cpp" | |||
| @@ -146,7 +148,9 @@ | |||
| #if JUCE_MAC | |||
| #include "native/juce_mac_NSViewComponent.mm" | |||
| #include "native/juce_mac_AppleRemote.mm" | |||
| - #include "native/juce_mac_SystemTrayIcon.cpp" | |||
| + #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| + #include "native/juce_mac_SystemTrayIcon.cpp" | |||
| + #endif | |||
| #endif | |||
| #if JUCE_IOS | |||
| diff --git a/modules/juce_gui_extra/juce_gui_extra.h b/modules/juce_gui_extra/juce_gui_extra.h | |||
| index bcec491c9..062bde636 100644 | |||
| --- a/modules/juce_gui_extra/juce_gui_extra.h | |||
| +++ b/modules/juce_gui_extra/juce_gui_extra.h | |||
| @@ -115,7 +115,9 @@ | |||
| #include "misc/juce_PushNotifications.h" | |||
| #include "misc/juce_RecentlyOpenedFilesList.h" | |||
| #include "misc/juce_SplashScreen.h" | |||
| +#if !JUCE_MAC || MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8 | |||
| #include "misc/juce_SystemTrayIconComponent.h" | |||
| +#endif | |||
| #include "misc/juce_WebBrowserComponent.h" | |||
| #include "misc/juce_LiveConstantEditor.h" | |||
| #include "misc/juce_AnimatedAppComponent.h" | |||
| diff --git a/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp b/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp | |||
| index 9786c0875..34695b5e1 100644 | |||
| --- a/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp | |||
| +++ b/modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp | |||
| @@ -157,7 +157,7 @@ void RecentlyOpenedFilesList::forgetRecentFileNatively (const File& file) | |||
| // from the recent list, so we clear them all and add them back excluding | |||
| // the specified file | |||
| - auto sharedDocController = [NSDocumentController sharedDocumentController]; | |||
| + NSDocumentController* sharedDocController = [NSDocumentController sharedDocumentController]; | |||
| auto recentDocumentURLs = [sharedDocController recentDocumentURLs]; | |||
| [sharedDocController clearRecentDocuments: nil]; | |||
| @@ -1,10 +1,10 @@ | |||
| diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
| index 19f1d7ac7..8ffe16b06 100644 | |||
| index ed6688693..ba64e8b2c 100644 | |||
| --- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
| +++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
| @@ -25,7 +25,7 @@ | |||
| @@ -18,7 +18,7 @@ | |||
| #if JUCE_PLUGINHOST_LADSPA && JUCE_LINUX | |||
| #if JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD) | |||
| -#include <ladspa.h> | |||
| +#include "ladspa.h" | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp | |||
| index b980441c9..670cb3969 100644 | |||
| index 099bce14e..fd71901db 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp | |||
| @@ -40,8 +40,6 @@ AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* p) noexcept : proce | |||
| @@ -33,8 +33,6 @@ AudioProcessorEditor::AudioProcessorEditor (AudioProcessor* p) noexcept : proce | |||
| AudioProcessorEditor::~AudioProcessorEditor() | |||
| { | |||
| @@ -11,7 +11,7 @@ index b980441c9..670cb3969 100644 | |||
| // if this fails, then the wrapper hasn't called editorBeingDeleted() on the | |||
| // filter for some reason.. | |||
| jassert (processor.getActiveEditor() != this); | |||
| @@ -56,23 +54,6 @@ void AudioProcessorEditor::hostMIDIControllerIsAvailable (bool) { | |||
| @@ -49,23 +47,6 @@ void AudioProcessorEditor::hostMIDIControllerIsAvailable (bool) { | |||
| void AudioProcessorEditor::initialise() | |||
| { | |||
| @@ -32,50 +32,50 @@ index b980441c9..670cb3969 100644 | |||
| - | |||
| - // END SECTION A | |||
| - | |||
| resizable = false; | |||
| attachConstrainer (&defaultConstrainer); | |||
| resizeListener.reset (new AudioProcessorEditorListener (*this)); | |||
| addComponentListener (resizeListener.get()); | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h | |||
| index ff694b78f..07d3765f4 100644 | |||
| index 9824bf8b6..81a91d8ff 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h | |||
| @@ -206,7 +206,6 @@ private: | |||
| bool resizable; | |||
| @@ -228,7 +228,6 @@ private: | |||
| ComponentBoundsConstrainer defaultConstrainer; | |||
| ComponentBoundsConstrainer* constrainer = {}; | |||
| ComponentBoundsConstrainer* constrainer = nullptr; | |||
| AudioProcessorEditorHostContext* hostContext = nullptr; | |||
| - Component::SafePointer<Component> splashScreen; | |||
| AffineTransform hostScaleTransform; | |||
| JUCE_DECLARE_NON_COPYABLE (AudioProcessorEditor) | |||
| diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| index 056ff591b..a4d798606 100644 | |||
| index d9697568b..2727a4507 100644 | |||
| --- a/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| +++ b/modules/juce_gui_basics/juce_gui_basics.cpp | |||
| @@ -218,7 +218,6 @@ namespace juce | |||
| #include "application/juce_Application.cpp" | |||
| @@ -242,7 +242,6 @@ namespace juce | |||
| #include "misc/juce_BubbleComponent.cpp" | |||
| #include "misc/juce_DropShadower.cpp" | |||
| #include "misc/juce_FocusOutline.cpp" | |||
| -#include "misc/juce_JUCESplashScreen.cpp" | |||
| #include "layout/juce_FlexBox.cpp" | |||
| #include "layout/juce_GridItem.cpp" | |||
| diff --git a/modules/juce_gui_basics/juce_gui_basics.h b/modules/juce_gui_basics/juce_gui_basics.h | |||
| index 729461282..a4873d04b 100644 | |||
| index 57d10f3ee..8878ae4c6 100644 | |||
| --- a/modules/juce_gui_basics/juce_gui_basics.h | |||
| +++ b/modules/juce_gui_basics/juce_gui_basics.h | |||
| @@ -250,7 +250,6 @@ namespace juce | |||
| #include "menus/juce_BurgerMenuComponent.h" | |||
| @@ -257,7 +257,6 @@ namespace juce | |||
| #include "buttons/juce_ToolbarButton.h" | |||
| #include "misc/juce_DropShadower.h" | |||
| #include "misc/juce_FocusOutline.h" | |||
| -#include "misc/juce_JUCESplashScreen.h" | |||
| #include "widgets/juce_TreeView.h" | |||
| #include "windows/juce_TopLevelWindow.h" | |||
| #include "windows/juce_AlertWindow.h" | |||
| #include "windows/juce_MessageBoxOptions.h" | |||
| diff --git a/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp b/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp | |||
| index dc3c7279a..d1d20d6c7 100644 | |||
| index 3904da287..dea49aa70 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp | |||
| +++ b/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp | |||
| @@ -41,8 +41,6 @@ ResizableWindow::ResizableWindow (const String& name, Colour bkgnd, bool shouldA | |||
| @@ -34,8 +34,6 @@ ResizableWindow::ResizableWindow (const String& name, Colour bkgnd, bool shouldA | |||
| ResizableWindow::~ResizableWindow() | |||
| { | |||
| @@ -84,7 +84,7 @@ index dc3c7279a..d1d20d6c7 100644 | |||
| // Don't delete or remove the resizer components yourself! They're managed by the | |||
| // ResizableWindow, and you should leave them alone! You may have deleted them | |||
| // accidentally by careless use of deleteAllChildren()..? | |||
| @@ -60,27 +58,6 @@ ResizableWindow::~ResizableWindow() | |||
| @@ -53,27 +51,6 @@ ResizableWindow::~ResizableWindow() | |||
| void ResizableWindow::initialise (const bool shouldAddToDesktop) | |||
| { | |||
| @@ -113,10 +113,10 @@ index dc3c7279a..d1d20d6c7 100644 | |||
| lastNonFullScreenPos.setBounds (50, 50, 256, 256); | |||
| diff --git a/modules/juce_gui_basics/windows/juce_ResizableWindow.h b/modules/juce_gui_basics/windows/juce_ResizableWindow.h | |||
| index d67303595..e59f620c1 100644 | |||
| index d9e4e7fcf..310767c0f 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_ResizableWindow.h | |||
| +++ b/modules/juce_gui_basics/windows/juce_ResizableWindow.h | |||
| @@ -383,7 +383,7 @@ protected: | |||
| @@ -384,7 +384,7 @@ protected: | |||
| private: | |||
| //============================================================================== | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| index 082a5697a..c79ca18ea 100644 | |||
| index 661f90d60..f3a8f061b 100644 | |||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| @@ -600,12 +600,39 @@ File juce_getExecutableFile() | |||
| @@ -611,12 +611,39 @@ File juce_getExecutableFile() | |||
| auto localSymbol = (void*) juce_getExecutableFile; | |||
| dladdr (localSymbol, &exeInfo); | |||
| @@ -1,16 +1,15 @@ | |||
| diff --git a/modules/juce_core/native/juce_linux_Files.cpp b/modules/juce_core/native/juce_linux_Files.cpp | |||
| index d2a302e3e..3dc4602ce 100644 | |||
| index f661e4ab4..dce73fcc2 100644 | |||
| --- a/modules/juce_core/native/juce_linux_Files.cpp | |||
| +++ b/modules/juce_core/native/juce_linux_Files.cpp | |||
| @@ -211,15 +211,21 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||
| @@ -223,15 +223,21 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||
| const char* const argv[4] = { "/bin/sh", "-c", cmdString.toUTF8(), nullptr }; | |||
| const char* const argv[] = { "/bin/sh", "-c", cmdString.toUTF8(), nullptr }; | |||
| - auto cpid = fork(); | |||
| +#if JUCE_USE_VFORK | |||
| + const auto cpid = vfork(); | |||
| +#else | |||
| + const auto cpid = fork(); | |||
| const auto cpid = fork(); | |||
| +#endif | |||
| if (cpid == 0) | |||
| @@ -22,13 +21,13 @@ index d2a302e3e..3dc4602ce 100644 | |||
| // Child process | |||
| - execve (argv[0], (char**) argv, environ); | |||
| - exit (0); | |||
| + if (execvp (argv[0], (char**) argv) < 0) | |||
| + if (execve (argv[0], (char**) argv, environ) < 0) | |||
| + _exit (0); | |||
| } | |||
| return cpid >= 0; | |||
| diff --git a/modules/juce_core/native/juce_mac_Files.mm b/modules/juce_core/native/juce_mac_Files.mm | |||
| index 1a4d07516..f385a089f 100644 | |||
| index aefa76317..066c12cde 100644 | |||
| --- a/modules/juce_core/native/juce_mac_Files.mm | |||
| +++ b/modules/juce_core/native/juce_mac_Files.mm | |||
| @@ -92,23 +92,22 @@ namespace MacFileHelpers | |||
| @@ -65,10 +64,10 @@ index 1a4d07516..f385a089f 100644 | |||
| #endif | |||
| } | |||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| index c79ca18ea..ad46cf390 100644 | |||
| index f3a8f061b..bcd3eab59 100644 | |||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| @@ -1104,7 +1104,18 @@ public: | |||
| @@ -1125,7 +1125,18 @@ public: | |||
| if (pipe (pipeHandles) == 0) | |||
| { | |||
| @@ -88,7 +87,7 @@ index c79ca18ea..ad46cf390 100644 | |||
| if (result < 0) | |||
| { | |||
| @@ -1113,6 +1124,7 @@ public: | |||
| @@ -1134,6 +1145,7 @@ public: | |||
| } | |||
| else if (result == 0) | |||
| { | |||
| @@ -96,7 +95,7 @@ index c79ca18ea..ad46cf390 100644 | |||
| // we're the child process.. | |||
| close (pipeHandles[0]); // close the read handle | |||
| @@ -1127,17 +1139,10 @@ public: | |||
| @@ -1148,17 +1160,10 @@ public: | |||
| dup2 (open ("/dev/null", O_WRONLY), STDERR_FILENO); | |||
| close (pipeHandles[1]); | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| index ad46cf390..13724ba7c 100644 | |||
| index bcd3eab59..eb5fc3300 100644 | |||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| @@ -1239,6 +1239,11 @@ public: | |||
| @@ -1260,6 +1260,11 @@ public: | |||
| return 0; | |||
| } | |||
| @@ -15,10 +15,10 @@ index ad46cf390..13724ba7c 100644 | |||
| int pipeHandle = 0; | |||
| int exitCode = -1; | |||
| diff --git a/modules/juce_core/native/juce_win32_Threads.cpp b/modules/juce_core/native/juce_win32_Threads.cpp | |||
| index 4a4148119..1c38ff2cf 100644 | |||
| index 8d15042fe..867e6fd2f 100644 | |||
| --- a/modules/juce_core/native/juce_win32_Threads.cpp | |||
| +++ b/modules/juce_core/native/juce_win32_Threads.cpp | |||
| @@ -477,6 +477,11 @@ public: | |||
| @@ -489,6 +489,11 @@ public: | |||
| return (uint32) exitCode; | |||
| } | |||
| @@ -31,7 +31,7 @@ index 4a4148119..1c38ff2cf 100644 | |||
| private: | |||
| diff --git a/modules/juce_core/threads/juce_ChildProcess.cpp b/modules/juce_core/threads/juce_ChildProcess.cpp | |||
| index 3b284c25a..31e9c8d94 100644 | |||
| index 1e559b1c9..76f13812f 100644 | |||
| --- a/modules/juce_core/threads/juce_ChildProcess.cpp | |||
| +++ b/modules/juce_core/threads/juce_ChildProcess.cpp | |||
| @@ -81,6 +81,11 @@ String ChildProcess::readAllProcessOutput() | |||
| @@ -47,7 +47,7 @@ index 3b284c25a..31e9c8d94 100644 | |||
| //============================================================================== | |||
| #if JUCE_UNIT_TESTS | |||
| diff --git a/modules/juce_core/threads/juce_ChildProcess.h b/modules/juce_core/threads/juce_ChildProcess.h | |||
| index 47a26281b..74dbb11ab 100644 | |||
| index 3c5e83bba..71892f8e9 100644 | |||
| --- a/modules/juce_core/threads/juce_ChildProcess.h | |||
| +++ b/modules/juce_core/threads/juce_ChildProcess.h | |||
| @@ -101,6 +101,8 @@ public: | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp | |||
| index b799ee2e4..803740c63 100644 | |||
| index 4d303d74e..3cf9d34e1 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp | |||
| +++ b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp | |||
| @@ -26,6 +26,7 @@ | |||
| @@ -19,6 +19,7 @@ | |||
| namespace juce | |||
| { | |||
| @@ -10,7 +10,7 @@ index b799ee2e4..803740c63 100644 | |||
| static bool exeIsAvailable (String executable) | |||
| { | |||
| ChildProcess child; | |||
| @@ -245,10 +246,11 @@ private: | |||
| @@ -248,10 +249,11 @@ private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Native) | |||
| }; | |||
| @@ -23,12 +23,12 @@ index b799ee2e4..803740c63 100644 | |||
| return false; | |||
| #else | |||
| static bool canUseNativeBox = exeIsAvailable ("zenity") || exeIsAvailable ("kdialog"); | |||
| @@ -258,7 +260,11 @@ bool FileChooser::isPlatformDialogAvailable() | |||
| @@ -261,7 +263,11 @@ bool FileChooser::isPlatformDialogAvailable() | |||
| FileChooser::Pimpl* FileChooser::showPlatformDialog (FileChooser& owner, int flags, FilePreviewComponent*) | |||
| std::shared_ptr<FileChooser::Pimpl> FileChooser::showPlatformDialog (FileChooser& owner, int flags, FilePreviewComponent*) | |||
| { | |||
| +#if JUCE_MODAL_LOOPS_PERMITTED | |||
| return new Native (owner, flags); | |||
| return std::make_shared<Native> (owner, flags); | |||
| +#else | |||
| + return nullptr; | |||
| +#endif | |||
| @@ -1,8 +1,21 @@ | |||
| diff --git a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||
| index 926753296..7906895e7 100644 | |||
| --- a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||
| +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||
| @@ -835,7 +835,7 @@ void MainHostWindow::showAudioSettings() | |||
| o.componentToCentreAround = this; | |||
| o.dialogBackgroundColour = getLookAndFeel().findColour (ResizableWindow::backgroundColourId); | |||
| o.escapeKeyTriggersCloseButton = true; | |||
| - o.useNativeTitleBar = false; | |||
| + o.useNativeTitleBar = true; | |||
| o.resizable = false; | |||
| auto* w = o.create(); | |||
| diff --git a/modules/juce_gui_basics/windows/juce_DialogWindow.cpp b/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
| index ea2675d59..92bf09e16 100644 | |||
| index eed3b6dbf..007047557 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
| +++ b/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
| @@ -131,7 +131,8 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
| @@ -127,7 +127,8 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
| Colour backgroundColour, | |||
| const bool escapeKeyTriggersCloseButton, | |||
| const bool resizable, | |||
| @@ -12,7 +25,7 @@ index ea2675d59..92bf09e16 100644 | |||
| { | |||
| LaunchOptions o; | |||
| o.dialogTitle = dialogTitle; | |||
| @@ -139,9 +140,9 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
| @@ -135,9 +136,9 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
| o.componentToCentreAround = componentToCentreAround; | |||
| o.dialogBackgroundColour = backgroundColour; | |||
| o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||
| @@ -23,7 +36,7 @@ index ea2675d59..92bf09e16 100644 | |||
| o.launchAsync(); | |||
| } | |||
| @@ -153,7 +154,8 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
| @@ -149,7 +150,8 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
| Colour backgroundColour, | |||
| const bool escapeKeyTriggersCloseButton, | |||
| const bool resizable, | |||
| @@ -33,7 +46,7 @@ index ea2675d59..92bf09e16 100644 | |||
| { | |||
| LaunchOptions o; | |||
| o.dialogTitle = dialogTitle; | |||
| @@ -161,9 +163,9 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
| @@ -157,9 +159,9 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
| o.componentToCentreAround = componentToCentreAround; | |||
| o.dialogBackgroundColour = backgroundColour; | |||
| o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||
| @@ -45,26 +58,52 @@ index ea2675d59..92bf09e16 100644 | |||
| return o.runModal(); | |||
| } | |||
| diff --git a/modules/juce_gui_basics/windows/juce_DialogWindow.h b/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||
| index a10211525..de9ef2f4b 100644 | |||
| index 0a343619f..8f01f421d 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||
| +++ b/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||
| @@ -193,7 +193,8 @@ public: | |||
| @@ -192,7 +192,8 @@ public: | |||
| Colour backgroundColour, | |||
| bool escapeKeyTriggersCloseButton, | |||
| bool shouldBeResizable = false, | |||
| - bool useBottomRightCornerResizer = false); | |||
| + bool useBottomRightCornerResizer = false, | |||
| + bool useNativeTitleBar = false); | |||
| + bool useNativeTitleBar = true); | |||
| #if JUCE_MODAL_LOOPS_PERMITTED || DOXYGEN | |||
| #if JUCE_MODAL_LOOPS_PERMITTED | |||
| /** Easy way of quickly showing a dialog box containing a given component. | |||
| @@ -239,7 +240,8 @@ public: | |||
| @@ -238,7 +239,8 @@ public: | |||
| Colour backgroundColour, | |||
| bool escapeKeyTriggersCloseButton, | |||
| bool shouldBeResizable = false, | |||
| - bool useBottomRightCornerResizer = false); | |||
| + bool useBottomRightCornerResizer = false, | |||
| + bool useNativeTitleBar = false); | |||
| + bool useNativeTitleBar = true); | |||
| #endif | |||
| diff --git a/modules/juce_gui_basics/windows/juce_TopLevelWindow.h b/modules/juce_gui_basics/windows/juce_TopLevelWindow.h | |||
| index 75620cb01..89c9477bb 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_TopLevelWindow.h | |||
| +++ b/modules/juce_gui_basics/windows/juce_TopLevelWindow.h | |||
| @@ -147,7 +147,7 @@ protected: | |||
| private: | |||
| friend class TopLevelWindowManager; | |||
| friend class ResizableWindow; | |||
| - bool useDropShadow = true, useNativeTitleBar = false, isCurrentlyActive = false; | |||
| + bool useDropShadow = true, useNativeTitleBar = true, isCurrentlyActive = false; | |||
| std::unique_ptr<DropShadower> shadower; | |||
| std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override; | |||
| diff --git a/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp b/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp | |||
| index e94c544b5..70b70d386 100644 | |||
| --- a/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp | |||
| +++ b/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp | |||
| @@ -85,7 +85,7 @@ void PreferencesPanel::showInDialogBox (const String& dialogTitle, int dialogWid | |||
| o.dialogTitle = dialogTitle; | |||
| o.dialogBackgroundColour = backgroundColour; | |||
| o.escapeKeyTriggersCloseButton = false; | |||
| - o.useNativeTitleBar = false; | |||
| + o.useNativeTitleBar = true; | |||
| o.resizable = false; | |||
| o.launchAsync(); | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp b/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| index 6ad01c68a..490a3a792 100644 | |||
| index 165ca28c6..f3cf5c276 100644 | |||
| --- a/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| +++ b/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||
| @@ -2804,10 +2804,14 @@ void XWindowSystem::setWindowType (::Window windowH, int styleFlags) const | |||
| @@ -2935,10 +2935,14 @@ void XWindowSystem::setWindowType (::Window windowH, int styleFlags) const | |||
| if (atoms.windowType != None) | |||
| { | |||
| @@ -1,16 +0,0 @@ | |||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| index 13724ba7c..f8892081c 100644 | |||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
| @@ -989,7 +989,11 @@ bool Thread::setThreadPriority (void* handle, int priority) | |||
| if (pthread_getschedparam ((pthread_t) handle, &policy, ¶m) != 0) | |||
| return false; | |||
| + #if JUCE_LINUX | |||
| + policy = priority < 9 ? SCHED_OTHER : SCHED_RR; | |||
| + #else | |||
| policy = priority == 0 ? SCHED_OTHER : SCHED_RR; | |||
| + #endif | |||
| const int minPriority = sched_get_priority_min (policy); | |||
| const int maxPriority = sched_get_priority_max (policy); | |||
| @@ -0,0 +1,14 @@ | |||
| diff --git a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||
| index a272fee76..5b484f4e4 100644 | |||
| --- a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||
| +++ b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||
| @@ -56,7 +56,9 @@ typedef AudioComponentInstance AudioUnit; | |||
| } | |||
| @endcode | |||
| */ | |||
| +#ifndef _VESTIGE_H | |||
| struct AEffect; | |||
| +#endif | |||
| //============================================================================== | |||
| namespace juce | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| index ae60fde15..dbad562ef 100644 | |||
| index 361f13d9a..c2710aa5c 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| @@ -1116,6 +1116,11 @@ public: | |||
| @@ -1111,6 +1111,11 @@ public: | |||
| /** This method is called when the layout of the audio processor changes. */ | |||
| virtual void processorLayoutsChanged(); | |||
| @@ -14,11 +14,3 @@ index ae60fde15..dbad562ef 100644 | |||
| //============================================================================== | |||
| /** Adds a listener that will be called when an aspect of this processor changes. */ | |||
| virtual void addListener (AudioProcessorListener* newListener); | |||
| @@ -1200,6 +1205,7 @@ public: | |||
| wrapperType_AudioUnitv3, | |||
| wrapperType_RTAS, | |||
| wrapperType_AAX, | |||
| + wrapperType_LV2, | |||
| wrapperType_Standalone, | |||
| wrapperType_Unity | |||
| }; | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| index 94f6bf569..ddbe6fd65 100644 | |||
| index 652665434..243e194fc 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| @@ -294,9 +294,6 @@ public: | |||
| @@ -246,9 +246,6 @@ public: | |||
| // You must at least have some channels | |||
| jassert (processor->isMidiEffect() || (maxNumInChannels > 0 || maxNumOutChannels > 0)); | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| index 7e2122580..cff9b7a88 100644 | |||
| index 243e194fc..a2b0286fb 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| @@ -1841,7 +1841,7 @@ private: | |||
| @@ -1853,7 +1853,7 @@ private: | |||
| pointer_sized_int handleGetPlugInName (VstOpCodeArguments args) | |||
| { | |||
| @@ -1,17 +0,0 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| index ebc9325ca..cabbbcf13 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| @@ -203,11 +203,11 @@ struct SharedMessageThread : public Thread | |||
| void run() override | |||
| { | |||
| initialiseJuce_GUI(); | |||
| - initialised = true; | |||
| MessageManager::getInstance()->setCurrentThreadAsMessageThread(); | |||
| XWindowSystem::getInstance(); | |||
| + initialised = true; | |||
| while ((! threadShouldExit()) && MessageManager::getInstance()->runDispatchLoopUntil (250)) | |||
| {} | |||
| @@ -1,20 +0,0 @@ | |||
| diff --git a/modules/juce_events/messages/juce_MessageManager.h b/modules/juce_events/messages/juce_MessageManager.h | |||
| index ae7231101..fff5b9794 100644 | |||
| --- a/modules/juce_events/messages/juce_MessageManager.h | |||
| +++ b/modules/juce_events/messages/juce_MessageManager.h | |||
| @@ -311,6 +311,7 @@ public: | |||
| // Internal methods - do not use! | |||
| void deliverBroadcastMessage (const String&); | |||
| ~MessageManager() noexcept; | |||
| + static bool dispatchNextMessageOnSystemQueue (bool returnIfNoPendingMessages); | |||
| #endif | |||
| private: | |||
| @@ -333,7 +334,6 @@ private: | |||
| static void* exitModalLoopCallback (void*); | |||
| static void doPlatformSpecificInitialisation(); | |||
| static void doPlatformSpecificShutdown(); | |||
| - static bool dispatchNextMessageOnSystemQueue (bool returnIfNoPendingMessages); | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MessageManager) | |||
| }; | |||
| @@ -1,17 +1,136 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | |||
| index e9401a981..6c4d12546 100644 | |||
| --- a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | |||
| +++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | |||
| @@ -32,12 +32,17 @@ | |||
| #include <juce_audio_plugin_client/juce_audio_plugin_client.h> | |||
| #include <juce_audio_plugin_client/utility/juce_CheckSettingMacros.h> | |||
| -#include <juce_audio_plugin_client/utility/juce_LinuxMessageThread.h> | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include <juce_audio_plugin_client/utility/juce_LinuxMessageThread.h> | |||
| +#endif | |||
| #include <juce_audio_processors/utilities/juce_FlagCache.h> | |||
| #include <juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp> | |||
| -#include "JuceLV2Defines.h" | |||
| +#ifndef JucePlugin_LV2URI | |||
| + #include "JuceLV2Defines.h" | |||
| +#endif | |||
| + | |||
| #include <juce_audio_processors/format_types/juce_LV2Common.h> | |||
| #include <fstream> | |||
| @@ -679,6 +684,7 @@ public: | |||
| return LV2_STATE_SUCCESS; | |||
| } | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| std::unique_ptr<AudioProcessorEditor> createEditor() | |||
| { | |||
| return std::unique_ptr<AudioProcessorEditor> (processor->createEditorIfNeeded()); | |||
| @@ -688,6 +694,7 @@ public: | |||
| { | |||
| processor->editorBeingDeleted (editor); | |||
| } | |||
| + #endif | |||
| static std::unique_ptr<AudioProcessor> createProcessorInstance() | |||
| { | |||
| @@ -745,7 +752,7 @@ private: | |||
| ScopedJuceInitialiser_GUI scopedJuceInitialiser; | |||
| - #if JUCE_LINUX || JUCE_BSD | |||
| + #if (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| SharedResourcePointer<MessageThread> messageThread; | |||
| #endif | |||
| @@ -828,6 +835,7 @@ private: | |||
| "\tlv2:binary <" << libraryPath.getFileName() << "> ;\n" | |||
| "\trdfs:seeAlso <dsp.ttl> .\n"; | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| if (proc.hasEditor()) | |||
| { | |||
| #if JUCE_MAC | |||
| @@ -847,6 +855,7 @@ private: | |||
| "\trdfs:seeAlso <ui.ttl> .\n" | |||
| "\n"; | |||
| } | |||
| + #endif | |||
| for (auto i = 0, end = proc.getNumPrograms(); i < end; ++i) | |||
| { | |||
| @@ -1073,8 +1082,10 @@ private: | |||
| os << "<" JucePlugin_LV2URI ">\n"; | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| if (proc.hasEditor()) | |||
| os << "\tui:ui <" << JucePluginLV2UriUi << "> ;\n"; | |||
| + #endif | |||
| const auto versionParts = StringArray::fromTokens (JucePlugin_VersionString, ".", ""); | |||
| @@ -1270,6 +1281,7 @@ private: | |||
| static Result writeUiTtl (AudioProcessor& proc, const File& libraryPath) | |||
| { | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| if (! proc.hasEditor()) | |||
| return Result::ok(); | |||
| @@ -1307,6 +1319,7 @@ private: | |||
| "\topts:supportedOption\n" | |||
| "\t\tui:scaleFactor ,\n" | |||
| "\t\tparam:sampleRate .\n"; | |||
| + #endif | |||
| return Result::ok(); | |||
| } | |||
| @@ -1436,6 +1449,7 @@ static lv2_shared::NumericAtomParser::ParseResult<float> findScaleFactor (const | |||
| return parser.parseNumericOption<float> (scaleFactorOption); | |||
| } | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| class LV2UIInstance : private Component, | |||
| private ComponentListener | |||
| { | |||
| @@ -1749,6 +1763,7 @@ LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor (uint32_t index) | |||
| return &descriptor; | |||
| } | |||
| +#endif | |||
| } | |||
| } | |||
| diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
| index 43ad88e1b..149154804 100644 | |||
| index 80914cc0a..ce5e329d2 100644 | |||
| --- a/modules/juce_audio_processors/juce_audio_processors.cpp | |||
| +++ b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
| @@ -47,7 +47,7 @@ | |||
| @@ -27,7 +27,9 @@ | |||
| #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | |||
| #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | |||
| -#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 | |||
| +#endif | |||
| #define JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER 1 | |||
| #define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1 | |||
| @@ -43,7 +45,7 @@ | |||
| #endif | |||
| #endif | |||
| -#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && JUCE_LINUX | |||
| +#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && JUCE_LINUX && ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| -#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) | |||
| +#if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| #include <X11/Xlib.h> | |||
| #include <X11/Xutil.h> | |||
| #include <sys/utsname.h> | |||
| @@ -230,9 +230,11 @@ struct AutoResizingNSViewComponentWithParent : public AutoResizingNSViewCompone | |||
| @@ -202,17 +204,21 @@ private: | |||
| #include "format_types/juce_LegacyAudioParameter.cpp" | |||
| #include "processors/juce_AudioProcessor.cpp" | |||
| #include "processors/juce_AudioPluginInstance.cpp" | |||
| @@ -25,11 +144,80 @@ index 43ad88e1b..149154804 100644 | |||
| #include "processors/juce_PluginDescription.cpp" | |||
| #include "format_types/juce_LADSPAPluginFormat.cpp" | |||
| #include "format_types/juce_VSTPluginFormat.cpp" | |||
| #include "format_types/juce_VST3PluginFormat.cpp" | |||
| #include "format_types/juce_AudioUnitPluginFormat.mm" | |||
| -#include "scanning/juce_KnownPluginList.cpp" | |||
| -#include "scanning/juce_PluginDirectoryScanner.cpp" | |||
| -#include "scanning/juce_PluginListComponent.cpp" | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include "scanning/juce_KnownPluginList.cpp" | |||
| + #include "scanning/juce_PluginDirectoryScanner.cpp" | |||
| + #include "scanning/juce_PluginListComponent.cpp" | |||
| +#endif | |||
| #include "processors/juce_AudioProcessorParameterGroup.cpp" | |||
| #include "utilities/juce_AudioProcessorParameterWithID.cpp" | |||
| #include "utilities/juce_RangedAudioParameter.cpp" | |||
| @@ -220,7 +226,9 @@ private: | |||
| #include "utilities/juce_AudioParameterInt.cpp" | |||
| #include "utilities/juce_AudioParameterBool.cpp" | |||
| #include "utilities/juce_AudioParameterChoice.cpp" | |||
| -#include "utilities/juce_ParameterAttachments.cpp" | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include "utilities/juce_ParameterAttachments.cpp" | |||
| +#endif | |||
| #include "utilities/juce_AudioProcessorValueTreeState.cpp" | |||
| #include "utilities/juce_PluginHostType.cpp" | |||
| #include "utilities/juce_NativeScaleFactorNotifier.cpp" | |||
| @@ -231,3 +239,8 @@ private: | |||
| #include "format_types/juce_VST3PluginFormat_test.cpp" | |||
| #include "format_types/juce_LV2PluginFormat_test.cpp" | |||
| #endif | |||
| + | |||
| +#if JUCE_AUDIOPROCESSOR_NO_GUI | |||
| +// commonly used classes in DSP code | |||
| +namespace juce { Colour::Colour(juce::uint32) noexcept {} } | |||
| +#endif | |||
| diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h | |||
| index 553e3d24b..838167ab5 100644 | |||
| --- a/modules/juce_audio_processors/juce_audio_processors.h | |||
| +++ b/modules/juce_audio_processors/juce_audio_processors.h | |||
| @@ -123,14 +123,18 @@ | |||
| #include "processors/juce_AudioProcessorParameter.h" | |||
| #include "processors/juce_HostedAudioProcessorParameter.h" | |||
| #include "processors/juce_AudioProcessorEditorHostContext.h" | |||
| -#include "processors/juce_AudioProcessorEditor.h" | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include "processors/juce_AudioProcessorEditor.h" | |||
| +#endif | |||
| #include "processors/juce_AudioProcessorListener.h" | |||
| #include "processors/juce_AudioProcessorParameterGroup.h" | |||
| #include "processors/juce_AudioProcessor.h" | |||
| #include "processors/juce_PluginDescription.h" | |||
| #include "processors/juce_AudioPluginInstance.h" | |||
| #include "processors/juce_AudioProcessorGraph.h" | |||
| -#include "processors/juce_GenericAudioProcessorEditor.h" | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include "processors/juce_GenericAudioProcessorEditor.h" | |||
| +#endif | |||
| #include "format/juce_AudioPluginFormat.h" | |||
| #include "format/juce_AudioPluginFormatManager.h" | |||
| #include "scanning/juce_KnownPluginList.h" | |||
| @@ -148,7 +152,9 @@ | |||
| #include "utilities/juce_AudioParameterInt.h" | |||
| #include "utilities/juce_AudioParameterBool.h" | |||
| #include "utilities/juce_AudioParameterChoice.h" | |||
| -#include "utilities/juce_ParameterAttachments.h" | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| + #include "utilities/juce_ParameterAttachments.h" | |||
| +#endif | |||
| #include "utilities/juce_AudioProcessorValueTreeState.h" | |||
| #include "utilities/juce_PluginHostType.h" | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
| index 040accf2e..df0b6c67b 100644 | |||
| index 6b6921b30..48744f05f 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
| @@ -51,12 +51,14 @@ AudioProcessor::AudioProcessor (const BusesProperties& ioConfig) | |||
| @@ -43,12 +43,14 @@ AudioProcessor::AudioProcessor (const BusesProperties& ioConfig) | |||
| AudioProcessor::~AudioProcessor() | |||
| { | |||
| @@ -44,7 +232,7 @@ index 040accf2e..df0b6c67b 100644 | |||
| #if JUCE_DEBUG && ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING | |||
| // This will fail if you've called beginParameterChangeGesture() for one | |||
| @@ -826,6 +828,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang | |||
| @@ -867,6 +869,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang | |||
| processorLayoutsChanged(); | |||
| } | |||
| @@ -52,7 +240,7 @@ index 040accf2e..df0b6c67b 100644 | |||
| //============================================================================== | |||
| void AudioProcessor::editorBeingDeleted (AudioProcessorEditor* const editor) noexcept | |||
| { | |||
| @@ -862,6 +865,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() | |||
| @@ -903,6 +906,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() | |||
| return ed; | |||
| } | |||
| @@ -61,10 +249,10 @@ index 040accf2e..df0b6c67b 100644 | |||
| //============================================================================== | |||
| void AudioProcessor::getCurrentProgramStateInformation (juce::MemoryBlock& destData) | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| index f72a4ed3f..849b77d3c 100644 | |||
| index c2710aa5c..8b15f023f 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
| @@ -926,6 +926,7 @@ public: | |||
| @@ -921,6 +921,7 @@ public: | |||
| */ | |||
| virtual void setNonRealtime (bool isNonRealtime) noexcept; | |||
| @@ -72,7 +260,7 @@ index f72a4ed3f..849b77d3c 100644 | |||
| //============================================================================== | |||
| /** Creates the processor's GUI. | |||
| @@ -975,6 +976,7 @@ public: | |||
| @@ -970,6 +971,7 @@ public: | |||
| This may call createEditor() internally to create the component. | |||
| */ | |||
| AudioProcessorEditor* createEditorIfNeeded(); | |||
| @@ -80,9 +268,9 @@ index f72a4ed3f..849b77d3c 100644 | |||
| //============================================================================== | |||
| /** Returns the default number of steps for a parameter. | |||
| @@ -1191,9 +1193,11 @@ public: | |||
| @@ -1231,9 +1233,11 @@ public: | |||
| virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return CurveData(); } | |||
| virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; } | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| //============================================================================== | |||
| @@ -92,7 +280,17 @@ index f72a4ed3f..849b77d3c 100644 | |||
| /** Flags to indicate the type of plugin context in which a processor is being used. */ | |||
| enum WrapperType | |||
| @@ -1468,7 +1472,9 @@ private: | |||
| @@ -1264,7 +1268,9 @@ public: | |||
| struct TrackProperties | |||
| { | |||
| String name; // The name of the track - this will be empty if the track name is not known | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| Colour colour; // The colour of the track - this will be transparentBlack if the colour is not known | |||
| + #endif | |||
| // other properties may be added in the future | |||
| }; | |||
| @@ -1513,7 +1519,9 @@ private: | |||
| //============================================================================== | |||
| Array<AudioProcessorListener*> listeners; | |||
| @@ -103,10 +301,10 @@ index f72a4ed3f..849b77d3c 100644 | |||
| int blockSize = 0, latencySamples = 0; | |||
| bool suspended = false; | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
| index 17c5af30c..3d4a0d428 100644 | |||
| index fd013c4d9..03b74cfa1 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
| @@ -1519,8 +1519,10 @@ bool AudioProcessorGraph::AudioGraphIOProcessor::producesMidi() const | |||
| @@ -1575,8 +1575,10 @@ bool AudioProcessorGraph::AudioGraphIOProcessor::producesMidi() const | |||
| bool AudioProcessorGraph::AudioGraphIOProcessor::isInput() const noexcept { return type == audioInputNode || type == midiInputNode; } | |||
| bool AudioProcessorGraph::AudioGraphIOProcessor::isOutput() const noexcept { return type == audioOutputNode || type == midiOutputNode; } | |||
| @@ -118,10 +316,10 @@ index 17c5af30c..3d4a0d428 100644 | |||
| int AudioProcessorGraph::AudioGraphIOProcessor::getNumPrograms() { return 0; } | |||
| int AudioProcessorGraph::AudioGraphIOProcessor::getCurrentProgram() { return 0; } | |||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||
| index a60e67d84..17a121893 100644 | |||
| index 9c54201dc..d1046844f 100644 | |||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||
| @@ -355,8 +355,10 @@ public: | |||
| @@ -357,8 +357,10 @@ public: | |||
| bool acceptsMidi() const override; | |||
| bool producesMidi() const override; | |||
| @@ -132,7 +330,7 @@ index a60e67d84..17a121893 100644 | |||
| int getNumPrograms() override; | |||
| int getCurrentProgram() override; | |||
| @@ -392,8 +394,10 @@ public: | |||
| @@ -394,8 +396,10 @@ public: | |||
| bool acceptsMidi() const override; | |||
| bool producesMidi() const override; | |||
| @@ -143,3 +341,78 @@ index a60e67d84..17a121893 100644 | |||
| int getNumPrograms() override { return 0; } | |||
| int getCurrentProgram() override { return 0; } | |||
| void setCurrentProgram (int) override { } | |||
| diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp | |||
| index a7e8c8af1..2da1d9023 100644 | |||
| --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp | |||
| +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp | |||
| @@ -466,6 +466,7 @@ void AudioProcessorValueTreeState::timerCallback() | |||
| } | |||
| //============================================================================== | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| template <typename Attachment, typename Control> | |||
| std::unique_ptr<Attachment> makeAttachment (const AudioProcessorValueTreeState& stateToUse, | |||
| const String& parameterID, | |||
| @@ -498,6 +499,7 @@ AudioProcessorValueTreeState::ButtonAttachment::ButtonAttachment (AudioProcessor | |||
| : attachment (makeAttachment<ButtonParameterAttachment> (stateToUse, parameterID, button)) | |||
| { | |||
| } | |||
| +#endif | |||
| //============================================================================== | |||
| //============================================================================== | |||
| diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h | |||
| index 3942f3345..7c113c9a2 100644 | |||
| --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h | |||
| +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h | |||
| @@ -519,6 +519,7 @@ public: | |||
| friend class AudioProcessorValueTreeState::ParameterAdapter; | |||
| }; | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| //============================================================================== | |||
| /** An object of this class maintains a connection between a Slider and a parameter | |||
| in an AudioProcessorValueTreeState. | |||
| @@ -586,6 +587,7 @@ public: | |||
| std::unique_ptr<ButtonParameterAttachment> attachment; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonAttachment) | |||
| }; | |||
| + #endif | |||
| private: | |||
| //============================================================================== | |||
| diff --git a/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp b/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp | |||
| index f51fed0d3..7e07d9f89 100644 | |||
| --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp | |||
| +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp | |||
| @@ -63,6 +63,7 @@ bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor) | |||
| return false; | |||
| } | |||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| Image PluginHostType::getHostIcon (int size) const | |||
| { | |||
| ignoreUnused (size); | |||
| @@ -79,6 +80,7 @@ Image PluginHostType::getHostIcon (int size) const | |||
| return Image(); | |||
| } | |||
| +#endif | |||
| const char* PluginHostType::getHostDescription() const noexcept | |||
| { | |||
| diff --git a/modules/juce_audio_processors/utilities/juce_PluginHostType.h b/modules/juce_audio_processors/utilities/juce_PluginHostType.h | |||
| index f83ccd3f4..7f7358db3 100644 | |||
| --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.h | |||
| +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.h | |||
| @@ -200,8 +200,10 @@ public: | |||
| bool isInterAppAudioConnected() const; | |||
| /** Switches to the host application when Inter-App Audio is used on iOS. */ | |||
| void switchToHostApplication() const; | |||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
| /** Gets the host app's icon when Inter-App Audio is used on iOS. */ | |||
| Image getHostIcon (int size) const; | |||
| + #endif | |||
| //============================================================================== | |||
| /** Returns the complete absolute path of the host application executable. */ | |||
| @@ -1,8 +1,8 @@ | |||
| diff --git a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| index 0c1138a2b..a5b42b8ef 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| +++ b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| @@ -172,6 +172,7 @@ private: | |||
| diff --git a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| index ec946b7a4..ce42c0093 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| +++ b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||
| @@ -159,6 +159,7 @@ private: | |||
| void operator() (LPWSTR ptr) const noexcept { CoTaskMemFree (ptr); } | |||
| }; | |||
| @@ -10,7 +10,7 @@ index 0c1138a2b..a5b42b8ef 100644 | |||
| bool showDialog (IFileDialog& dialog, bool async) | |||
| { | |||
| FILEOPENDIALOGOPTIONS flags = {}; | |||
| @@ -327,6 +328,7 @@ private: | |||
| @@ -376,6 +377,7 @@ private: | |||
| return result; | |||
| } | |||
| @@ -18,7 +18,7 @@ index 0c1138a2b..a5b42b8ef 100644 | |||
| Array<URL> openDialogPreVista (bool async) | |||
| { | |||
| @@ -436,11 +438,13 @@ private: | |||
| @@ -492,11 +494,13 @@ private: | |||
| const Remover remover (*this); | |||
| @@ -1,26 +0,0 @@ | |||
| diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| index cabbbcf13..f722ab36c 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
| @@ -488,7 +488,7 @@ public: | |||
| { | |||
| const int numChannels = jmax (numIn, numOut); | |||
| - AudioBuffer<FloatType> chans (tmpBuffers.channels, isMidiEffect ? 0 : numChannels, numSamples); | |||
| + juce::AudioBuffer<FloatType> chans (tmpBuffers.channels, isMidiEffect ? 0 : numChannels, numSamples); | |||
| if (isBypassed) | |||
| processor->processBlockBypassed (chans, midiEvents); | |||
| diff --git a/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h b/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h | |||
| index 4b36f6d64..61dbdeede 100644 | |||
| --- a/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h | |||
| +++ b/modules/juce_audio_plugin_client/utility/juce_IncludeModuleHeaders.h | |||
| @@ -23,6 +23,8 @@ | |||
| ============================================================================== | |||
| */ | |||
| +#pragma once | |||
| + | |||
| #include <juce_audio_plugin_client/juce_audio_plugin_client.h> | |||
| #include "juce_CreatePluginFilter.h" | |||
| @@ -0,0 +1,20 @@ | |||
| diff --git a/modules/juce_opengl/native/juce_OpenGLExtensions.h b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| index f07ede9a3..c934e9e37 100644 | |||
| --- a/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| +++ b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| @@ -76,7 +76,14 @@ namespace juce | |||
| X (glCheckFramebufferStatus) \ | |||
| X (glFramebufferTexture2D) \ | |||
| X (glFramebufferRenderbuffer) \ | |||
| - X (glGetFramebufferAttachmentParameteriv) | |||
| + X (glGetFramebufferAttachmentParameteriv) \ | |||
| + X (glTransformFeedbackVaryings) \ | |||
| + X (glBeginTransformFeedback) \ | |||
| + X (glEndTransformFeedback) \ | |||
| + X (glBindBufferBase) \ | |||
| + X (glMapBufferRange) \ | |||
| + X (glUnmapBuffer) | |||
| + | |||
| /** @internal This macro contains a list of GL extension functions that need to be dynamically loaded on Windows/Linux. | |||
| @see OpenGLExtensionFunctions | |||
| @@ -1,117 +0,0 @@ | |||
| diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp | |||
| index c4404c637..fa8d3ccf5 100644 | |||
| --- a/modules/juce_gui_basics/components/juce_Component.cpp | |||
| +++ b/modules/juce_gui_basics/components/juce_Component.cpp | |||
| @@ -387,6 +387,10 @@ struct Component::ComponentHelpers | |||
| template <typename PointOrRect> | |||
| static PointOrRect convertCoordinate (const Component* target, const Component* source, PointOrRect p) | |||
| { | |||
| + float total_scaling = source->getTotalPixelScaling(); | |||
| + Component* top = nullptr; | |||
| + if (source) | |||
| + top = source->getTopLevelComponent(); | |||
| while (source != nullptr) | |||
| { | |||
| if (source == target) | |||
| @@ -395,6 +399,9 @@ struct Component::ComponentHelpers | |||
| if (source->isParentOf (target)) | |||
| return convertFromDistantParentSpace (source, *target, p); | |||
| + if (source == top) | |||
| + p /= total_scaling; | |||
| + | |||
| p = convertToParentSpace (*source, p); | |||
| source = source->getParentComponent(); | |||
| } | |||
| @@ -1390,13 +1397,14 @@ bool Component::reallyContains (Point<int> point, bool returnTrueIfWithinAChild) | |||
| Component* Component::getComponentAt (Point<int> position) | |||
| { | |||
| + Point<int> scale = (position.toFloat() * getPixelScaling()).roundToInt(); | |||
| if (flags.visibleFlag && ComponentHelpers::hitTest (*this, position)) | |||
| { | |||
| for (int i = childComponentList.size(); --i >= 0;) | |||
| { | |||
| auto* child = childComponentList.getUnchecked(i); | |||
| - child = child->getComponentAt (ComponentHelpers::convertFromParentSpace (*child, position)); | |||
| + child = child->getComponentAt (ComponentHelpers::convertFromParentSpace (*child, scale)); | |||
| if (child != nullptr) | |||
| return child; | |||
| diff --git a/modules/juce_gui_basics/components/juce_Component.h b/modules/juce_gui_basics/components/juce_Component.h | |||
| index 6b2b0072b..ccb2681fa 100644 | |||
| --- a/modules/juce_gui_basics/components/juce_Component.h | |||
| +++ b/modules/juce_gui_basics/components/juce_Component.h | |||
| @@ -2284,6 +2284,17 @@ public: | |||
| */ | |||
| bool getViewportIgnoreDragFlag() const noexcept { return flags.viewportIgnoreDragFlag; } | |||
| + virtual float getPixelScaling() const { return 1.0f; } | |||
| + float getTotalPixelScaling() const { | |||
| + const Component* component = this; | |||
| + float pixel_scaling = 1.0f; | |||
| + while (component) { | |||
| + pixel_scaling *= component->getPixelScaling(); | |||
| + component = component->getParentComponent(); | |||
| + } | |||
| + return pixel_scaling; | |||
| + } | |||
| + | |||
| private: | |||
| //============================================================================== | |||
| friend class ComponentPeer; | |||
| diff --git a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp | |||
| index a8c2c283a..ddb15b88d 100644 | |||
| --- a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp | |||
| +++ b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp | |||
| @@ -61,7 +61,7 @@ public: | |||
| { | |||
| if (auto* peer = comp.getPeer()) | |||
| { | |||
| - pos = peer->globalToLocal (pos); | |||
| + pos = peer->globalToLocal (pos) * comp.getTotalPixelScaling(); | |||
| auto& peerComp = peer->getComponent(); | |||
| return comp.getLocalPoint (&peerComp, ScalingHelpers::unscaledScreenPosToScaled (peerComp, pos)); | |||
| } | |||
| diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp | |||
| index 8d7febd4b..7ec8fbb00 100644 | |||
| --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp | |||
| +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp | |||
| @@ -474,7 +474,7 @@ bool ComponentPeer::handleDragMove (const ComponentPeer::DragInfo& info) | |||
| if (DragHelpers::isSuitableTarget (info, newTarget)) | |||
| { | |||
| dragAndDropTargetComponent = newTarget; | |||
| - auto pos = newTarget->getLocalPoint (&component, info.position); | |||
| + auto pos = newTarget->getLocalPoint (&component, info.position * newTarget->getTotalPixelScaling()); | |||
| if (DragHelpers::isFileDrag (info)) | |||
| dynamic_cast<FileDragAndDropTarget*> (newTarget)->fileDragEnter (info.files, pos.x, pos.y); | |||
| @@ -491,7 +491,7 @@ bool ComponentPeer::handleDragMove (const ComponentPeer::DragInfo& info) | |||
| if (! DragHelpers::isSuitableTarget (info, newTarget)) | |||
| return false; | |||
| - auto pos = newTarget->getLocalPoint (&component, info.position); | |||
| + auto pos = newTarget->getLocalPoint (&component, info.position * newTarget->getTotalPixelScaling()); | |||
| if (DragHelpers::isFileDrag (info)) | |||
| dynamic_cast<FileDragAndDropTarget*> (newTarget)->fileDragMove (info.files, pos.x, pos.y); | |||
| diff --git a/modules/juce_opengl/native/juce_OpenGLExtensions.h b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| index e7eab9dbf..d7039b144 100644 | |||
| --- a/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| +++ b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||
| @@ -83,7 +83,13 @@ namespace juce | |||
| USE_FUNCTION (glCheckFramebufferStatus, GLenum, (GLenum p1), (p1))\ | |||
| USE_FUNCTION (glFramebufferTexture2D, void, (GLenum p1, GLenum p2, GLenum p3, GLuint p4, GLint p5), (p1, p2, p3, p4, p5))\ | |||
| USE_FUNCTION (glFramebufferRenderbuffer, void, (GLenum p1, GLenum p2, GLenum p3, GLuint p4), (p1, p2, p3, p4))\ | |||
| - USE_FUNCTION (glGetFramebufferAttachmentParameteriv, void, (GLenum p1, GLenum p2, GLenum p3, GLint* p4), (p1, p2, p3, p4)) | |||
| + USE_FUNCTION (glGetFramebufferAttachmentParameteriv, void, (GLenum p1, GLenum p2, GLenum p3, GLint* p4), (p1, p2, p3, p4))\ | |||
| + USE_FUNCTION (glTransformFeedbackVaryings, void, (GLuint p1, GLsizei p2, const char **p3, GLenum p4), (p1, p2, p3, p4))\ | |||
| + USE_FUNCTION (glBeginTransformFeedback, void, (GLenum p1), (p1))\ | |||
| + USE_FUNCTION (glEndTransformFeedback, void, (), ())\ | |||
| + USE_FUNCTION (glBindBufferBase, void, (GLenum p1, GLuint p2, GLuint p3), (p1, p2, p3))\ | |||
| + USE_FUNCTION (glMapBufferRange, void*, (GLenum p1, GLintptr p2, GLsizeiptr p3, GLbitfield p4), (p1, p2, p3, p4))\ | |||
| + USE_FUNCTION (glUnmapBuffer, GLboolean, (GLenum p1), (p1)); | |||
| /** @internal This macro contains a list of GL extension functions that need to be dynamically loaded on Windows/Linux. | |||
| @see OpenGLExtensionFunctions | |||
| @@ -1,144 +0,0 @@ | |||
| diff --git a/modules/juce_opengl/juce_opengl.h b/modules/juce_opengl/juce_opengl.h | |||
| index f7bc806f8..d325d3e34 100644 | |||
| --- a/modules/juce_opengl/juce_opengl.h | |||
| +++ b/modules/juce_opengl/juce_opengl.h | |||
| @@ -124,7 +124,7 @@ | |||
| It's mandatory in OpenGL 3.0 to specify the GLSL version. | |||
| */ | |||
| #if JUCE_OPENGL3 | |||
| - #if JUCE_OPENGL_ES | |||
| + #if JUCE_OPENGL_ES || OPENGL_ES | |||
| #define JUCE_GLSL_VERSION "#version 300 es" | |||
| #else | |||
| #define JUCE_GLSL_VERSION "#version 150" | |||
| diff --git a/modules/juce_opengl/native/juce_MissingGLDefinitions.h b/modules/juce_opengl/native/juce_MissingGLDefinitions.h | |||
| index c23ec097a..00c6cf565 100644 | |||
| --- a/modules/juce_opengl/native/juce_MissingGLDefinitions.h | |||
| +++ b/modules/juce_opengl/native/juce_MissingGLDefinitions.h | |||
| @@ -126,6 +126,14 @@ enum MissingOpenGLDefinitions | |||
| GL_DYNAMIC_DRAW = 0x88E8, | |||
| GL_STREAM_DRAW = 0x88E0, | |||
| + GL_GEOMETRY_SHADER = 0x8DD9, | |||
| + GL_LINE_STRIP_ADJACENCY = 0x000B, | |||
| + GL_INTERLEAVED_ATTRIBS = 0x8C8C, | |||
| + GL_STATIC_READ = 0x88E5, | |||
| + GL_TRANSFORM_FEEDBACK_BUFFER = 0x8C8E, | |||
| + GL_RASTERIZER_DISCARD = 0x8C89, | |||
| + GL_MAP_READ_BIT = 0x0001, | |||
| + | |||
| WGL_NUMBER_PIXEL_FORMATS_ARB = 0x2000, | |||
| WGL_DRAW_TO_WINDOW_ARB = 0x2001, | |||
| WGL_ACCELERATION_ARB = 0x2003, | |||
| diff --git a/modules/juce_opengl/native/juce_OpenGL_linux_X11.h b/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| index ef7eb852e..b4ba85cc4 100644 | |||
| --- a/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| +++ b/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| @@ -69,8 +69,8 @@ public: | |||
| GLint attribs[] = | |||
| { | |||
| - GLX_RGBA, | |||
| - GLX_DOUBLEBUFFER, | |||
| + GLX_RENDER_TYPE, GLX_RGBA_BIT, | |||
| + GLX_DOUBLEBUFFER, True, | |||
| GLX_RED_SIZE, cPixelFormat.redBits, | |||
| GLX_GREEN_SIZE, cPixelFormat.greenBits, | |||
| GLX_BLUE_SIZE, cPixelFormat.blueBits, | |||
| @@ -81,13 +81,21 @@ public: | |||
| GLX_ACCUM_GREEN_SIZE, cPixelFormat.accumulationBufferGreenBits, | |||
| GLX_ACCUM_BLUE_SIZE, cPixelFormat.accumulationBufferBlueBits, | |||
| GLX_ACCUM_ALPHA_SIZE, cPixelFormat.accumulationBufferAlphaBits, | |||
| + GLX_X_RENDERABLE, True, | |||
| None | |||
| }; | |||
| - bestVisual = glXChooseVisual (display, X11Symbols::getInstance()->xDefaultScreen (display), attribs); | |||
| - if (bestVisual == nullptr) | |||
| + int countFbConfigs; | |||
| + fbConfig = glXChooseFBConfig (display, DefaultScreen (display), attribs, &countFbConfigs); | |||
| + if (fbConfig == nullptr) | |||
| return; | |||
| + bestVisual = glXGetVisualFromFBConfig (display, *fbConfig); | |||
| + if (bestVisual == nullptr) { | |||
| + X11Symbols::getInstance()->xFree (fbConfig); | |||
| + return; | |||
| + } | |||
| + | |||
| auto* peer = component.getPeer(); | |||
| jassert (peer != nullptr); | |||
| @@ -139,6 +147,9 @@ public: | |||
| } | |||
| } | |||
| + if (fbConfig != nullptr) | |||
| + X11Symbols::getInstance()->xFree (fbConfig); | |||
| + | |||
| if (bestVisual != nullptr) | |||
| X11Symbols::getInstance()->xFree (bestVisual); | |||
| } | |||
| @@ -146,7 +157,18 @@ public: | |||
| bool initialiseOnRenderThread (OpenGLContext& c) | |||
| { | |||
| XWindowSystemUtilities::ScopedXLock xLock; | |||
| - renderContext = glXCreateContext (display, bestVisual, (GLXContext) contextToShareWith, GL_TRUE); | |||
| + PFNGLXCREATECONTEXTATTRIBSARBPROC createContextAttribs; | |||
| + int attribs[] = { | |||
| + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, | |||
| + GLX_CONTEXT_MINOR_VERSION_ARB, 2, | |||
| + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, | |||
| + 0 | |||
| + }; | |||
| + | |||
| + createContextAttribs = (PFNGLXCREATECONTEXTATTRIBSARBPROC) | |||
| + OpenGLHelpers::getExtensionFunction("glXCreateContextAttribsARB"); | |||
| + | |||
| + renderContext = createContextAttribs (display, *fbConfig, (GLXContext) contextToShareWith, GL_TRUE, attribs); | |||
| c.makeActive(); | |||
| context = &c; | |||
| @@ -240,6 +262,7 @@ private: | |||
| int swapFrames = 1; | |||
| Rectangle<int> bounds; | |||
| XVisualInfo* bestVisual = nullptr; | |||
| + GLXFBConfig* fbConfig = nullptr; | |||
| void* contextToShareWith; | |||
| OpenGLContext* context = nullptr; | |||
| diff --git a/modules/juce_opengl/native/juce_OpenGL_win32.h b/modules/juce_opengl/native/juce_OpenGL_win32.h | |||
| index 6106fce54..7ba46c079 100644 | |||
| --- a/modules/juce_opengl/native/juce_OpenGL_win32.h | |||
| +++ b/modules/juce_opengl/native/juce_OpenGL_win32.h | |||
| @@ -285,6 +285,8 @@ private: | |||
| atts[n++] = WGL_DRAW_TO_WINDOW_ARB; atts[n++] = GL_TRUE; | |||
| atts[n++] = WGL_SUPPORT_OPENGL_ARB; atts[n++] = GL_TRUE; | |||
| + atts[n++] = WGL_CONTEXT_MAJOR_VERSION_ARB; atts[n++] = 3; | |||
| + atts[n++] = WGL_CONTEXT_MINOR_VERSION_ARB; atts[n++] = 2; | |||
| atts[n++] = WGL_DOUBLE_BUFFER_ARB; atts[n++] = GL_TRUE; | |||
| atts[n++] = WGL_PIXEL_TYPE_ARB; atts[n++] = WGL_TYPE_RGBA_ARB; | |||
| atts[n++] = WGL_ACCELERATION_ARB; | |||
| diff --git a/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp b/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp | |||
| index 97dc1f0b5..ad40fa640 100644 | |||
| --- a/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp | |||
| +++ b/modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp | |||
| @@ -83,7 +83,7 @@ void OpenGLHelpers::enableScissorTest (Rectangle<int> clip) | |||
| String OpenGLHelpers::translateVertexShaderToV3 (const String& code) | |||
| { | |||
| - #if JUCE_OPENGL3 | |||
| + #if JUCE_OPENGL3 || OPENGL_ES | |||
| if (OpenGLShaderProgram::getLanguageVersion() > 1.2) | |||
| { | |||
| String output; | |||
| @@ -119,7 +119,7 @@ String OpenGLHelpers::translateVertexShaderToV3 (const String& code) | |||
| String OpenGLHelpers::translateFragmentShaderToV3 (const String& code) | |||
| { | |||
| - #if JUCE_OPENGL3 | |||
| + #if JUCE_OPENGL3 || OPENGL_ES | |||
| if (OpenGLShaderProgram::getLanguageVersion() > 1.2) | |||
| return JUCE_GLSL_VERSION "\n" | |||
| "out " JUCE_MEDIUMP " vec4 fragColor;\n" | |||
| @@ -1,457 +0,0 @@ | |||
| diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp | |||
| index 7642040bd..ed02448b8 100644 | |||
| --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp | |||
| +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp | |||
| @@ -842,6 +842,26 @@ namespace WavFileHelpers | |||
| return out.getMemoryBlock(); | |||
| } | |||
| }; | |||
| + | |||
| + //============================================================================== | |||
| + struct Clm_Chunk | |||
| + { | |||
| + static MemoryBlock createFrom (const StringPairArray& values) | |||
| + { | |||
| + MemoryOutputStream out; | |||
| + auto s = values["clm "]; | |||
| + | |||
| + if (s.isNotEmpty()) | |||
| + { | |||
| + out.writeString (s); | |||
| + | |||
| + if ((out.getDataSize() & 1) != 0) | |||
| + out.writeByte(0); | |||
| + } | |||
| + | |||
| + return out.getMemoryBlock(); | |||
| + } | |||
| + }; | |||
| //============================================================================== | |||
| namespace AXMLChunk | |||
| @@ -1321,6 +1341,7 @@ public: | |||
| listInfoChunk = ListInfoChunk::createFrom (metadataValues); | |||
| acidChunk = AcidChunk::createFrom (metadataValues); | |||
| trckChunk = TracktionChunk::createFrom (metadataValues); | |||
| + clm_Chunk = Clm_Chunk::createFrom (metadataValues); | |||
| } | |||
| headerPosition = out->getPosition(); | |||
| @@ -1383,7 +1404,7 @@ public: | |||
| } | |||
| private: | |||
| - MemoryBlock tempBlock, bwavChunk, axmlChunk, smplChunk, instChunk, cueChunk, listChunk, listInfoChunk, acidChunk, trckChunk; | |||
| + MemoryBlock tempBlock, bwavChunk, axmlChunk, smplChunk, instChunk, cueChunk, listChunk, listInfoChunk, acidChunk, trckChunk, clm_Chunk; | |||
| uint64 lengthInSamples = 0, bytesWritten = 0; | |||
| int64 headerPosition = 0; | |||
| bool writeFailed = false; | |||
| @@ -1421,6 +1442,7 @@ private: | |||
| + chunkSize (listInfoChunk) | |||
| + chunkSize (acidChunk) | |||
| + chunkSize (trckChunk) | |||
| + + chunkSize (clm_Chunk) | |||
| + (8 + 28)); // (ds64 chunk) | |||
| riffChunkSize += (riffChunkSize & 1); | |||
| @@ -1503,6 +1525,7 @@ private: | |||
| writeChunk (listInfoChunk, chunkName ("LIST")); | |||
| writeChunk (acidChunk, chunkName ("acid")); | |||
| writeChunk (trckChunk, chunkName ("Trkn")); | |||
| + writeChunk (clm_Chunk, chunkName ("clm ")); | |||
| writeChunkHeader (chunkName ("data"), isRF64 ? -1 : (int) (lengthInSamples * bytesPerFrame)); | |||
| diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp | |||
| index 7909098c9..19eb385fd 100644 | |||
| --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp | |||
| +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp | |||
| @@ -2618,6 +2621,9 @@ public: | |||
| //============================================================================== | |||
| void processParameterChanges (Vst::IParameterChanges& paramChanges) | |||
| { | |||
| + if (juceVST3EditController == nullptr) | |||
| + return; | |||
| + | |||
| jassert (pluginInstance != nullptr); | |||
| auto numParamsChanged = paramChanges.getParameterCount(); | |||
| diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp | |||
| index 50cae68ed..549d8edb8 100644 | |||
| --- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp | |||
| +++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp | |||
| @@ -393,6 +393,7 @@ public: | |||
| AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, | |||
| TRANS("Error when trying to open audio device!"), | |||
| error); | |||
| + resized(); | |||
| } | |||
| bool showDeviceControlPanel() | |||
| @@ -1120,6 +1121,8 @@ void AudioDeviceSelectorComponent::updateMidiOutput() | |||
| deviceManager.setDefaultMidiOutputDevice ({}); | |||
| else | |||
| deviceManager.setDefaultMidiOutputDevice (currentMidiOutputs[selectedId - 1].identifier); | |||
| + | |||
| + resized(); | |||
| } | |||
| void AudioDeviceSelectorComponent::changeListenerCallback (ChangeBroadcaster*) | |||
| diff --git a/modules/juce_core/native/juce_curl_Network.cpp b/modules/juce_core/native/juce_curl_Network.cpp | |||
| index 00d428350..dd3375ff7 100644 | |||
| --- a/modules/juce_core/native/juce_curl_Network.cpp | |||
| +++ b/modules/juce_core/native/juce_curl_Network.cpp | |||
| @@ -332,6 +332,9 @@ public: | |||
| // or 3) data is in the in buffer | |||
| while ((! finished) && curlBuffer.getSize() == 0) | |||
| { | |||
| + if (Thread::currentThreadShouldExit()) | |||
| + return false; | |||
| + | |||
| { | |||
| const ScopedLock lock (cleanupLock); | |||
| diff --git a/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h b/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h | |||
| index 7f64d433d..e9360e0de 100644 | |||
| --- a/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h | |||
| +++ b/modules/juce_dsp/native/juce_sse_SIMDNativeOps.h | |||
| @@ -74,6 +74,7 @@ struct SIMDNativeOps<float> | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE add (__m128 a, __m128 b) noexcept { return _mm_add_ps (a, b); } | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE sub (__m128 a, __m128 b) noexcept { return _mm_sub_ps (a, b); } | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE mul (__m128 a, __m128 b) noexcept { return _mm_mul_ps (a, b); } | |||
| + static forcedinline __m128 JUCE_VECTOR_CALLTYPE div (__m128 a, __m128 b) noexcept { return _mm_div_ps (a, b); } | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_and (__m128 a, __m128 b) noexcept { return _mm_and_ps (a, b); } | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_or (__m128 a, __m128 b) noexcept { return _mm_or_ps (a, b); } | |||
| static forcedinline __m128 JUCE_VECTOR_CALLTYPE bit_xor (__m128 a, __m128 b) noexcept { return _mm_xor_ps (a, b); } | |||
| @@ -142,6 +143,7 @@ struct SIMDNativeOps<double> | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE add (__m128d a, __m128d b) noexcept { return _mm_add_pd (a, b); } | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE sub (__m128d a, __m128d b) noexcept { return _mm_sub_pd (a, b); } | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE mul (__m128d a, __m128d b) noexcept { return _mm_mul_pd (a, b); } | |||
| + static forcedinline __m128d JUCE_VECTOR_CALLTYPE div (__m128d a, __m128d b) noexcept { return _mm_div_pd (a, b); } | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_and (__m128d a, __m128d b) noexcept { return _mm_and_pd (a, b); } | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_or (__m128d a, __m128d b) noexcept { return _mm_or_pd (a, b); } | |||
| static forcedinline __m128d JUCE_VECTOR_CALLTYPE bit_xor (__m128d a, __m128d b) noexcept { return _mm_xor_pd (a, b); } | |||
| diff --git a/modules/juce_events/native/juce_mac_MessageManager.mm b/modules/juce_events/native/juce_mac_MessageManager.mm | |||
| index 7a0718868..9d83519ff 100644 | |||
| --- a/modules/juce_events/native/juce_mac_MessageManager.mm | |||
| +++ b/modules/juce_events/native/juce_mac_MessageManager.mm | |||
| @@ -369,6 +369,7 @@ void MessageManager::runDispatchLoop() | |||
| static void shutdownNSApp() | |||
| { | |||
| [NSApp stop: nil]; | |||
| + [NSEvent stopPeriodicEvents]; | |||
| [NSEvent startPeriodicEventsAfterDelay: 0 withPeriod: 0.1]; | |||
| } | |||
| diff --git a/modules/juce_gui_basics/buttons/juce_Button.cpp b/modules/juce_gui_basics/buttons/juce_Button.cpp | |||
| index 1df2d6e20..e5c243eda 100644 | |||
| --- a/modules/juce_gui_basics/buttons/juce_Button.cpp | |||
| +++ b/modules/juce_gui_basics/buttons/juce_Button.cpp | |||
| @@ -482,10 +482,7 @@ void Button::mouseDrag (const MouseEvent& e) | |||
| bool Button::isMouseSourceOver (const MouseEvent& e) | |||
| { | |||
| - if (e.source.isTouch() || e.source.isPen()) | |||
| - return getLocalBounds().toFloat().contains (e.position); | |||
| - | |||
| - return isMouseOver(); | |||
| + return getLocalBounds().toFloat().contains (e.position); | |||
| } | |||
| void Button::focusGained (FocusChangeType) | |||
| diff --git a/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp b/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp | |||
| index 314544638..f3b61e2c3 100644 | |||
| --- a/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp | |||
| +++ b/modules/juce_gui_basics/buttons/juce_ShapeButton.cpp | |||
| @@ -76,9 +76,6 @@ void ShapeButton::setShape (const Path& newShape, | |||
| shape = newShape; | |||
| maintainShapeProportions = maintainShapeProportions_; | |||
| - shadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.5f), 3, Point<int>())); | |||
| - setComponentEffect (hasShadow ? &shadow : nullptr); | |||
| - | |||
| if (resizeNowToFitThisShape) | |||
| { | |||
| auto newBounds = shape.getBounds(); | |||
| diff --git a/modules/juce_gui_basics/buttons/juce_ShapeButton.h b/modules/juce_gui_basics/buttons/juce_ShapeButton.h | |||
| index 6863b1cab..5f9cee9ee 100644 | |||
| --- a/modules/juce_gui_basics/buttons/juce_ShapeButton.h | |||
| +++ b/modules/juce_gui_basics/buttons/juce_ShapeButton.h | |||
| @@ -88,6 +88,8 @@ public: | |||
| Colour overColourOn, | |||
| Colour downColourOn); | |||
| + void setShadowColour (Colour shadow) { shadowColour = shadow; } | |||
| + | |||
| /** Set whether the button should use the 'on' set of colours when its toggle state is 'on'. | |||
| By default these will be the same as the normal colours but the setOnColours method can be | |||
| used to provide a different set of colours. | |||
| @@ -112,9 +114,8 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| Colour normalColour, overColour, downColour, | |||
| - normalColourOn, overColourOn, downColourOn, outlineColour; | |||
| + normalColourOn, overColourOn, downColourOn, outlineColour, shadowColour; | |||
| bool useOnColours; | |||
| - DropShadowEffect shadow; | |||
| Path shape; | |||
| BorderSize<int> border; | |||
| bool maintainShapeProportions; | |||
| diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp | |||
| index fa8d3ccf5..b2d75c655 100644 | |||
| --- a/modules/juce_gui_basics/components/juce_Component.cpp | |||
| +++ b/modules/juce_gui_basics/components/juce_Component.cpp | |||
| @@ -3021,7 +3021,8 @@ void Component::modifierKeysChanged (const ModifierKeys& modifiers) | |||
| void Component::internalModifierKeysChanged() | |||
| { | |||
| - sendFakeMouseMove(); | |||
| + auto mainMouse = Desktop::getInstance().getMainMouseSource(); | |||
| + mainMouse.triggerFakeMove(); | |||
| modifierKeysChanged (ModifierKeys::currentModifiers); | |||
| } | |||
| diff --git a/modules/juce_gui_basics/components/juce_Component.h b/modules/juce_gui_basics/components/juce_Component.h | |||
| index 3add1db6b..ca84bc80e 100644 | |||
| --- a/modules/juce_gui_basics/components/juce_Component.h | |||
| +++ b/modules/juce_gui_basics/components/juce_Component.h | |||
| @@ -439,7 +439,7 @@ public: | |||
| @see setBounds, ComponentListener::componentMovedOrResized | |||
| */ | |||
| - void setTopLeftPosition (Point<int> newTopLeftPosition); | |||
| + virtual void setTopLeftPosition (Point<int> newTopLeftPosition); | |||
| /** Moves the component to a new position. | |||
| diff --git a/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp b/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp | |||
| index 7c6b83fbf..a84cf5a91 100644 | |||
| --- a/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp | |||
| +++ b/modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp | |||
| @@ -43,14 +43,9 @@ void CaretComponent::paint (Graphics& g) | |||
| g.fillRect (getLocalBounds()); | |||
| } | |||
| -void CaretComponent::timerCallback() | |||
| -{ | |||
| - setVisible (shouldBeShown() && ! isVisible()); | |||
| -} | |||
| void CaretComponent::setCaretPosition (const Rectangle<int>& characterArea) | |||
| { | |||
| - startTimer (380); | |||
| setVisible (shouldBeShown()); | |||
| setBounds (characterArea.withWidth (2)); | |||
| } | |||
| diff --git a/modules/juce_gui_basics/keyboard/juce_CaretComponent.h b/modules/juce_gui_basics/keyboard/juce_CaretComponent.h | |||
| index a10b26c69..97894c075 100644 | |||
| --- a/modules/juce_gui_basics/keyboard/juce_CaretComponent.h | |||
| +++ b/modules/juce_gui_basics/keyboard/juce_CaretComponent.h | |||
| @@ -31,8 +31,7 @@ namespace juce | |||
| @tags{GUI} | |||
| */ | |||
| -class JUCE_API CaretComponent : public Component, | |||
| - private Timer | |||
| +class JUCE_API CaretComponent : public Component | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -73,7 +72,6 @@ private: | |||
| Component* owner; | |||
| bool shouldBeShown() const; | |||
| - void timerCallback() override; | |||
| JUCE_DECLARE_NON_COPYABLE (CaretComponent) | |||
| }; | |||
| diff --git a/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp b/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp | |||
| index 9ea63b215..7e8f14993 100644 | |||
| --- a/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp | |||
| +++ b/modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp | |||
| @@ -271,23 +271,6 @@ void ComponentBoundsConstrainer::checkBounds (Rectangle<int>& bounds, | |||
| bounds.setWidth (roundToInt (bounds.getHeight() * aspectRatio)); | |||
| } | |||
| } | |||
| - | |||
| - if ((isStretchingTop || isStretchingBottom) && ! (isStretchingLeft || isStretchingRight)) | |||
| - { | |||
| - bounds.setX (old.getX() + (old.getWidth() - bounds.getWidth()) / 2); | |||
| - } | |||
| - else if ((isStretchingLeft || isStretchingRight) && ! (isStretchingTop || isStretchingBottom)) | |||
| - { | |||
| - bounds.setY (old.getY() + (old.getHeight() - bounds.getHeight()) / 2); | |||
| - } | |||
| - else | |||
| - { | |||
| - if (isStretchingLeft) | |||
| - bounds.setX (old.getRight() - bounds.getWidth()); | |||
| - | |||
| - if (isStretchingTop) | |||
| - bounds.setY (old.getBottom() - bounds.getHeight()); | |||
| - } | |||
| } | |||
| jassert (! bounds.isEmpty()); | |||
| diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp | |||
| index 738fed8c1..f9f79994c 100644 | |||
| --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp | |||
| +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp | |||
| @@ -41,8 +41,6 @@ LookAndFeel_V1::LookAndFeel_V1() | |||
| setColour (PopupMenu::highlightedBackgroundColourId, Colour (0xbfa4c2ce)); | |||
| setColour (PopupMenu::highlightedTextColourId, Colours::black); | |||
| setColour (TextEditor::focusedOutlineColourId, findColour (TextButton::buttonColourId)); | |||
| - | |||
| - scrollbarShadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.5f), 2, Point<int>())); | |||
| } | |||
| LookAndFeel_V1::~LookAndFeel_V1() | |||
| @@ -291,7 +289,7 @@ void LookAndFeel_V1::drawScrollbar (Graphics& g, ScrollBar& bar, | |||
| ImageEffectFilter* LookAndFeel_V1::getScrollbarEffect() | |||
| { | |||
| - return &scrollbarShadow; | |||
| + return nullptr; | |||
| } | |||
| @@ -477,7 +475,7 @@ Button* LookAndFeel_V1::createSliderButton (Slider&, const bool isIncrement) | |||
| ImageEffectFilter* LookAndFeel_V1::getSliderEffect (Slider&) | |||
| { | |||
| - return &scrollbarShadow; | |||
| + return nullptr; | |||
| } | |||
| int LookAndFeel_V1::getSliderThumbRadius (Slider&) | |||
| diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h | |||
| index b6c05aed7..51508a57a 100644 | |||
| --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h | |||
| +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h | |||
| @@ -97,8 +97,6 @@ public: | |||
| bool positionTitleBarButtonsOnLeft) override; | |||
| private: | |||
| - DropShadowEffect scrollbarShadow; | |||
| - | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LookAndFeel_V1) | |||
| }; | |||
| diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp | |||
| index 21042d0b2..829fed8e6 100644 | |||
| --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp | |||
| +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp | |||
| @@ -1292,8 +1292,6 @@ void LookAndFeel_V4::drawCallOutBoxBackground (CallOutBox& box, Graphics& g, | |||
| { | |||
| cachedImage = { Image::ARGB, box.getWidth(), box.getHeight(), true }; | |||
| Graphics g2 (cachedImage); | |||
| - | |||
| - DropShadow (Colours::black.withAlpha (0.7f), 8, { 0, 2 }).drawForPath (g2, path); | |||
| } | |||
| g.setColour (Colours::black); | |||
| diff --git a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp | |||
| index 7c0848644..2017bccb5 100644 | |||
| --- a/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp | |||
| +++ b/modules/juce_gui_basics/misc/juce_BubbleComponent.cpp | |||
| @@ -30,9 +30,6 @@ BubbleComponent::BubbleComponent() | |||
| : allowablePlacements (above | below | left | right) | |||
| { | |||
| setInterceptsMouseClicks (false, false); | |||
| - | |||
| - shadow.setShadowProperties (DropShadow (Colours::black.withAlpha (0.35f), 5, Point<int>())); | |||
| - setComponentEffect (&shadow); | |||
| } | |||
| BubbleComponent::~BubbleComponent() {} | |||
| diff --git a/modules/juce_gui_basics/misc/juce_BubbleComponent.h b/modules/juce_gui_basics/misc/juce_BubbleComponent.h | |||
| index f086c8ff3..cca6205a3 100644 | |||
| --- a/modules/juce_gui_basics/misc/juce_BubbleComponent.h | |||
| +++ b/modules/juce_gui_basics/misc/juce_BubbleComponent.h | |||
| @@ -178,7 +178,6 @@ private: | |||
| Rectangle<int> content; | |||
| Point<int> arrowTip; | |||
| int allowablePlacements; | |||
| - DropShadowEffect shadow; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BubbleComponent) | |||
| }; | |||
| diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| index f18b890f4..e92e9af14 100644 | |||
| --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||
| @@ -1816,7 +1816,7 @@ public: | |||
| if (peerIsDeleted) | |||
| return S_FALSE; | |||
| - peer.handleDragExit (dragInfo); | |||
| + peer.handleDragDrop (dragInfo); | |||
| return S_OK; | |||
| } | |||
| diff --git a/modules/juce_gui_basics/widgets/juce_Slider.cpp b/modules/juce_gui_basics/widgets/juce_Slider.cpp | |||
| index 731193ff1..0f68f6efa 100644 | |||
| --- a/modules/juce_gui_basics/widgets/juce_Slider.cpp | |||
| +++ b/modules/juce_gui_basics/widgets/juce_Slider.cpp | |||
| @@ -749,7 +749,7 @@ public: | |||
| ? e.position.x - mouseDragStartPos.x | |||
| : mouseDragStartPos.y - e.position.y; | |||
| - newPos = owner.valueToProportionOfLength (valueOnMouseDown) | |||
| + newPos = owner.valueToProportionOfLength (valueWhenLastDragged) | |||
| + mouseDiff * (1.0 / pixelsForFullDragExtent); | |||
| if (style == IncDecButtons) | |||
| @@ -763,7 +763,7 @@ public: | |||
| auto mouseDiff = (e.position.x - mouseDragStartPos.x) | |||
| + (mouseDragStartPos.y - e.position.y); | |||
| - newPos = owner.valueToProportionOfLength (valueOnMouseDown) | |||
| + newPos = owner.valueToProportionOfLength (valueWhenLastDragged) | |||
| + mouseDiff * (1.0 / pixelsForFullDragExtent); | |||
| } | |||
| else | |||
| @@ -774,6 +774,7 @@ public: | |||
| newPos = 1.0 - newPos; | |||
| } | |||
| + mouseDragStartPos = e.position; | |||
| newPos = (isRotary() && ! rotaryParams.stopAtEnd) ? newPos - std::floor (newPos) | |||
| : jlimit (0.0, 1.0, newPos); | |||
| valueWhenLastDragged = owner.proportionOfLengthToValue (newPos); | |||
| diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp | |||
| index 233c23305..70afc33a1 100644 | |||
| --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp | |||
| +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp | |||
| @@ -833,6 +833,11 @@ struct TextEditor::TextHolderComponent : public Component, | |||
| { | |||
| owner.drawContent (g); | |||
| } | |||
| + | |||
| + void setTopLeftPosition(Point<int> new_position) override { | |||
| + Component::setTopLeftPosition(new_position); | |||
| + owner.textChanged(); | |||
| + } | |||
| void restartTimer() | |||
| { | |||
| @@ -1558,6 +1563,9 @@ void TextEditor::moveCaretTo (const int newPosition, const bool isSelecting) | |||
| moveCaret (newPosition); | |||
| selection = Range<int>::emptyRange (getCaretPosition()); | |||
| } | |||
| + | |||
| + if (listeners.size() != 0 || onTextChange != nullptr) | |||
| + postCommandMessage (TextEditorDefs::textChangeMessageId); | |||
| } | |||
| int TextEditor::getTextIndexAt (const int x, const int y) | |||
| @@ -2141,6 +2149,9 @@ void TextEditor::focusGained (FocusChangeType cause) | |||
| repaint(); | |||
| updateCaretPosition(); | |||
| + | |||
| + if (listeners.size() != 0 || onTextChange != nullptr) | |||
| + postCommandMessage (TextEditorDefs::textChangeMessageId); | |||
| } | |||
| void TextEditor::focusLost (FocusChangeType) | |||
| @@ -1,18 +0,0 @@ | |||
| diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp | |||
| index 206a64afc..aa6196934 100644 | |||
| --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp | |||
| +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp | |||
| @@ -67,11 +67,11 @@ namespace FUnknownPrivate { | |||
| //------------------------------------------------------------------------ | |||
| int32 PLUGIN_API atomicAdd (int32& var, int32 d) | |||
| { | |||
| -#if SMTG_OS_WINDOWS | |||
| +#if SMTG_OS_WINDOWS && !defined(__MINGW32__) | |||
| return InterlockedExchangeAdd (&var, d) + d; | |||
| #elif SMTG_OS_MACOS | |||
| return OSAtomicAdd32Barrier (d, (int32_t*)&var); | |||
| -#elif SMTG_OS_LINUX | |||
| +#elif SMTG_OS_LINUX || defined(__MINGW32__) | |||
| __gnu_cxx::__atomic_add (&var, d); | |||
| return var; | |||
| #else | |||
| @@ -1,31 +0,0 @@ | |||
| diff --git a/modules/juce_opengl/native/juce_OpenGL_linux_X11.h b/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| index 203798b2f..aed0f3af9 100644 | |||
| --- a/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| +++ b/modules/juce_opengl/native/juce_OpenGL_linux_X11.h | |||
| @@ -110,7 +110,8 @@ public: | |||
| auto glBounds = component.getTopLevelComponent() | |||
| ->getLocalArea (&component, component.getLocalBounds()); | |||
| - glBounds = Desktop::getInstance().getDisplays().logicalToPhysical (glBounds); | |||
| + if (JUCEApplicationBase::isStandaloneApp()) | |||
| + glBounds = Desktop::getInstance().getDisplays().logicalToPhysical (glBounds); | |||
| embeddedWindow = X11Symbols::getInstance()->xCreateWindow (display, windowH, | |||
| glBounds.getX(), glBounds.getY(), | |||
| @@ -227,8 +228,14 @@ public: | |||
| auto physicalBounds = Desktop::getInstance().getDisplays().logicalToPhysical (bounds); | |||
| XWindowSystemUtilities::ScopedXLock xLock; | |||
| - X11Symbols::getInstance()->xMoveResizeWindow (display, embeddedWindow, | |||
| - physicalBounds.getX(), physicalBounds.getY(), | |||
| + | |||
| + if (JUCEApplicationBase::isStandaloneApp()) | |||
| + X11Symbols::getInstance()->xMoveResizeWindow (display, embeddedWindow, | |||
| + physicalBounds.getX(), physicalBounds.getY(), | |||
| + (unsigned int) jmax (1, physicalBounds.getWidth()), | |||
| + (unsigned int) jmax (1, physicalBounds.getHeight())); | |||
| + else | |||
| + X11Symbols::getInstance()->xResizeWindow (display, embeddedWindow, | |||
| (unsigned int) jmax (1, physicalBounds.getWidth()), | |||
| (unsigned int) jmax (1, physicalBounds.getHeight())); | |||
| } | |||