@@ -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 4a18ca5..f129775 100644 | |||
index 32108d4..89eb7cf 100644 | |||
--- a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||
+++ b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||
@@ -159,8 +159,8 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray<AudioIODeviceType>& | |||
@@ -154,8 +154,8 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray<AudioIODeviceType>& | |||
addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_ASIO()); | |||
addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_CoreAudio()); | |||
addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_iOSAudio()); | |||
@@ -1,9 +1,9 @@ | |||
diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
index 6cfad5d..be9aa3b 100644 | |||
index 3aea53a..abde506 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
@@ -652,6 +652,11 @@ public: | |||
virtual void numChannelsChanged(); | |||
@@ -1247,6 +1247,11 @@ public: | |||
virtual void processorLayoutsChanged(); | |||
//============================================================================== | |||
+ /** LV2 specific calls, saving/restore as string. */ | |||
@@ -0,0 +1,12 @@ | |||
diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.h b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
index abde506..8c4a141 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
@@ -1307,6 +1307,7 @@ public: | |||
wrapperType_AudioUnitv3, | |||
wrapperType_RTAS, | |||
wrapperType_AAX, | |||
+ wrapperType_LV2, | |||
wrapperType_Standalone | |||
}; | |||
@@ -1,12 +1,39 @@ | |||
diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
index ca6dd27..5d1376f 100644 | |||
--- a/modules/juce_audio_processors/juce_audio_processors.cpp | |||
+++ b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
@@ -47,7 +47,7 @@ | |||
#endif | |||
#endif | |||
-#if JUCE_PLUGINHOST_VST && JUCE_LINUX | |||
+#if JUCE_PLUGINHOST_VST && JUCE_LINUX && ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
#include <X11/Xlib.h> | |||
#include <X11/Xutil.h> | |||
#undef KeyPress | |||
@@ -160,9 +160,11 @@ void AutoResizingNSViewComponentWithParent::timerCallback() override | |||
#include "format/juce_AudioPluginFormat.cpp" | |||
#include "format/juce_AudioPluginFormatManager.cpp" | |||
#include "processors/juce_AudioProcessor.cpp" | |||
-#include "processors/juce_AudioProcessorEditor.cpp" | |||
#include "processors/juce_AudioProcessorGraph.cpp" | |||
-#include "processors/juce_GenericAudioProcessorEditor.cpp" | |||
+#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
+ #include "processors/juce_AudioProcessorEditor.cpp" | |||
+ #include "processors/juce_GenericAudioProcessorEditor.cpp" | |||
+#endif | |||
#include "processors/juce_PluginDescription.cpp" | |||
#include "format_types/juce_LADSPAPluginFormat.cpp" | |||
#include "format_types/juce_VSTPluginFormat.cpp" | |||
diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
index 0dda683..2df1163 100644 | |||
index 321060b..21733c5 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||
@@ -44,9 +44,11 @@ AudioProcessor::AudioProcessor() | |||
@@ -76,9 +76,11 @@ void AudioProcessor::initialise (const BusesProperties& ioConfig) | |||
AudioProcessor::~AudioProcessor() | |||
{ | |||
+ #if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
// ooh, nasty - the editor should have been deleted before the filter | |||
// that it refers to is deleted.. | |||
jassert (activeEditor == nullptr); | |||
@@ -14,15 +41,15 @@ index 0dda683..2df1163 100644 | |||
#if JUCE_DEBUG && ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING | |||
// This will fail if you've called beginParameterChangeGesture() for one | |||
@@ -321,6 +323,7 @@ void AudioProcessor::suspendProcessing (const bool shouldBeSuspended) | |||
void AudioProcessor::reset() {} | |||
void AudioProcessor::processBlockBypassed (AudioSampleBuffer&, MidiBuffer&) {} | |||
@@ -983,6 +985,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang | |||
processorLayoutsChanged(); | |||
} | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
//============================================================================== | |||
void AudioProcessor::editorBeingDeleted (AudioProcessorEditor* const editor) noexcept | |||
{ | |||
@@ -351,6 +354,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() | |||
@@ -1013,6 +1016,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() | |||
return ed; | |||
} | |||
@@ -31,56 +58,56 @@ index 0dda683..2df1163 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 be9aa3b..4b6ea85 100644 | |||
index 8c4a141..1b81776 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||
@@ -333,6 +333,7 @@ public: | |||
@@ -903,6 +903,7 @@ public: | |||
*/ | |||
virtual void setNonRealtime (bool isNonRealtime) noexcept; | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
//============================================================================== | |||
/** Creates the filter's UI. | |||
@@ -378,6 +379,7 @@ public: | |||
@@ -948,6 +949,7 @@ public: | |||
This may call createEditor() internally to create the component. | |||
*/ | |||
AudioProcessorEditor* createEditorIfNeeded(); | |||
+#endif | |||
+ #endif | |||
//============================================================================== | |||
/** This must return the correct value immediately after the object has been | |||
@@ -674,9 +676,11 @@ public: | |||
/** This is called by the processor to specify its details before being played. */ | |||
void setPlayConfigDetails (int numIns, int numOuts, double sampleRate, int blockSize) noexcept; | |||
@@ -1293,9 +1295,11 @@ public: | |||
const AudioChannelSet& mainOutputLayout, | |||
bool idForAudioSuite) const; | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
//============================================================================== | |||
/** Not for public use - this is called before deleting an editor component. */ | |||
void editorBeingDeleted (AudioProcessorEditor*) noexcept; | |||
+#endif | |||
+ #endif | |||
/** Not for public use - this is called to initialise the processor before playing. */ | |||
void setSpeakerArrangement (const String& inputs, const String& outputs); | |||
@@ -729,7 +733,9 @@ protected: | |||
/** Flags to indicate the type of plugin context in which a processor is being used. */ | |||
enum WrapperType | |||
@@ -1540,7 +1544,9 @@ private: | |||
private: | |||
//============================================================================== | |||
Array<AudioProcessorListener*> listeners; | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
Component::SafePointer<AudioProcessorEditor> activeEditor; | |||
+#endif | |||
double sampleRate; | |||
int blockSize, numInputChannels, numOutputChannels, latencySamples; | |||
bool suspended, nonRealtime; | |||
+ #endif | |||
double currentSampleRate; | |||
int blockSize, latencySamples; | |||
#if JUCE_DEBUG | |||
diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
index 84dd0e2..e71b884 100644 | |||
index c3d7ac7..663d1b8 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||
@@ -1482,8 +1482,10 @@ bool AudioProcessorGraph::AudioGraphIOProcessor::isOutputChannelStereoPair (int | |||
@@ -1646,8 +1646,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; } | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
bool AudioProcessorGraph::AudioGraphIOProcessor::hasEditor() const { return false; } | |||
AudioProcessorEditor* AudioProcessorGraph::AudioGraphIOProcessor::createEditor() { return nullptr; } | |||
+#endif | |||
@@ -88,17 +115,17 @@ index 84dd0e2..e71b884 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 2079a53..f6d1a63 100644 | |||
index 85c9c54..51df131 100644 | |||
--- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||
+++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||
@@ -319,8 +319,10 @@ public: | |||
bool acceptsMidi() const override; | |||
bool producesMidi() const override; | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
bool hasEditor() const override; | |||
AudioProcessorEditor* createEditor() override; | |||
+#endif | |||
+ #endif | |||
int getNumPrograms() override; | |||
int getCurrentProgram() override; | |||
@@ -106,10 +133,10 @@ index 2079a53..f6d1a63 100644 | |||
bool acceptsMidi() const override; | |||
bool producesMidi() const override; | |||
+#if ! JUCE_AUDIO_PROCESSOR_NO_GUI | |||
+ #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||
bool hasEditor() const override { return false; } | |||
AudioProcessorEditor* createEditor() override { return nullptr; } | |||
+#endif | |||
+ #endif | |||
int getNumPrograms() override { return 0; } | |||
int getCurrentProgram() override { return 0; } | |||
void setCurrentProgram (int) override { } |
@@ -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 e682eae..17a5307 100644 | |||
index ea007b1..f6faa5b 100644 | |||
--- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
+++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
@@ -1121,6 +1121,11 @@ public: | |||
@@ -1234,6 +1234,11 @@ public: | |||
return 0; | |||
} | |||
@@ -15,10 +15,10 @@ index e682eae..17a5307 100644 | |||
private: | |||
diff --git a/modules/juce_core/native/juce_win32_Threads.cpp b/modules/juce_core/native/juce_win32_Threads.cpp | |||
index 1421c10..ca22ea0 100644 | |||
index 68d891f..d38b733 100644 | |||
--- a/modules/juce_core/native/juce_win32_Threads.cpp | |||
+++ b/modules/juce_core/native/juce_win32_Threads.cpp | |||
@@ -534,6 +534,11 @@ public: | |||
@@ -488,6 +488,11 @@ public: | |||
return (uint32) exitCode; | |||
} | |||
@@ -31,10 +31,10 @@ index 1421c10..ca22ea0 100644 | |||
private: | |||
diff --git a/modules/juce_core/threads/juce_ChildProcess.cpp b/modules/juce_core/threads/juce_ChildProcess.cpp | |||
index 4566b13..e984837 100644 | |||
index 5648c5d..262882b 100644 | |||
--- a/modules/juce_core/threads/juce_ChildProcess.cpp | |||
+++ b/modules/juce_core/threads/juce_ChildProcess.cpp | |||
@@ -81,6 +81,11 @@ String ChildProcess::readAllProcessOutput() | |||
@@ -75,6 +75,11 @@ String ChildProcess::readAllProcessOutput() | |||
return result.toString(); | |||
} | |||
@@ -47,10 +47,10 @@ index 4566b13..e984837 100644 | |||
#if JUCE_UNIT_TESTS | |||
diff --git a/modules/juce_core/threads/juce_ChildProcess.h b/modules/juce_core/threads/juce_ChildProcess.h | |||
index 0adcb57..7a1c88c 100644 | |||
index b2bd0e1..cbc380d 100644 | |||
--- a/modules/juce_core/threads/juce_ChildProcess.h | |||
+++ b/modules/juce_core/threads/juce_ChildProcess.h | |||
@@ -106,6 +106,8 @@ public: | |||
@@ -99,6 +99,8 @@ public: | |||
*/ | |||
bool kill(); | |||
@@ -1,8 +1,8 @@ | |||
diff --git a/modules/juce_gui_basics/windows/juce_DialogWindow.cpp b/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
index bcb3723..a834b03 100644 | |||
index b03824d..be3d9e5 100644 | |||
--- a/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
+++ b/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||
@@ -127,7 +127,8 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
@@ -137,7 +137,8 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
Colour backgroundColour, | |||
const bool escapeKeyTriggersCloseButton, | |||
const bool resizable, | |||
@@ -12,7 +12,7 @@ index bcb3723..a834b03 100644 | |||
{ | |||
LaunchOptions o; | |||
o.dialogTitle = dialogTitle; | |||
@@ -135,9 +136,9 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
@@ -145,9 +146,9 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||
o.componentToCentreAround = componentToCentreAround; | |||
o.dialogBackgroundColour = backgroundColour; | |||
o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||
@@ -23,7 +23,7 @@ index bcb3723..a834b03 100644 | |||
o.launchAsync(); | |||
} | |||
@@ -149,7 +150,8 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
@@ -159,7 +160,8 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
Colour backgroundColour, | |||
const bool escapeKeyTriggersCloseButton, | |||
const bool resizable, | |||
@@ -33,7 +33,7 @@ index bcb3723..a834b03 100644 | |||
{ | |||
LaunchOptions o; | |||
o.dialogTitle = dialogTitle; | |||
@@ -157,9 +159,9 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
@@ -167,9 +169,9 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||
o.componentToCentreAround = componentToCentreAround; | |||
o.dialogBackgroundColour = backgroundColour; | |||
o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||
@@ -45,10 +45,10 @@ index bcb3723..a834b03 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 b7c18df..aac4f43 100644 | |||
index 0ee09df..44b662b 100644 | |||
--- a/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||
+++ b/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||
@@ -189,7 +189,8 @@ public: | |||
@@ -190,7 +190,8 @@ public: | |||
Colour backgroundColour, | |||
bool escapeKeyTriggersCloseButton, | |||
bool shouldBeResizable = false, | |||
@@ -58,7 +58,7 @@ index b7c18df..aac4f43 100644 | |||
#if JUCE_MODAL_LOOPS_PERMITTED || DOXYGEN | |||
/** Easy way of quickly showing a dialog box containing a given component. | |||
@@ -235,7 +236,8 @@ public: | |||
@@ -236,7 +237,8 @@ public: | |||
Colour backgroundColour, | |||
bool escapeKeyTriggersCloseButton, | |||
bool shouldBeResizable = false, | |||
@@ -1,25 +1,16 @@ | |||
diff --git a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp | |||
index 7573f8a..ff1993c 100644 | |||
--- a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp | |||
+++ b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp | |||
@@ -2879,8 +2879,9 @@ private: | |||
diff --git a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp | |||
index 1ed776f..670c1de 100644 | |||
--- a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp | |||
+++ b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp | |||
@@ -2970,8 +2970,9 @@ private: | |||
{ | |||
Atom netHints [2]; | |||
- if ((styleFlags & windowIsTemporary) != 0 | |||
- || ((styleFlags & windowHasDropShadow) == 0 && Desktop::canUseSemiTransparentWindows())) | |||
+ if (styleFlags & windowIsTemporary) | |||
+ netHints [0] = Atoms::getIfExists ("_NET_WM_WINDOW_TYPE_TOOLTIP"); | |||
+ netHints [0] = Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_TOOLTIP"); | |||
+ else if ((styleFlags & windowHasDropShadow) == 0 && Desktop::canUseSemiTransparentWindows()) | |||
netHints [0] = Atoms::getIfExists ("_NET_WM_WINDOW_TYPE_COMBO"); | |||
netHints [0] = Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_COMBO"); | |||
else | |||
netHints [0] = Atoms::getIfExists ("_NET_WM_WINDOW_TYPE_NORMAL"); | |||
@@ -2930,7 +2931,7 @@ private: | |||
swa.border_pixel = 0; | |||
swa.background_pixmap = None; | |||
swa.colormap = colormap; | |||
- swa.override_redirect = (component.isAlwaysOnTop() && (styleFlags & windowIsTemporary) != 0) ? True : False; | |||
+ swa.override_redirect = (styleFlags & windowIsTemporary) ? True : False; | |||
swa.event_mask = getAllEventsMask(); | |||
windowH = XCreateWindow (display, parentToAddTo != 0 ? parentToAddTo : root, | |||
netHints [0] = Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_NORMAL"); |
@@ -1,25 +0,0 @@ | |||
diff --git a/modules/juce_audio_devices/native/juce_win32_ASIO.cpp b/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
index 99e3cfb..44bab42 100644 | |||
--- a/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
+++ b/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
@@ -1416,15 +1416,13 @@ private: | |||
} | |||
}; | |||
- template <> | |||
- struct ASIOCallbackFunctions <sizeof(currentASIODev) / sizeof(currentASIODev[0])> | |||
- { | |||
- static void setCallbacksForDevice (ASIOCallbacks&, ASIOAudioIODevice*) noexcept {} | |||
- }; | |||
- | |||
void setCallbackFunctions() noexcept | |||
{ | |||
- ASIOCallbackFunctions<0>::setCallbacksForDevice (callbacks, this); | |||
+ /**/ if (currentASIODev[0] == this) ASIOCallbackFunctions<0>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[1] == this) ASIOCallbackFunctions<1>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[2] == this) ASIOCallbackFunctions<2>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[3] == this) ASIOCallbackFunctions<3>::setCallbacks (callbacks); | |||
+ else jassertfalse; | |||
} | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ASIOAudioIODevice) |
@@ -1,24 +1,24 @@ | |||
diff --git a/modules/juce_audio_basics/juce_audio_basics.cpp b/modules/juce_audio_basics/juce_audio_basics.cpp | |||
index 814e102..7676305 100644 | |||
index 258de8f..c5a6bfa 100644 | |||
--- a/modules/juce_audio_basics/juce_audio_basics.cpp | |||
+++ b/modules/juce_audio_basics/juce_audio_basics.cpp | |||
@@ -79,6 +79,7 @@ namespace juce | |||
#include "buffers/juce_AudioSampleBuffer.cpp" | |||
@@ -83,6 +83,7 @@ namespace juce | |||
#include "buffers/juce_FloatVectorOperations.cpp" | |||
#include "buffers/juce_AudioChannelSet.cpp" | |||
#include "effects/juce_IIRFilter.cpp" | |||
+#include "effects/juce_IIRFilterOld.cpp" | |||
#include "effects/juce_LagrangeInterpolator.cpp" | |||
#include "effects/juce_FFT.cpp" | |||
#include "effects/juce_CatmullRomInterpolator.cpp" | |||
#include "midi/juce_MidiBuffer.cpp" | |||
diff --git a/modules/juce_audio_basics/juce_audio_basics.h b/modules/juce_audio_basics/juce_audio_basics.h | |||
index 106df2b..6554126 100644 | |||
index feb2a6e..ce6c8f4 100644 | |||
--- a/modules/juce_audio_basics/juce_audio_basics.h | |||
+++ b/modules/juce_audio_basics/juce_audio_basics.h | |||
@@ -39,6 +39,7 @@ namespace juce | |||
#include "buffers/juce_FloatVectorOperations.h" | |||
@@ -63,6 +63,7 @@ namespace juce | |||
#include "buffers/juce_AudioChannelSet.h" | |||
#include "effects/juce_Decibels.h" | |||
#include "effects/juce_IIRFilter.h" | |||
+#include "effects/juce_IIRFilterOld.h" | |||
#include "effects/juce_LagrangeInterpolator.h" | |||
#include "effects/juce_FFT.h" | |||
#include "effects/juce_Reverb.h" | |||
#include "effects/juce_CatmullRomInterpolator.h" | |||
#include "effects/juce_LinearSmoothedValue.h" |
@@ -1,264 +0,0 @@ | |||
diff --git a/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp b/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp | |||
index 2f4b727..97e8a96 100644 | |||
--- a/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp | |||
+++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Wrapper.cpp | |||
@@ -52,7 +52,7 @@ | |||
#define JucePlugin_WantsLV2State 1 | |||
#endif | |||
-#if JUCE_LINUX | |||
+#if JUCE_LINUX && ! JUCE_LINUX_EMBED | |||
#include <X11/Xlib.h> | |||
#undef KeyPress | |||
#endif | |||
@@ -79,12 +79,12 @@ | |||
#include "../utility/juce_IncludeModuleHeaders.h" | |||
+#if JUCE_LINUX && ! JUCE_LINUX_EMBED | |||
namespace juce | |||
{ | |||
- #if JUCE_LINUX | |||
extern Display* display; | |||
- #endif | |||
} | |||
+#endif | |||
#define JUCE_LV2_STATE_STRING_URI "urn:juce:stateString" | |||
#define JUCE_LV2_STATE_BINARY_URI "urn:juce:stateBinary" | |||
@@ -200,6 +200,7 @@ const String makeManifestFile (AudioProcessor* const filter, const String& binar | |||
text += " rdfs:seeAlso <" + binary + ".ttl> .\n"; | |||
text += "\n"; | |||
+#if ! JUCE_LINUX_EMBED | |||
// UIs | |||
if (filter->hasEditor()) | |||
{ | |||
@@ -211,19 +212,20 @@ const String makeManifestFile (AudioProcessor* const filter, const String& binar | |||
text += "\n"; | |||
text += "<" + pluginURI + "#ParentUI>\n"; | |||
-#if JUCE_MAC | |||
+ #if JUCE_MAC | |||
text += " a ui:CocoaUI ;\n"; | |||
-#elif JUCE_LINUX | |||
+ #elif JUCE_LINUX | |||
text += " a ui:X11UI ;\n"; | |||
-#elif JUCE_WINDOWS | |||
+ #elif JUCE_WINDOWS | |||
text += " a ui:WindowsUI ;\n"; | |||
-#endif | |||
+ #endif | |||
text += " ui:binary <" + binary + PLUGIN_EXT "> ;\n"; | |||
text += " lv2:requiredFeature <" LV2_INSTANCE_ACCESS_URI "> ;\n"; | |||
text += " lv2:optionalFeature ui:noUserResize ;\n"; | |||
text += " lv2:extensionData <" LV2_PROGRAMS__UIInterface "> .\n"; | |||
text += "\n"; | |||
} | |||
+#endif | |||
#if JucePlugin_WantsLV2Presets | |||
const String presetSeparator(pluginURI.contains("#") ? ":" : "#"); | |||
@@ -273,6 +275,7 @@ const String makePluginFile (AudioProcessor* const filter, const int maxNumInput | |||
text += " <" LV2_PROGRAMS__Interface "> ;\n"; | |||
text += "\n"; | |||
+#if ! JUCE_LINUX_EMBED | |||
// UIs | |||
if (filter->hasEditor()) | |||
{ | |||
@@ -280,6 +283,7 @@ const String makePluginFile (AudioProcessor* const filter, const int maxNumInput | |||
text += " <" + pluginURI + "#ParentUI> ;\n"; | |||
text += "\n"; | |||
} | |||
+#endif | |||
uint32 portIndex = 0; | |||
@@ -570,6 +574,7 @@ private: | |||
}; | |||
#endif | |||
+#if ! JUCE_LINUX_EMBED | |||
//============================================================================== | |||
/** | |||
Lightweight DocumentWindow subclass for external ui | |||
@@ -1105,6 +1110,8 @@ private: | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceLv2UIWrapper) | |||
}; | |||
+#endif /* JUCE_LINUX_EMBED */ | |||
+ | |||
//============================================================================== | |||
/** | |||
Juce LV2 handle | |||
@@ -1249,7 +1256,9 @@ public: | |||
{ | |||
const MessageManagerLock mmLock; | |||
+#if ! JUCE_LINUX_EMBED | |||
ui = nullptr; | |||
+#endif | |||
filter = nullptr; | |||
if (progDesc.name != nullptr) | |||
@@ -1818,8 +1827,10 @@ public: | |||
String stateData (CharPointer_UTF8(static_cast<const char*>(data))); | |||
filter->setStateInformationString (stateData); | |||
+ #if ! JUCE_LINUX_EMBED | |||
if (ui != nullptr) | |||
ui->repaint(); | |||
+ #endif | |||
return LV2_STATE_SUCCESS; | |||
} | |||
@@ -1828,8 +1839,10 @@ public: | |||
{ | |||
filter->setCurrentProgramStateInformation (data, size); | |||
+ #if ! JUCE_LINUX_EMBED | |||
if (ui != nullptr) | |||
ui->repaint(); | |||
+ #endif | |||
return LV2_STATE_SUCCESS; | |||
} | |||
@@ -1852,6 +1865,7 @@ public: | |||
#endif | |||
} | |||
+#if ! JUCE_LINUX_EMBED | |||
//============================================================================== | |||
JuceLv2UIWrapper* getUI (LV2UI_Write_Function writeFunction, LV2UI_Controller controller, LV2UI_Widget* widget, | |||
const LV2_Feature* const* features, bool isExternal) | |||
@@ -1865,6 +1879,7 @@ public: | |||
return ui; | |||
} | |||
+#endif | |||
private: | |||
#if JUCE_LINUX | |||
@@ -1874,7 +1889,9 @@ private: | |||
#endif | |||
ScopedPointer<AudioProcessor> filter; | |||
+#if ! JUCE_LINUX_EMBED | |||
ScopedPointer<JuceLv2UIWrapper> ui; | |||
+#endif | |||
HeapBlock<float*> channels; | |||
MidiBuffer midiEvents; | |||
int numInChans, numOutChans; | |||
@@ -2033,6 +2050,7 @@ static const void* juceLV2_ExtensionData (const char* uri) | |||
return nullptr; | |||
} | |||
+#if ! JUCE_LINUX_EMBED | |||
//============================================================================== | |||
// LV2 UI descriptor functions | |||
@@ -2068,6 +2086,7 @@ static void juceLV2UI_Cleanup (LV2UI_Handle handle) | |||
{ | |||
((JuceLv2UIWrapper*)handle)->lv2Cleanup(); | |||
} | |||
+#endif | |||
//============================================================================== | |||
// static LV2 Descriptor objects | |||
@@ -2083,6 +2102,7 @@ static const LV2_Descriptor JuceLv2Plugin = { | |||
juceLV2_ExtensionData | |||
}; | |||
+#if ! JUCE_LINUX_EMBED | |||
static const LV2UI_Descriptor JuceLv2UI_External = { | |||
strdup(String(getPluginURI() + "#ExternalUI").toRawUTF8()), | |||
juceLV2UI_InstantiateExternal, | |||
@@ -2098,14 +2118,17 @@ static const LV2UI_Descriptor JuceLv2UI_Parent = { | |||
nullptr, | |||
nullptr | |||
}; | |||
+#endif | |||
static const struct DescriptorCleanup { | |||
DescriptorCleanup() {} | |||
~DescriptorCleanup() | |||
{ | |||
free((void*)JuceLv2Plugin.URI); | |||
+#if ! JUCE_LINUX_EMBED | |||
free((void*)JuceLv2UI_External.URI); | |||
free((void*)JuceLv2UI_Parent.URI); | |||
+#endif | |||
} | |||
} _descCleanup; | |||
@@ -2130,6 +2153,7 @@ JUCE_EXPORTED_FUNCTION const LV2_Descriptor* lv2_descriptor (uint32 index) | |||
return (index == 0) ? &JuceLv2Plugin : nullptr; | |||
} | |||
+#if ! JUCE_LINUX_EMBED | |||
JUCE_EXPORTED_FUNCTION const LV2UI_Descriptor* lv2ui_descriptor (uint32 index); | |||
JUCE_EXPORTED_FUNCTION const LV2UI_Descriptor* lv2ui_descriptor (uint32 index) | |||
{ | |||
@@ -2143,5 +2167,6 @@ JUCE_EXPORTED_FUNCTION const LV2UI_Descriptor* lv2ui_descriptor (uint32 index) | |||
return nullptr; | |||
} | |||
} | |||
+#endif | |||
#endif | |||
diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
index 8df41ca..4c0a6a1 100644 | |||
--- a/modules/juce_audio_processors/juce_audio_processors.cpp | |||
+++ b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
@@ -47,7 +47,7 @@ | |||
#endif | |||
#endif | |||
-#if JUCE_PLUGINHOST_VST && JUCE_LINUX | |||
+#if JUCE_PLUGINHOST_VST && JUCE_LINUX && ! JUCE_LINUX_EMBED | |||
#include <X11/Xlib.h> | |||
#include <X11/Xutil.h> | |||
#undef KeyPress | |||
@@ -161,7 +161,9 @@ void AutoResizingNSViewComponentWithParent::timerCallback() | |||
#include "format/juce_AudioPluginFormat.cpp" | |||
#include "format/juce_AudioPluginFormatManager.cpp" | |||
#include "processors/juce_AudioProcessor.cpp" | |||
-#include "processors/juce_AudioProcessorEditor.cpp" | |||
+#if ! JUCE_LINUX_EMBED | |||
+ #include "processors/juce_AudioProcessorEditor.cpp" | |||
+#endif | |||
#include "processors/juce_AudioProcessorGraph.cpp" | |||
#include "processors/juce_GenericAudioProcessorEditor.cpp" | |||
#include "processors/juce_PluginDescription.cpp" | |||
diff --git a/modules/juce_events/juce_events.cpp b/modules/juce_events/juce_events.cpp | |||
index 729a78f..6d69c40 100644 | |||
--- a/modules/juce_events/juce_events.cpp | |||
+++ b/modules/juce_events/juce_events.cpp | |||
@@ -55,10 +55,12 @@ | |||
#import <IOKit/pwr_mgt/IOPMLib.h> | |||
#elif JUCE_LINUX | |||
- #include <X11/Xlib.h> | |||
- #include <X11/Xresource.h> | |||
- #include <X11/Xutil.h> | |||
- #undef KeyPress | |||
+ #if ! JUCE_LINUX_EMBED | |||
+ #include <X11/Xlib.h> | |||
+ #include <X11/Xresource.h> | |||
+ #include <X11/Xutil.h> | |||
+ #undef KeyPress | |||
+ #endif | |||
#include <unistd.h> | |||
#endif | |||
@@ -91,6 +93,9 @@ namespace juce | |||
#elif JUCE_WINDOWS | |||
#include "native/juce_win32_Messaging.cpp" | |||
+#elif JUCE_LINUX_EMBED | |||
+ #include "native/juce_linux-embed_Messaging.cpp" | |||
+ | |||
#elif JUCE_LINUX | |||
#include "native/juce_ScopedXLock.h" | |||
#include "native/juce_linux_Messaging.cpp" |
@@ -1,20 +0,0 @@ | |||
diff --git a/modules/juce_events/native/juce_linux_Messaging.cpp b/modules/juce_events/native/juce_linux_Messaging.cpp | |||
index b2eaece..6e17abb 100644 | |||
--- a/modules/juce_events/native/juce_linux_Messaging.cpp | |||
+++ b/modules/juce_events/native/juce_linux_Messaging.cpp | |||
@@ -360,8 +360,13 @@ bool MessageManager::postMessageToSystemQueue (MessageManager::MessageBase* cons | |||
if (LinuxErrorHandling::errorOccurred) | |||
return false; | |||
- InternalMessageQueue::getInstanceWithoutCreating()->postMessage (message); | |||
- return true; | |||
+ if (InternalMessageQueue* const queue = InternalMessageQueue::getInstanceWithoutCreating()) | |||
+ { | |||
+ queue->postMessage (message); | |||
+ return true; | |||
+ } | |||
+ | |||
+ return false; | |||
} | |||
void MessageManager::broadcastMessage (const String& /* value */) |
@@ -1,8 +1,8 @@ | |||
diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
index 1bb2413..8479bc3 100644 | |||
index 7ec05c1..945f272 100644 | |||
--- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
+++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||
@@ -26,7 +26,7 @@ | |||
@@ -28,7 +28,7 @@ | |||
} // (juce namespace) | |||
@@ -0,0 +1,44 @@ | |||
diff --git a/modules/juce_audio_devices/native/juce_win32_ASIO.cpp b/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
index c919767..e6d88aa 100644 | |||
--- a/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
+++ b/modules/juce_audio_devices/native/juce_win32_ASIO.cpp | |||
@@ -1413,7 +1413,11 @@ private: | |||
void setCallbackFunctions() noexcept | |||
{ | |||
- ASIOCallbackFunctions<0>::setCallbacksForDevice (callbacks, this); | |||
+ /**/ if (currentASIODev[0] == this) ASIOCallbackFunctions<0>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[1] == this) ASIOCallbackFunctions<1>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[2] == this) ASIOCallbackFunctions<2>::setCallbacks (callbacks); | |||
+ else if (currentASIODev[3] == this) ASIOCallbackFunctions<3>::setCallbacks (callbacks); | |||
+ else jassertfalse; | |||
} | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ASIOAudioIODevice) | |||
diff --git a/modules/juce_audio_processors/format_types/juce_VST3Headers.h b/modules/juce_audio_processors/format_types/juce_VST3Headers.h | |||
index 1eec325..de33170 100644 | |||
--- a/modules/juce_audio_processors/format_types/juce_VST3Headers.h | |||
+++ b/modules/juce_audio_processors/format_types/juce_VST3Headers.h | |||
@@ -86,6 +86,9 @@ | |||
#include <public.sdk/source/common/memorystream.h> | |||
#include <public.sdk/source/vst/vsteditcontroller.h> | |||
#else | |||
+ #if JUCE_MINGW | |||
+ #define _set_abort_behavior(...) | |||
+ #endif | |||
#include <base/source/baseiids.cpp> | |||
#include <base/source/fbuffer.cpp> | |||
#include <base/source/fdebug.cpp> | |||
diff --git a/modules/juce_core/native/juce_BasicNativeHeaders.h b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
index 088832b..9ce110c 100644 | |||
--- a/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
+++ b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
@@ -117,7 +117,7 @@ | |||
#define STRICT 1 | |||
#define WIN32_LEAN_AND_MEAN 1 | |||
#if JUCE_MINGW | |||
- #define _WIN32_WINNT 0x0501 | |||
+ #define _WIN32_WINNT 0x0502 | |||
#else | |||
#define _WIN32_WINNT 0x0602 | |||
#endif |
@@ -1,35 +0,0 @@ | |||
diff --git a/modules/juce_core/maths/juce_MathsFunctions.h b/modules/juce_core/maths/juce_MathsFunctions.h | |||
index 30fdd10..7a71ad8 100644 | |||
--- a/modules/juce_core/maths/juce_MathsFunctions.h | |||
+++ b/modules/juce_core/maths/juce_MathsFunctions.h | |||
@@ -367,7 +367,7 @@ inline bool juce_isfinite (NumericType) noexcept | |||
template <> | |||
inline bool juce_isfinite (float value) noexcept | |||
{ | |||
- #if JUCE_WINDOWS | |||
+ #if JUCE_MSVC | |||
return _finite (value) != 0; | |||
#else | |||
return std::isfinite (value); | |||
@@ -377,7 +377,7 @@ inline bool juce_isfinite (float value) noexcept | |||
template <> | |||
inline bool juce_isfinite (double value) noexcept | |||
{ | |||
- #if JUCE_WINDOWS | |||
+ #if JUCE_MSVC | |||
return _finite (value) != 0; | |||
#else | |||
return std::isfinite (value); | |||
diff --git a/modules/juce_core/native/juce_BasicNativeHeaders.h b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
index cdaa0ef..55c0c8c 100644 | |||
--- a/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
+++ b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
@@ -87,7 +87,7 @@ | |||
#define STRICT 1 | |||
#define WIN32_LEAN_AND_MEAN 1 | |||
#if JUCE_MINGW | |||
- #define _WIN32_WINNT 0x0501 | |||
+ #define _WIN32_WINNT 0x0502 | |||
#else | |||
#define _WIN32_WINNT 0x0600 | |||
#endif |
@@ -1,46 +0,0 @@ | |||
diff --git a/modules/juce_core/files/juce_File.cpp b/modules/juce_core/files/juce_File.cpp | |||
index de6790e..a8c2c69 100644 | |||
--- a/modules/juce_core/files/juce_File.cpp | |||
+++ b/modules/juce_core/files/juce_File.cpp | |||
@@ -911,7 +911,7 @@ bool File::createSymbolicLink (const File& linkFileToCreate, bool overwriteExist | |||
} | |||
return true; | |||
- #elif JUCE_WINDOWS | |||
+ #elif JUCE_MSVC | |||
return CreateSymbolicLink (linkFileToCreate.getFullPathName().toWideCharPointer(), | |||
fullPath.toWideCharPointer(), | |||
isDirectory() ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0) != FALSE; | |||
diff --git a/modules/juce_core/native/juce_BasicNativeHeaders.h b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
index 933285a..c926ecf 100644 | |||
--- a/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
+++ b/modules/juce_core/native/juce_BasicNativeHeaders.h | |||
@@ -114,7 +114,7 @@ | |||
#if JUCE_MINGW | |||
#include <basetyps.h> | |||
#include <sys/time.h> | |||
- #define alloca __builtin_alloca | |||
+ #define alloca(x) __builtin_alloca((x)) | |||
#else | |||
#include <crtdbg.h> | |||
#include <comutil.h> | |||
diff --git a/modules/juce_core/native/juce_win32_Files.cpp b/modules/juce_core/native/juce_win32_Files.cpp | |||
index 715be33..81a0bca 100644 | |||
--- a/modules/juce_core/native/juce_win32_Files.cpp | |||
+++ b/modules/juce_core/native/juce_win32_Files.cpp | |||
@@ -643,6 +643,7 @@ bool File::isShortcut() const | |||
File File::getLinkedTarget() const | |||
{ | |||
+#if JUCE_MSVC | |||
{ | |||
HANDLE h = CreateFile (getFullPathName().toWideCharPointer(), | |||
GENERIC_READ, FILE_SHARE_READ, nullptr, | |||
@@ -676,6 +677,7 @@ File File::getLinkedTarget() const | |||
CloseHandle (h); | |||
} | |||
} | |||
+#endif | |||
File result (*this); | |||
String p (getFullPathName()); |
@@ -1,14 +1,11 @@ | |||
diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
index d1f1679..2957e0d 100644 | |||
index 20dee10..ca6dd27 100644 | |||
--- a/modules/juce_audio_processors/juce_audio_processors.cpp | |||
+++ b/modules/juce_audio_processors/juce_audio_processors.cpp | |||
@@ -79,61 +79,73 @@ static inline bool arrayContainsPlugin (const OwnedArray<PluginDescription>& lis | |||
#if JUCE_MAC | |||
//============================================================================== | |||
-struct AutoResizingNSViewComponent : public NSViewComponent, | |||
- private AsyncUpdater | |||
-{ | |||
@@ -86,24 +86,9 @@ static inline bool arrayContainsPlugin (const OwnedArray<PluginDescription>& lis | |||
struct AutoResizingNSViewComponent : public ViewComponentBaseClass, | |||
private AsyncUpdater | |||
{ | |||
- AutoResizingNSViewComponent() : recursive (false) {} | |||
- | |||
- void childBoundsChanged (Component*) override | |||
@@ -27,95 +24,91 @@ index d1f1679..2957e0d 100644 | |||
- | |||
- void handleAsyncUpdate() override { resizeToFitView(); } | |||
- | |||
+ | |||
+struct AutoResizingNSViewComponent : public NSViewComponent, | |||
+ private AsyncUpdater { | |||
+ AutoResizingNSViewComponent(); | |||
+ void childBoundsChanged(Component*) override; | |||
+ void childBoundsChanged (Component*) override; | |||
+ void handleAsyncUpdate() override; | |||
bool recursive; | |||
}; | |||
+struct AutoResizingNSViewComponentWithParent : public AutoResizingNSViewComponent, | |||
+ private Timer { | |||
@@ -111,33 +96,61 @@ struct AutoResizingNSViewComponent : public ViewComponentBaseClass, | |||
struct AutoResizingNSViewComponentWithParent : public AutoResizingNSViewComponent, | |||
private Timer | |||
{ | |||
- AutoResizingNSViewComponentWithParent() | |||
- { | |||
- JUCE_IOS_MAC_VIEW* v = [[JUCE_IOS_MAC_VIEW alloc] init]; | |||
- setView (v); | |||
- [v release]; | |||
+ AutoResizingNSViewComponentWithParent(); | |||
+ NSView* getChildView() const; | |||
+ JUCE_IOS_MAC_VIEW* getChildView() const; | |||
+ void timerCallback() override; | |||
+}; | |||
+ | |||
//============================================================================== | |||
-struct AutoResizingNSViewComponentWithParent : public AutoResizingNSViewComponent, | |||
- private Timer | |||
+ | |||
- startTimer (30); | |||
- } | |||
+//============================================================================== | |||
+AutoResizingNSViewComponent::AutoResizingNSViewComponent() | |||
+ : recursive (false) {} | |||
+ | |||
+void AutoResizingNSViewComponent::childBoundsChanged(Component*) | |||
{ | |||
- AutoResizingNSViewComponentWithParent() | |||
- JUCE_IOS_MAC_VIEW* getChildView() const | |||
+void AutoResizingNSViewComponent::childBoundsChanged (Component*) override | |||
+{ | |||
+ if (recursive) | |||
{ | |||
- NSView* v = [[NSView alloc] init]; | |||
- setView (v); | |||
- [v release]; | |||
- | |||
- startTimer (30); | |||
+ triggerAsyncUpdate(); | |||
} | |||
- | |||
- NSView* getChildView() const | |||
+ else | |||
{ | |||
- if (NSView* parent = (NSView*) getView()) | |||
- if (JUCE_IOS_MAC_VIEW* parent = (JUCE_IOS_MAC_VIEW*) getView()) | |||
- if ([[parent subviews] count] > 0) | |||
- return [[parent subviews] objectAtIndex: 0]; | |||
- | |||
- return nil; | |||
+ triggerAsyncUpdate(); | |||
} | |||
+ else | |||
+ { | |||
+ recursive = true; | |||
+ resizeToFitView(); | |||
+ recursive = true; | |||
} | |||
+ } | |||
+} | |||
- void timerCallback() override | |||
+void AutoResizingNSViewComponent::handleAsyncUpdate() | |||
+void AutoResizingNSViewComponent::handleAsyncUpdate() override | |||
+{ | |||
+ resizeToFitView(); | |||
+} | |||
+ | |||
+//============================================================================== | |||
+AutoResizingNSViewComponentWithParent::AutoResizingNSViewComponentWithParent() | |||
+{ | |||
+ NSView* v = [[NSView alloc] init]; | |||
+ JUCE_IOS_MAC_VIEW* v = [[JUCE_IOS_MAC_VIEW alloc] init]; | |||
+ setView (v); | |||
+ [v release]; | |||
+ | |||
+ startTimer(500); | |||
+ | |||
+ startTimer (30); | |||
+} | |||
+ | |||
+NSView* AutoResizingNSViewComponentWithParent::getChildView() const | |||
+JUCE_IOS_MAC_VIEW* AutoResizingNSViewComponentWithParent::getChildView() const | |||
+{ | |||
+ if (NSView* parent = (NSView*)getView()) | |||
+ if (JUCE_IOS_MAC_VIEW* parent = (JUCE_IOS_MAC_VIEW*) getView()) | |||
+ if ([[parent subviews] count] > 0) | |||
+ return [[parent subviews] objectAtIndex: 0]; | |||
+ | |||
+ | |||
+ return nil; | |||
+} | |||
+ | |||
+void AutoResizingNSViewComponentWithParent::timerCallback() | |||
+void AutoResizingNSViewComponentWithParent::timerCallback() override | |||
+{ | |||
+ if (NSView* child = getChildView()) | |||
+ if (JUCE_IOS_MAC_VIEW* child = getChildView()) | |||
{ | |||
- if (NSView* child = getChildView()) | |||
- if (JUCE_IOS_MAC_VIEW* child = getChildView()) | |||
- { | |||
- stopTimer(); | |||
- setView (child); | |||
- } | |||
+ stopTimer(); | |||
+ setView(child); | |||
+ setView (child); | |||
} | |||
-}; | |||
+} | |||
+ | |||
#endif | |||
#if JUCE_CLANG |
@@ -1,12 +1,13 @@ | |||
diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
index 17a5307..abcf358 100644 | |||
index f6faa5b..0a5d97e 100644 | |||
--- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
+++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
@@ -596,12 +596,38 @@ File juce_getExecutableFile() | |||
{ | |||
Dl_info exeInfo; | |||
dladdr ((void*) juce_getExecutableFile, &exeInfo); | |||
@@ -647,12 +647,39 @@ File juce_getExecutableFile() | |||
void* localSymbol = (void*) juce_getExecutableFile; | |||
dladdr (localSymbol, &exeInfo); | |||
- return CharPointer_UTF8 (exeInfo.dli_fname); | |||
+ | |||
+ const CharPointer_UTF8 filename (exeInfo.dli_fname); | |||
+ | |||
+ // if the filename is absolute simply return it | |||
@@ -37,7 +38,7 @@ index 17a5307..abcf358 100644 | |||
} | |||
}; | |||
static String filename (DLAddrReader::getFilename()); | |||
static String filename = DLAddrReader::getFilename(); | |||
- return File::getCurrentWorkingDirectory().getChildFile (filename); | |||
+ return filename; | |||
#endif | |||
@@ -1,8 +1,8 @@ | |||
diff --git a/modules/juce_core/native/juce_linux_Files.cpp b/modules/juce_core/native/juce_linux_Files.cpp | |||
index 3c38624..a0941ab 100644 | |||
index 1867cb7..3b239df 100644 | |||
--- a/modules/juce_core/native/juce_linux_Files.cpp | |||
+++ b/modules/juce_core/native/juce_linux_Files.cpp | |||
@@ -219,17 +219,22 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||
@@ -206,17 +206,22 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||
cmdString = cmdLines.joinIntoString (" || "); | |||
} | |||
@@ -30,11 +30,11 @@ index 3c38624..a0941ab 100644 | |||
return cpid >= 0; | |||
diff --git a/modules/juce_core/native/juce_mac_Files.mm b/modules/juce_core/native/juce_mac_Files.mm | |||
index 0a00e92..fdebd69 100644 | |||
index 36df598..1892af7 100644 | |||
--- a/modules/juce_core/native/juce_mac_Files.mm | |||
+++ b/modules/juce_core/native/juce_mac_Files.mm | |||
@@ -110,23 +110,22 @@ namespace FileHelpers | |||
@@ -102,23 +102,22 @@ namespace MacFileHelpers | |||
#else | |||
static bool launchExecutable (const String& pathAndArguments) | |||
{ | |||
- const char* const argv[4] = { "/bin/sh", "-c", pathAndArguments.toUTF8(), 0 }; | |||
@@ -63,20 +63,20 @@ index 0a00e92..fdebd69 100644 | |||
- return true; | |||
+ return cpid >= 0; | |||
} | |||
#endif | |||
} | |||
diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||
index abcf358..17def66 100644 | |||
index 0a5d97e..00eecfc 100644 | |||
--- a/modules/juce_core/native/juce_posix_SharedCode.h | |||
+++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||
@@ -1046,7 +1046,18 @@ public: | |||
@@ -1160,7 +1160,18 @@ public: | |||
if (pipe (pipeHandles) == 0) | |||
{ | |||
+ Array<char*> argv; | |||
+ for (int i = 0; i < arguments.size(); ++i) | |||
+ if (arguments[i].isNotEmpty()) | |||
+ argv.add (const_cast<char*> (arguments[i].toUTF8().getAddress())); | |||
+ argv.add (const_cast<char*> (arguments[i].toRawUTF8())); | |||
+ | |||
+ argv.add (nullptr); | |||
+ | |||
@@ -88,7 +88,7 @@ index abcf358..17def66 100644 | |||
if (result < 0) | |||
{ | |||
@@ -1055,6 +1066,7 @@ public: | |||
@@ -1169,6 +1180,7 @@ public: | |||
} | |||
else if (result == 0) | |||
{ | |||
@@ -96,8 +96,8 @@ index abcf358..17def66 100644 | |||
// we're the child process.. | |||
close (pipeHandles[0]); // close the read handle | |||
@@ -1069,16 +1081,10 @@ public: | |||
close (STDERR_FILENO); | |||
@@ -1183,16 +1195,10 @@ public: | |||
dup2 (open ("/dev/null", O_WRONLY), STDERR_FILENO); | |||
close (pipeHandles[1]); | |||
+#endif | |||
@@ -105,11 +105,11 @@ index abcf358..17def66 100644 | |||
- Array<char*> argv; | |||
- for (int i = 0; i < arguments.size(); ++i) | |||
- if (arguments[i].isNotEmpty()) | |||
- argv.add (const_cast<char*> (arguments[i].toUTF8().getAddress())); | |||
- argv.add (const_cast<char*> (arguments[i].toRawUTF8())); | |||
- | |||
- argv.add (nullptr); | |||
- | |||
- execvp (argv[0], argv.getRawDataPointer()); | |||
- execvp (exe.toRawUTF8(), argv.getRawDataPointer()); | |||
- exit (-1); | |||
+ if (execvp (argv[0], argv.getRawDataPointer()) < 0) | |||
+ _exit (-1); | |||
@@ -1,10 +1,10 @@ | |||
diff --git a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp | |||
index 1bef497..cb4d884 100644 | |||
index 88d8f49..7a5d661 100644 | |||
--- a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp | |||
+++ b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp | |||
@@ -1355,7 +1355,8 @@ private: | |||
@@ -1356,7 +1356,8 @@ private: | |||
const Result result (finder.findDescriptionsAndPerform (f)); | |||
auto result = finder.findDescriptionsAndPerform (f); | |||
- if (result.getErrorMessage() == MatchingDescriptionFinder::getSuccessString()) | |||
+ if (result.getErrorMessage() == MatchingDescriptionFinder::getSuccessString() || | |||
@@ -1,16 +1,16 @@ | |||
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 0086d80..7e0564f 100644 | |||
index ecab10a..e9d8f4a 100644 | |||
--- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
+++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||
@@ -108,6 +108,7 @@ | |||
#include "../utility/juce_IncludeModuleHeaders.h" | |||
#include "../utility/juce_FakeMouseMoveGenerator.h" | |||
#include "../utility/juce_WindowsHooks.h" | |||
+#include "modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h" | |||
@@ -60,6 +60,7 @@ | |||
#endif | |||
#include "../../juce_audio_processors/format_types/juce_VSTInterface.h" | |||
+#include "../../juce_audio_processors/format_types/juce_VSTMidiEventList.h" | |||
#ifdef _MSC_VER | |||
#pragma pack (pop) | |||
@@ -213,9 +214,9 @@ public: | |||
#pragma warning (pop) | |||
@@ -179,9 +180,9 @@ struct SharedMessageThread : public Thread | |||
void run() override | |||
{ | |||
initialiseJuce_GUI(); | |||
@@ -19,37 +19,36 @@ index 0086d80..7e0564f 100644 | |||
MessageManager::getInstance()->setCurrentThreadAsMessageThread(); | |||
+ initialised = true; | |||
while ((! threadShouldExit()) && MessageManager::getInstance()->runDispatchLoopUntil (250)) | |||
{} | |||
@@ -285,10 +286,6 @@ public: | |||
setInitialDelay (filter->getLatencySamples()); | |||
programsAreChunks (true); | |||
ScopedXDisplay xDisplay; | |||
@@ -268,9 +269,6 @@ public: | |||
// You must at least have some channels | |||
jassert (processor->isMidiEffect() || (maxNumInChannels > 0 || maxNumOutChannels > 0)); | |||
- // NB: For reasons best known to themselves, some hosts fail to load/save plugin | |||
- // state correctly if the plugin doesn't report that it has at least 1 program. | |||
- jassert (af->getNumPrograms() > 0); | |||
- if (processor->isMidiEffect()) | |||
- maxNumInChannels = maxNumOutChannels = 2; | |||
- | |||
activePlugins.add (this); | |||
} | |||
#ifdef JucePlugin_PreferredChannelConfigurations | |||
processor->setPlayConfigDetails (maxNumInChannels, maxNumOutChannels, 44100.0, 1024); | |||
#endif | |||
@@ -1887,7 +1885,7 @@ private: | |||
@@ -352,7 +349,7 @@ public: | |||
//============================================================================== | |||
bool getEffectName (char* name) override | |||
pointer_sized_int handleGetPlugInName (VstOpCodeArguments args) | |||
{ | |||
- String (JucePlugin_Name).copyToUTF8 (name, 64); | |||
+ String (filter->getName()).copyToUTF8 (name, 64); | |||
return true; | |||
- String (JucePlugin_Name).copyToUTF8 ((char*) args.ptr, 64 + 1); | |||
+ String (processor->getName()).copyToUTF8 ((char*) args.ptr, 64 + 1); | |||
return 1; | |||
} | |||
diff --git a/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp b/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp | |||
index 1e87c49..5fdb8c2 100644 | |||
index 4380839..757feae 100644 | |||
--- a/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp | |||
+++ b/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp | |||
@@ -31,7 +31,6 @@ | |||
#include "AppConfig.h" | |||
#include "../utility/juce_CheckSettingMacros.h" | |||
-#include "juce_IncludeModuleHeaders.h" | |||
@@ -29,7 +29,6 @@ | |||
#endif | |||
#if _MSC_VER || JUCE_MINGW | |||
#include "../../juce_core/system/juce_TargetPlatform.h" | |||
-#include "../utility/juce_CheckSettingMacros.h" | |||
#include "juce_IncludeModuleHeaders.h" | |||
namespace juce |