@@ -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())); | |||
} |