Signed-off-by: falkTX <falktx@falktx.com>master
| @@ -1 +1 @@ | |||||
| Subproject commit 176f819c681405a12e7f6ecc1e2e1af472c3ed7b | |||||
| Subproject commit d1a2d5908202f2529886e07c3e65118c821cba98 | |||||
| @@ -1,14 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||||
| index fa8a59c2d..9bc1d72e9 100644 | |||||
| --- a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||||
| +++ b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp | |||||
| @@ -237,8 +237,8 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray<AudioIODeviceType>& | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_CoreAudio()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_iOSAudio()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_Bela()); | |||||
| - addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_ALSA()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_JACK()); | |||||
| + addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_ALSA()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_Oboe()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_OpenSLES()); | |||||
| addIfNotNull (list, AudioIODeviceType::createAudioIODeviceType_Android()); | |||||
| @@ -1,80 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c b/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c | |||||
| index 4eac42e95..74d120e7d 100644 | |||||
| --- a/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c | |||||
| +++ b/modules/juce_audio_formats/codecs/flac/libFLAC/cpu.c | |||||
| @@ -240,42 +240,7 @@ void FLAC__cpu_info(FLAC__CPUInfo *info) | |||||
| disable_sse(info); | |||||
| # endif | |||||
| #elif defined(__linux__) | |||||
| - int sse = 0; | |||||
| - struct sigaction sigill_save; | |||||
| - struct sigaction sigill_sse; | |||||
| - sigill_sse.sa_sigaction = sigill_handler_sse_os; | |||||
| - #ifdef __ANDROID__ | |||||
| - sigemptyset (&sigill_sse.sa_mask); | |||||
| - #else | |||||
| - __sigemptyset(&sigill_sse.sa_mask); | |||||
| - #endif | |||||
| - sigill_sse.sa_flags = SA_SIGINFO | SA_RESETHAND; /* SA_RESETHAND just in case our SIGILL return jump breaks, so we don't get stuck in a loop */ | |||||
| - if(0 == sigaction(SIGILL, &sigill_sse, &sigill_save)) | |||||
| - { | |||||
| - /* http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html */ | |||||
| - /* see sigill_handler_sse_os() for an explanation of the following: */ | |||||
| - asm volatile ( | |||||
| - "xorps %%xmm0,%%xmm0\n\t" /* will cause SIGILL if unsupported by OS */ | |||||
| - "incl %0\n\t" /* SIGILL handler will jump over this */ | |||||
| - /* landing zone */ | |||||
| - "nop\n\t" /* SIGILL jump lands here if "inc" is 9 bytes */ | |||||
| - "nop\n\t" | |||||
| - "nop\n\t" | |||||
| - "nop\n\t" | |||||
| - "nop\n\t" | |||||
| - "nop\n\t" | |||||
| - "nop\n\t" /* SIGILL jump lands here if "inc" is 3 bytes (expected) */ | |||||
| - "nop\n\t" | |||||
| - "nop" /* SIGILL jump lands here if "inc" is 1 byte */ | |||||
| - : "=r"(sse) | |||||
| - : "0"(sse) | |||||
| - ); | |||||
| - | |||||
| - sigaction(SIGILL, &sigill_save, NULL); | |||||
| - } | |||||
| - | |||||
| - if(!sse) | |||||
| - disable_sse(info); | |||||
| + int sse = 1; | |||||
| #elif defined(_MSC_VER) | |||||
| __try { | |||||
| __asm { | |||||
| @@ -287,30 +252,7 @@ void FLAC__cpu_info(FLAC__CPUInfo *info) | |||||
| disable_sse(info); | |||||
| } | |||||
| #elif defined(__GNUC__) /* MinGW goes here */ | |||||
| - int sse = 0; | |||||
| - /* Based on the idea described in Agner Fog's manual "Optimizing subroutines in assembly language" */ | |||||
| - /* In theory, not guaranteed to detect lack of OS SSE support on some future Intel CPUs, but in practice works (see the aforementioned manual) */ | |||||
| - if (ia32_fxsr) { | |||||
| - struct { | |||||
| - FLAC__uint32 buff[128]; | |||||
| - } __attribute__((aligned(16))) fxsr; | |||||
| - FLAC__uint32 old_val, new_val; | |||||
| - | |||||
| - asm volatile ("fxsave %0" : "=m" (fxsr) : "m" (fxsr)); | |||||
| - old_val = fxsr.buff[50]; | |||||
| - fxsr.buff[50] ^= 0x0013c0de; /* change value in the buffer */ | |||||
| - asm volatile ("fxrstor %0" : "=m" (fxsr) : "m" (fxsr)); /* try to change SSE register */ | |||||
| - fxsr.buff[50] = old_val; /* restore old value in the buffer */ | |||||
| - asm volatile ("fxsave %0 " : "=m" (fxsr) : "m" (fxsr)); /* old value will be overwritten if SSE register was changed */ | |||||
| - new_val = fxsr.buff[50]; /* == old_val if FXRSTOR didn't change SSE register and (old_val ^ 0x0013c0de) otherwise */ | |||||
| - fxsr.buff[50] = old_val; /* again restore old value in the buffer */ | |||||
| - asm volatile ("fxrstor %0" : "=m" (fxsr) : "m" (fxsr)); /* restore old values of registers */ | |||||
| - | |||||
| - if ((old_val^new_val) == 0x0013c0de) | |||||
| - sse = 1; | |||||
| - } | |||||
| - if(!sse) | |||||
| - disable_sse(info); | |||||
| + int sse = 1; | |||||
| #else | |||||
| /* no way to test, disable to be safe */ | |||||
| disable_sse(info); | |||||
| @@ -1,13 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_basics/midi/juce_MidiMessage.h b/modules/juce_audio_basics/midi/juce_MidiMessage.h | |||||
| index 5241d7948..c63b965bc 100644 | |||||
| --- a/modules/juce_audio_basics/midi/juce_MidiMessage.h | |||||
| +++ b/modules/juce_audio_basics/midi/juce_MidiMessage.h | |||||
| @@ -979,7 +979,7 @@ private: | |||||
| #endif | |||||
| inline bool isHeapAllocated() const noexcept { return size > (int) sizeof (packedData); } | |||||
| - inline uint8* getData() const noexcept { return isHeapAllocated() ? packedData.allocatedData : (uint8*) packedData.asBytes; } | |||||
| + inline uint8* getData() const noexcept { return isHeapAllocated() ? packedData.allocatedData : const_cast<uint8*>(packedData.asBytes); } | |||||
| uint8* allocateSpace (int); | |||||
| }; | |||||
| @@ -1,538 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_processors/format_types/juce_VSTInterface.h b/modules/juce_audio_processors/format_types/juce_VSTInterface.h | |||||
| new file mode 100644 | |||||
| index 000000000..58179be1a | |||||
| --- /dev/null | |||||
| +++ b/modules/juce_audio_processors/format_types/juce_VSTInterface.h | |||||
| @@ -0,0 +1,532 @@ | |||||
| +/* | |||||
| + ============================================================================== | |||||
| + | |||||
| + This file is part of the JUCE library. | |||||
| + Copyright (c) 2017 - ROLI Ltd. | |||||
| + | |||||
| + JUCE is an open source library subject to commercial or open-source | |||||
| + licensing. | |||||
| + | |||||
| + By using JUCE, you agree to the terms of both the JUCE 5 End-User License | |||||
| + Agreement and JUCE 5 Privacy Policy (both updated and effective as of the | |||||
| + 27th April 2017). | |||||
| + | |||||
| + End User License Agreement: www.juce.com/juce-5-licence | |||||
| + Privacy Policy: www.juce.com/juce-5-privacy-policy | |||||
| + | |||||
| + Or: You may also use this code under the terms of the GPL v3 (see | |||||
| + www.gnu.org/licenses). | |||||
| + | |||||
| + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||||
| + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||||
| + DISCLAIMED. | |||||
| + | |||||
| + ============================================================================== | |||||
| +*/ | |||||
| + | |||||
| +#ifndef JUCE_VSTINTERFACE_H_INCLUDED | |||||
| +#define JUCE_VSTINTERFACE_H_INCLUDED | |||||
| + | |||||
| +using namespace juce; | |||||
| + | |||||
| +#if JUCE_MSVC | |||||
| + #define VSTINTERFACECALL __cdecl | |||||
| + #pragma pack(push) | |||||
| + #pragma pack(8) | |||||
| +#elif JUCE_MAC || JUCE_IOS | |||||
| + #define VSTINTERFACECALL | |||||
| + #if JUCE_64BIT | |||||
| + #pragma options align=power | |||||
| + #else | |||||
| + #pragma options align=mac68k | |||||
| + #endif | |||||
| +#else | |||||
| + #define VSTINTERFACECALL | |||||
| + #pragma pack(push, 8) | |||||
| +#endif | |||||
| + | |||||
| +const int32 juceVstInterfaceVersion = 2400; | |||||
| +const int32 juceVstInterfaceIdentifier = 0x56737450; // The "magic" identifier in the SDK is 'VstP'. | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstEffectInterface | |||||
| +{ | |||||
| + int32 interfaceIdentifier; | |||||
| + pointer_sized_int (VSTINTERFACECALL* dispatchFunction) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); | |||||
| + void (VSTINTERFACECALL* processAudioFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); | |||||
| + void (VSTINTERFACECALL* setParameterValueFunction) (VstEffectInterface*, int32 parameterIndex, float value); | |||||
| + float (VSTINTERFACECALL* getParameterValueFunction) (VstEffectInterface*, int32 parameterIndex); | |||||
| + int32 numPrograms; | |||||
| + int32 numParameters; | |||||
| + int32 numInputChannels; | |||||
| + int32 numOutputChannels; | |||||
| + int32 flags; | |||||
| + pointer_sized_int hostSpace1; | |||||
| + pointer_sized_int hostSpace2; | |||||
| + int32 latency; | |||||
| + int32 deprecated1; | |||||
| + int32 deprecated2; | |||||
| + float deprecated3; | |||||
| + void* effectPointer; | |||||
| + void* userPointer; | |||||
| + int32 plugInIdentifier; | |||||
| + int32 plugInVersion; | |||||
| + void (VSTINTERFACECALL* processAudioInplaceFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples); | |||||
| + void (VSTINTERFACECALL* processDoubleAudioInplaceFunction) (VstEffectInterface*, double** inputs, double** outputs, int32 numSamples); | |||||
| + char emptySpace[56]; | |||||
| +}; | |||||
| + | |||||
| +typedef pointer_sized_int (VSTINTERFACECALL* VstHostCallback) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt); | |||||
| + | |||||
| +enum VstEffectInterfaceFlags | |||||
| +{ | |||||
| + vstEffectFlagHasEditor = 1, | |||||
| + vstEffectFlagInplaceAudio = 16, | |||||
| + vstEffectFlagDataInChunks = 32, | |||||
| + vstEffectFlagIsSynth = 256, | |||||
| + vstEffectFlagInplaceDoubleAudio = 4096 | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +enum VstHostToPlugInOpcodes | |||||
| +{ | |||||
| + plugInOpcodeOpen, | |||||
| + plugInOpcodeClose, | |||||
| + plugInOpcodeSetCurrentProgram, | |||||
| + plugInOpcodeGetCurrentProgram, | |||||
| + plugInOpcodeSetCurrentProgramName, | |||||
| + plugInOpcodeGetCurrentProgramName, | |||||
| + plugInOpcodeGetParameterLabel, | |||||
| + plugInOpcodeGetParameterText, | |||||
| + plugInOpcodeGetParameterName, | |||||
| + plugInOpcodeSetSampleRate = plugInOpcodeGetParameterName + 2, | |||||
| + plugInOpcodeSetBlockSize, | |||||
| + plugInOpcodeResumeSuspend, | |||||
| + plugInOpcodeGetEditorBounds, | |||||
| + plugInOpcodeOpenEditor, | |||||
| + plugInOpcodeCloseEditor, | |||||
| + plugInOpcodeDrawEditor, | |||||
| + plugInOpcodeGetMouse, | |||||
| + plugInOpcodeEditorIdle = plugInOpcodeGetMouse + 2, | |||||
| + plugInOpcodeeffEditorTop, | |||||
| + plugInOpcodeSleepEditor, | |||||
| + plugInOpcodeIdentify, | |||||
| + plugInOpcodeGetData, | |||||
| + plugInOpcodeSetData, | |||||
| + plugInOpcodePreAudioProcessingEvents, | |||||
| + plugInOpcodeIsParameterAutomatable, | |||||
| + plugInOpcodeParameterValueForText, | |||||
| + plugInOpcodeGetProgramName = plugInOpcodeParameterValueForText + 2, | |||||
| + plugInOpcodeConnectInput = plugInOpcodeGetProgramName + 2, | |||||
| + plugInOpcodeConnectOutput, | |||||
| + plugInOpcodeGetInputPinProperties, | |||||
| + plugInOpcodeGetOutputPinProperties, | |||||
| + plugInOpcodeGetPlugInCategory, | |||||
| + plugInOpcodeSetSpeakerConfiguration = plugInOpcodeGetPlugInCategory + 7, | |||||
| + plugInOpcodeSetBypass = plugInOpcodeSetSpeakerConfiguration + 2, | |||||
| + plugInOpcodeGetPlugInName, | |||||
| + plugInOpcodeGetManufacturerName = plugInOpcodeGetPlugInName + 2, | |||||
| + plugInOpcodeGetManufacturerProductName, | |||||
| + plugInOpcodeGetManufacturerVersion, | |||||
| + plugInOpcodeManufacturerSpecific, | |||||
| + plugInOpcodeCanPlugInDo, | |||||
| + plugInOpcodeGetTailSize, | |||||
| + plugInOpcodeIdle, | |||||
| + plugInOpcodeKeyboardFocusRequired = plugInOpcodeIdle + 4, | |||||
| + plugInOpcodeGetVstInterfaceVersion, | |||||
| + plugInOpcodeGetCurrentMidiProgram = plugInOpcodeGetVstInterfaceVersion + 5, | |||||
| + plugInOpcodeGetSpeakerArrangement = plugInOpcodeGetCurrentMidiProgram + 6, | |||||
| + plugInOpcodeNextPlugInUniqueID, | |||||
| + plugInOpcodeStartProcess, | |||||
| + plugInOpcodeStopProcess, | |||||
| + plugInOpcodeSetNumberOfSamplesToProcess, | |||||
| + plugInOpcodeSetSampleFloatType = plugInOpcodeSetNumberOfSamplesToProcess + 4, | |||||
| + pluginOpcodeGetNumMidiInputChannels, | |||||
| + pluginOpcodeGetNumMidiOutputChannels, | |||||
| + plugInOpcodeMaximum = pluginOpcodeGetNumMidiOutputChannels | |||||
| +}; | |||||
| + | |||||
| + | |||||
| +enum VstPlugInToHostOpcodes | |||||
| +{ | |||||
| + hostOpcodeParameterChanged, | |||||
| + hostOpcodeVstVersion, | |||||
| + hostOpcodeCurrentId, | |||||
| + hostOpcodeIdle, | |||||
| + hostOpcodePinConnected, | |||||
| + hostOpcodePlugInWantsMidi = hostOpcodePinConnected + 2, | |||||
| + hostOpcodeGetTimingInfo, | |||||
| + hostOpcodePreAudioProcessingEvents, | |||||
| + hostOpcodeSetTime, | |||||
| + hostOpcodeTempoAt, | |||||
| + hostOpcodeGetNumberOfAutomatableParameters, | |||||
| + hostOpcodeGetParameterInterval, | |||||
| + hostOpcodeIOModified, | |||||
| + hostOpcodeNeedsIdle, | |||||
| + hostOpcodeWindowSize, | |||||
| + hostOpcodeGetSampleRate, | |||||
| + hostOpcodeGetBlockSize, | |||||
| + hostOpcodeGetInputLatency, | |||||
| + hostOpcodeGetOutputLatency, | |||||
| + hostOpcodeGetPreviousPlugIn, | |||||
| + hostOpcodeGetNextPlugIn, | |||||
| + hostOpcodeWillReplace, | |||||
| + hostOpcodeGetCurrentAudioProcessingLevel, | |||||
| + hostOpcodeGetAutomationState, | |||||
| + hostOpcodeOfflineStart, | |||||
| + hostOpcodeOfflineReadSource, | |||||
| + hostOpcodeOfflineWrite, | |||||
| + hostOpcodeOfflineGetCurrentPass, | |||||
| + hostOpcodeOfflineGetCurrentMetaPass, | |||||
| + hostOpcodeSetOutputSampleRate, | |||||
| + hostOpcodeGetOutputSpeakerConfiguration, | |||||
| + hostOpcodeGetManufacturerName, | |||||
| + hostOpcodeGetProductName, | |||||
| + hostOpcodeGetManufacturerVersion, | |||||
| + hostOpcodeManufacturerSpecific, | |||||
| + hostOpcodeSetIcon, | |||||
| + hostOpcodeCanHostDo, | |||||
| + hostOpcodeGetLanguage, | |||||
| + hostOpcodeOpenEditorWindow, | |||||
| + hostOpcodeCloseEditorWindow, | |||||
| + hostOpcodeGetDirectory, | |||||
| + hostOpcodeUpdateView, | |||||
| + hostOpcodeParameterChangeGestureBegin, | |||||
| + hostOpcodeParameterChangeGestureEnd, | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +enum VstProcessingSampleType | |||||
| +{ | |||||
| + vstProcessingSampleTypeFloat, | |||||
| + vstProcessingSampleTypeDouble | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +// These names must be identical to the Steinberg SDK so JUCE users can set | |||||
| +// exactly what they want. | |||||
| +enum VstPlugInCategory | |||||
| +{ | |||||
| + kPlugCategUnknown, | |||||
| + kPlugCategEffect, | |||||
| + kPlugCategSynth, | |||||
| + kPlugCategAnalysis, | |||||
| + kPlugCategMastering, | |||||
| + kPlugCategSpacializer, | |||||
| + kPlugCategRoomFx, | |||||
| + kPlugSurroundFx, | |||||
| + kPlugCategRestoration, | |||||
| + kPlugCategOfflineProcess, | |||||
| + kPlugCategShell, | |||||
| + kPlugCategGenerator | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstEditorBounds | |||||
| +{ | |||||
| + int16 upper; | |||||
| + int16 leftmost; | |||||
| + int16 lower; | |||||
| + int16 rightmost; | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +enum VstMaxStringLengths | |||||
| +{ | |||||
| + vstMaxNameLength = 64, | |||||
| + vstMaxParameterOrPinLabelLength = 64, | |||||
| + vstMaxParameterOrPinShortLabelLength = 8, | |||||
| + vstMaxCategoryLength = 24, | |||||
| + vstMaxManufacturerStringLength = 64, | |||||
| + vstMaxPlugInNameStringLength = 64 | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstPinInfo | |||||
| +{ | |||||
| + char text[vstMaxParameterOrPinLabelLength]; | |||||
| + int32 flags; | |||||
| + int32 configurationType; | |||||
| + char shortText[vstMaxParameterOrPinShortLabelLength]; | |||||
| + char unused[48]; | |||||
| +}; | |||||
| + | |||||
| +enum VstPinInfoFlags | |||||
| +{ | |||||
| + vstPinInfoFlagIsActive = 1, | |||||
| + vstPinInfoFlagIsStereo = 2, | |||||
| + vstPinInfoFlagValid = 4 | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstEvent | |||||
| +{ | |||||
| + int32 type; | |||||
| + int32 size; | |||||
| + int32 sampleOffset; | |||||
| + int32 flags; | |||||
| + char content[16]; | |||||
| +}; | |||||
| + | |||||
| +enum VstEventTypes | |||||
| +{ | |||||
| + vstMidiEventType = 1, | |||||
| + vstSysExEventType = 6 | |||||
| +}; | |||||
| + | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstEventBlock | |||||
| +{ | |||||
| + int32 numberOfEvents; | |||||
| + pointer_sized_int future; | |||||
| + VstEvent* events[2]; | |||||
| +}; | |||||
| + | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstMidiEvent | |||||
| +{ | |||||
| + int32 type; | |||||
| + int32 size; | |||||
| + int32 sampleOffset; | |||||
| + int32 flags; | |||||
| + int32 noteSampleLength; | |||||
| + int32 noteSampleOffset; | |||||
| + char midiData[4]; | |||||
| + char tuning; | |||||
| + char noteVelocityOff; | |||||
| + char future1; | |||||
| + char future2; | |||||
| +}; | |||||
| + | |||||
| +enum VstMidiEventFlags | |||||
| +{ | |||||
| + vstMidiEventIsRealtime = 1 | |||||
| +}; | |||||
| + | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstSysExEvent | |||||
| +{ | |||||
| + int32 type; | |||||
| + int32 size; | |||||
| + int32 offsetSamples; | |||||
| + int32 flags; | |||||
| + int32 sysExDumpSize; | |||||
| + pointer_sized_int future1; | |||||
| + char* sysExDump; | |||||
| + pointer_sized_int future2; | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstTimingInformation | |||||
| +{ | |||||
| + double samplePosition; | |||||
| + double sampleRate; | |||||
| + double systemTimeNanoseconds; | |||||
| + double musicalPosition; | |||||
| + double tempoBPM; | |||||
| + double lastBarPosition; | |||||
| + double loopStartPosition; | |||||
| + double loopEndPosition; | |||||
| + int32 timeSignatureNumerator; | |||||
| + int32 timeSignatureDenominator; | |||||
| + int32 smpteOffset; | |||||
| + int32 smpteRate; | |||||
| + int32 samplesToNearestClock; | |||||
| + int32 flags; | |||||
| +}; | |||||
| + | |||||
| +enum VstTimingInformationFlags | |||||
| +{ | |||||
| + vstTimingInfoFlagTransportChanged = 1, | |||||
| + vstTimingInfoFlagCurrentlyPlaying = 2, | |||||
| + vstTimingInfoFlagLoopActive = 4, | |||||
| + vstTimingInfoFlagCurrentlyRecording = 8, | |||||
| + vstTimingInfoFlagAutomationWriteModeActive = 64, | |||||
| + vstTimingInfoFlagAutomationReadModeActive = 128, | |||||
| + vstTimingInfoFlagNanosecondsValid = 256, | |||||
| + vstTimingInfoFlagMusicalPositionValid = 512, | |||||
| + vstTimingInfoFlagTempoValid = 1024, | |||||
| + vstTimingInfoFlagLastBarPositionValid = 2048, | |||||
| + vstTimingInfoFlagLoopPositionValid = 4096, | |||||
| + vstTimingInfoFlagTimeSignatureValid = 8192, | |||||
| + vstTimingInfoFlagSmpteValid = 16384, | |||||
| + vstTimingInfoFlagNearestClockValid = 32768 | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +enum VstSmpteRates | |||||
| +{ | |||||
| + vstSmpteRateFps24, | |||||
| + vstSmpteRateFps25, | |||||
| + vstSmpteRateFps2997, | |||||
| + vstSmpteRateFps30, | |||||
| + vstSmpteRateFps2997drop, | |||||
| + vstSmpteRateFps30drop, | |||||
| + | |||||
| + vstSmpteRate16mmFilm, | |||||
| + vstSmpteRate35mmFilm, | |||||
| + | |||||
| + vstSmpteRateFps239 = vstSmpteRate35mmFilm + 3, | |||||
| + vstSmpteRateFps249 , | |||||
| + vstSmpteRateFps599, | |||||
| + vstSmpteRateFps60 | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstIndividualSpeakerInfo | |||||
| +{ | |||||
| + float azimuthalAngle; | |||||
| + float elevationAngle; | |||||
| + float radius; | |||||
| + float reserved; | |||||
| + char label[vstMaxNameLength]; | |||||
| + int32 type; | |||||
| + char unused[28]; | |||||
| +}; | |||||
| + | |||||
| +enum VstIndividualSpeakerType | |||||
| +{ | |||||
| + vstIndividualSpeakerTypeUndefined = 0x7fffffff, | |||||
| + vstIndividualSpeakerTypeMono = 0, | |||||
| + vstIndividualSpeakerTypeLeft, | |||||
| + vstIndividualSpeakerTypeRight, | |||||
| + vstIndividualSpeakerTypeCentre, | |||||
| + vstIndividualSpeakerTypeLFE, | |||||
| + vstIndividualSpeakerTypeLeftSurround, | |||||
| + vstIndividualSpeakerTypeRightSurround, | |||||
| + vstIndividualSpeakerTypeLeftCentre, | |||||
| + vstIndividualSpeakerTypeRightCentre, | |||||
| + vstIndividualSpeakerTypeSurround, | |||||
| + vstIndividualSpeakerTypeCentreSurround = vstIndividualSpeakerTypeSurround, | |||||
| + vstIndividualSpeakerTypeLeftRearSurround, | |||||
| + vstIndividualSpeakerTypeRightRearSurround, | |||||
| + vstIndividualSpeakerTypeTopMiddle, | |||||
| + vstIndividualSpeakerTypeTopFrontLeft, | |||||
| + vstIndividualSpeakerTypeTopFrontCentre, | |||||
| + vstIndividualSpeakerTypeTopFrontRight, | |||||
| + vstIndividualSpeakerTypeTopRearLeft, | |||||
| + vstIndividualSpeakerTypeTopRearCentre, | |||||
| + vstIndividualSpeakerTypeTopRearRight, | |||||
| + vstIndividualSpeakerTypeLFE2 | |||||
| +}; | |||||
| + | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct VstSpeakerConfiguration | |||||
| +{ | |||||
| + int32 type; | |||||
| + int32 numberOfChannels; | |||||
| + VstIndividualSpeakerInfo speakers[8]; | |||||
| +}; | |||||
| + | |||||
| +enum VstSpeakerConfigurationType | |||||
| +{ | |||||
| + vstSpeakerConfigTypeUser = -2, | |||||
| + vstSpeakerConfigTypeEmpty = -1, | |||||
| + vstSpeakerConfigTypeMono = 0, | |||||
| + vstSpeakerConfigTypeLR, | |||||
| + vstSpeakerConfigTypeLsRs, | |||||
| + vstSpeakerConfigTypeLcRc, | |||||
| + vstSpeakerConfigTypeSlSr, | |||||
| + vstSpeakerConfigTypeCLfe, | |||||
| + vstSpeakerConfigTypeLRC, | |||||
| + vstSpeakerConfigTypeLRS, | |||||
| + vstSpeakerConfigTypeLRCLfe, | |||||
| + vstSpeakerConfigTypeLRLfeS, | |||||
| + vstSpeakerConfigTypeLRCS, | |||||
| + vstSpeakerConfigTypeLRLsRs, | |||||
| + vstSpeakerConfigTypeLRCLfeS, | |||||
| + vstSpeakerConfigTypeLRLfeLsRs, | |||||
| + vstSpeakerConfigTypeLRCLsRs, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRs, | |||||
| + vstSpeakerConfigTypeLRCLsRsCs, | |||||
| + vstSpeakerConfigTypeLRLsRsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsCs, | |||||
| + vstSpeakerConfigTypeLRLfeLsRsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLsRsLcRc, | |||||
| + vstSpeakerConfigTypeLRCLsRsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsLcRc, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLsRsLcRcCs, | |||||
| + vstSpeakerConfigTypeLRCLsRsCsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsLcRcCs, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsCsSlSr, | |||||
| + vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2 | |||||
| +}; | |||||
| + | |||||
| +#if JUCE_BIG_ENDIAN | |||||
| + #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (a | (((uint32) b) << 8) | (((uint32) c) << 16) | (((uint32) d) << 24)) | |||||
| +#else | |||||
| + #define JUCE_MULTICHAR_CONSTANT(a, b, c, d) (d | (((uint32) c) << 8) | (((uint32) b) << 16) | (((uint32) a) << 24)) | |||||
| +#endif | |||||
| + | |||||
| +enum PresonusExtensionConstants | |||||
| +{ | |||||
| + presonusVendorID = JUCE_MULTICHAR_CONSTANT ('P', 'r', 'e', 'S'), | |||||
| + presonusSetContentScaleFactor = JUCE_MULTICHAR_CONSTANT ('A', 'e', 'C', 's') | |||||
| +}; | |||||
| + | |||||
| +//============================================================================== | |||||
| +/** Structure used for VSTs | |||||
| + | |||||
| + @tags{Audio} | |||||
| +*/ | |||||
| +struct vst2FxBank | |||||
| +{ | |||||
| + int32 magic1; | |||||
| + int32 size; | |||||
| + int32 magic2; | |||||
| + int32 version1; | |||||
| + int32 fxID; | |||||
| + int32 version2; | |||||
| + int32 elements; | |||||
| + int32 current; | |||||
| + char shouldBeZero[124]; | |||||
| + int32 chunkSize; | |||||
| + char chunk[1]; | |||||
| +}; | |||||
| + | |||||
| +#if JUCE_MSVC | |||||
| + #pragma pack(pop) | |||||
| +#elif JUCE_MAC || JUCE_IOS | |||||
| + #pragma options align=reset | |||||
| +#else | |||||
| + #pragma pack(pop) | |||||
| +#endif | |||||
| + | |||||
| +#endif // JUCE_VSTINTERFACE_H_INCLUDED | |||||
| @@ -1,100 +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 3fcb6f54a..dd044d108 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) | |||||
| #define PRAGMA_ALIGN_SUPPORTED 1 | |||||
| #endif | |||||
| -#if ! JUCE_MSVC | |||||
| +#if ! JUCE_WINDOWS | |||||
| #define __cdecl | |||||
| #endif | |||||
| diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||||
| index f3a3ba2f8..7336fff7d 100644 | |||||
| --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||||
| +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp | |||||
| @@ -57,9 +57,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4355) | |||||
| #ifndef WM_APPCOMMAND | |||||
| #define WM_APPCOMMAND 0x0319 | |||||
| #endif | |||||
| - | |||||
| - extern "C" void _fpreset(); | |||||
| - extern "C" void _clearfp(); | |||||
| #elif ! JUCE_WINDOWS | |||||
| static void _fpreset() {} | |||||
| static void _clearfp() {} | |||||
| diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp | |||||
| index 6755bba64..3ebe35f2b 100644 | |||||
| --- a/modules/juce_gui_basics/juce_gui_basics.cpp | |||||
| +++ b/modules/juce_gui_basics/juce_gui_basics.cpp | |||||
| @@ -67,10 +67,13 @@ | |||||
| #include <vfw.h> | |||||
| #include <commdlg.h> | |||||
| #include <commctrl.h> | |||||
| - #include <UIAutomation.h> | |||||
| #include <sapi.h> | |||||
| #include <Dxgi.h> | |||||
| + #if JUCE_MSVC | |||||
| + #include <UIAutomation.h> | |||||
| + #endif | |||||
| + | |||||
| #if JUCE_WEB_BROWSER | |||||
| #include <exdisp.h> | |||||
| #include <exdispid.h> | |||||
| @@ -287,13 +290,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 cb247722a..7a012c39c 100644 | |||||
| --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||||
| +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp | |||||
| @@ -1667,8 +1667,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); | |||||
| @@ -4246,6 +4248,7 @@ private: | |||||
| case WM_GETDLGCODE: | |||||
| return DLGC_WANTALLKEYS; | |||||
| + #if JUCE_MSVC | |||||
| case WM_GETOBJECT: | |||||
| { | |||||
| if (static_cast<long> (lParam) == WindowsAccessibility::getUiaRootObjectId()) | |||||
| @@ -4264,6 +4267,7 @@ private: | |||||
| break; | |||||
| } | |||||
| + #endif | |||||
| default: | |||||
| break; | |||||
| } | |||||
| @@ -1,30 +0,0 @@ | |||||
| 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,13 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp | |||||
| index cec1528a4..2ad49260d 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 @@ | |||||
| #if JUCE_PLUGINHOST_LADSPA && (JUCE_LINUX || JUCE_BSD) | |||||
| -#include <ladspa.h> | |||||
| +#include "ladspa.h" | |||||
| namespace juce | |||||
| { | |||||
| @@ -1,127 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp | |||||
| index 3b88ccee0..cb6f1ce60 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 | |||||
| AudioProcessorEditor::~AudioProcessorEditor() | |||||
| { | |||||
| - splashScreen.deleteAndZero(); | |||||
| - | |||||
| // 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) { | |||||
| void AudioProcessorEditor::initialise() | |||||
| { | |||||
| - /* | |||||
| - ========================================================================== | |||||
| - In accordance with the terms of the JUCE 7 End-Use License Agreement, the | |||||
| - JUCE Code in SECTION A cannot be removed, changed or otherwise rendered | |||||
| - ineffective unless you have a JUCE Indie or Pro license, or are using | |||||
| - JUCE under the GPL v3 license. | |||||
| - | |||||
| - End User License Agreement: www.juce.com/juce-7-licence | |||||
| - ========================================================================== | |||||
| - */ | |||||
| - | |||||
| - // BEGIN SECTION A | |||||
| - | |||||
| - splashScreen = new JUCESplashScreen (*this); | |||||
| - | |||||
| - // END SECTION A | |||||
| - | |||||
| 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 df43af642..af1805ac3 100644 | |||||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h | |||||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h | |||||
| @@ -235,7 +235,6 @@ private: | |||||
| ComponentBoundsConstrainer defaultConstrainer; | |||||
| 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 3ebe35f2b..944d25b1c 100644 | |||||
| --- a/modules/juce_gui_basics/juce_gui_basics.cpp | |||||
| +++ b/modules/juce_gui_basics/juce_gui_basics.cpp | |||||
| @@ -252,7 +252,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 40b367eb3..3f7368dd1 100644 | |||||
| --- a/modules/juce_gui_basics/juce_gui_basics.h | |||||
| +++ b/modules/juce_gui_basics/juce_gui_basics.h | |||||
| @@ -265,7 +265,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_MessageBoxOptions.h" | |||||
| diff --git a/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp b/modules/juce_gui_basics/windows/juce_ResizableWindow.cpp | |||||
| index 8b711b504..db28b93a9 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 | |||||
| ResizableWindow::~ResizableWindow() | |||||
| { | |||||
| - splashScreen.deleteAndZero(); | |||||
| - | |||||
| // 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() | |||||
| void ResizableWindow::initialise (const bool shouldAddToDesktop) | |||||
| { | |||||
| - /* | |||||
| - ========================================================================== | |||||
| - | |||||
| - In accordance with the terms of the JUCE 7 End-Use License Agreement, the | |||||
| - JUCE Code in SECTION A cannot be removed, changed or otherwise rendered | |||||
| - ineffective unless you have a JUCE Indie or Pro license, or are using | |||||
| - JUCE under the GPL v3 license. | |||||
| - | |||||
| - End User License Agreement: www.juce.com/juce-7-licence | |||||
| - | |||||
| - ========================================================================== | |||||
| - */ | |||||
| - | |||||
| - // BEGIN SECTION A | |||||
| - | |||||
| - #if ! JucePlugin_Build_Standalone | |||||
| - splashScreen = new JUCESplashScreen (*this); | |||||
| - #endif | |||||
| - | |||||
| - // END SECTION A | |||||
| - | |||||
| defaultConstrainer.setMinimumOnscreenAmounts (0x10000, 16, 24, 16); | |||||
| 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 b381b73fb..d6469c35d 100644 | |||||
| --- a/modules/juce_gui_basics/windows/juce_ResizableWindow.h | |||||
| +++ b/modules/juce_gui_basics/windows/juce_ResizableWindow.h | |||||
| @@ -391,7 +391,7 @@ protected: | |||||
| private: | |||||
| //============================================================================== | |||||
| - Component::SafePointer<Component> contentComponent, splashScreen; | |||||
| + Component::SafePointer<Component> contentComponent; | |||||
| bool ownsContentComponent = false, resizeToFitContent = false, fullscreen = false, canDrag = true, dragStarted = false; | |||||
| ComponentDragger dragger; | |||||
| Rectangle<int> lastNonFullScreenPos; | |||||
| @@ -1,46 +0,0 @@ | |||||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| index 700e191e9..b0df41553 100644 | |||||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| @@ -617,12 +617,39 @@ File juce_getExecutableFile() | |||||
| auto 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 | |||||
| + if (File::isAbsolutePath (filename)) | |||||
| + return filename; | |||||
| + | |||||
| + // if the filename is relative construct from CWD | |||||
| + if (filename[0] == '.') | |||||
| + return File::getCurrentWorkingDirectory().getChildFile (filename).getFullPathName(); | |||||
| + | |||||
| + // filename is abstract, look up in PATH | |||||
| + if (const char* const envpath = ::getenv ("PATH")) | |||||
| + { | |||||
| + StringArray paths (StringArray::fromTokens (envpath, ":", "")); | |||||
| + | |||||
| + for (int i=paths.size(); --i>=0;) | |||||
| + { | |||||
| + const File filepath (File (paths[i]).getChildFile (filename)); | |||||
| + | |||||
| + if (filepath.existsAsFile()) | |||||
| + return filepath.getFullPathName(); | |||||
| + } | |||||
| + } | |||||
| + | |||||
| + // if we reach this, we failed to find ourselves... | |||||
| + jassertfalse; | |||||
| + return filename; | |||||
| } | |||||
| }; | |||||
| static String filename = DLAddrReader::getFilename(); | |||||
| - return File::getCurrentWorkingDirectory().getChildFile (filename); | |||||
| + return filename; | |||||
| } | |||||
| //============================================================================== | |||||
| @@ -1,118 +0,0 @@ | |||||
| diff --git a/modules/juce_core/native/juce_linux_Files.cpp b/modules/juce_core/native/juce_linux_Files.cpp | |||||
| index f661e4ab4..dce73fcc2 100644 | |||||
| --- a/modules/juce_core/native/juce_linux_Files.cpp | |||||
| +++ b/modules/juce_core/native/juce_linux_Files.cpp | |||||
| @@ -223,15 +223,21 @@ bool Process::openDocument (const String& fileName, const String& parameters) | |||||
| const char* const argv[] = { "/bin/sh", "-c", cmdString.toUTF8(), nullptr }; | |||||
| +#if JUCE_USE_VFORK | |||||
| + const auto cpid = vfork(); | |||||
| +#else | |||||
| const auto cpid = fork(); | |||||
| +#endif | |||||
| if (cpid == 0) | |||||
| { | |||||
| +#if ! JUCE_USE_VFORK | |||||
| setsid(); | |||||
| +#endif | |||||
| // Child process | |||||
| - execve (argv[0], (char**) argv, environ); | |||||
| - exit (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 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 | |||||
| #else | |||||
| static bool launchExecutable (const String& pathAndArguments) | |||||
| { | |||||
| + const char* const argv[4] = { "/bin/sh", "-c", pathAndArguments.toUTF8(), nullptr }; | |||||
| + | |||||
| +#if JUCE_USE_VFORK | |||||
| + const auto cpid = vfork(); | |||||
| +#else | |||||
| auto cpid = fork(); | |||||
| +#endif | |||||
| if (cpid == 0) | |||||
| { | |||||
| - const char* const argv[4] = { "/bin/sh", "-c", pathAndArguments.toUTF8(), nullptr }; | |||||
| - | |||||
| // Child process | |||||
| - if (execve (argv[0], (char**) argv, nullptr) < 0) | |||||
| - exit (0); | |||||
| - } | |||||
| - else | |||||
| - { | |||||
| - if (cpid < 0) | |||||
| - return false; | |||||
| + if (execvp (argv[0], (char**) argv) < 0) | |||||
| + _exit (0); | |||||
| } | |||||
| - 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 b0df41553..83c359154 100644 | |||||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| @@ -1131,7 +1131,18 @@ public: | |||||
| if (pipe (pipeHandles) == 0) | |||||
| { | |||||
| - auto result = fork(); | |||||
| + Array<char*> argv; | |||||
| + for (auto& arg : arguments) | |||||
| + if (arg.isNotEmpty()) | |||||
| + argv.add (const_cast<char*> (arg.toRawUTF8())); | |||||
| + | |||||
| + argv.add (nullptr); | |||||
| + | |||||
| +#if JUCE_USE_VFORK | |||||
| + const pid_t result = vfork(); | |||||
| +#else | |||||
| + const pid_t result = fork(); | |||||
| +#endif | |||||
| if (result < 0) | |||||
| { | |||||
| @@ -1140,6 +1151,7 @@ public: | |||||
| } | |||||
| else if (result == 0) | |||||
| { | |||||
| +#if ! JUCE_USE_VFORK | |||||
| // we're the child process.. | |||||
| close (pipeHandles[0]); // close the read handle | |||||
| @@ -1154,17 +1166,10 @@ public: | |||||
| dup2 (open ("/dev/null", O_WRONLY), STDERR_FILENO); | |||||
| close (pipeHandles[1]); | |||||
| +#endif | |||||
| - Array<char*> argv; | |||||
| - | |||||
| - for (auto& arg : arguments) | |||||
| - if (arg.isNotEmpty()) | |||||
| - argv.add (const_cast<char*> (arg.toRawUTF8())); | |||||
| - | |||||
| - argv.add (nullptr); | |||||
| - | |||||
| - execvp (exe.toRawUTF8(), argv.getRawDataPointer()); | |||||
| - _exit (-1); | |||||
| + if (execvp (exe.toRawUTF8(), argv.getRawDataPointer()) < 0) | |||||
| + _exit (-1); | |||||
| } | |||||
| else | |||||
| { | |||||
| @@ -1,61 +0,0 @@ | |||||
| diff --git a/modules/juce_core/native/juce_posix_SharedCode.h b/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| index 83c359154..efe1bda73 100644 | |||||
| --- a/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| +++ b/modules/juce_core/native/juce_posix_SharedCode.h | |||||
| @@ -1266,6 +1266,11 @@ public: | |||||
| return 0; | |||||
| } | |||||
| + int getPID() const noexcept | |||||
| + { | |||||
| + return childPID; | |||||
| + } | |||||
| + | |||||
| int childPID = 0; | |||||
| 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 8d15042fe..867e6fd2f 100644 | |||||
| --- a/modules/juce_core/native/juce_win32_Threads.cpp | |||||
| +++ b/modules/juce_core/native/juce_win32_Threads.cpp | |||||
| @@ -489,6 +489,11 @@ public: | |||||
| return (uint32) exitCode; | |||||
| } | |||||
| + int getPID() const noexcept | |||||
| + { | |||||
| + return 0; | |||||
| + } | |||||
| + | |||||
| bool ok; | |||||
| private: | |||||
| diff --git a/modules/juce_core/threads/juce_ChildProcess.cpp b/modules/juce_core/threads/juce_ChildProcess.cpp | |||||
| index 1e559b1c9..40ad651f0 100644 | |||||
| --- a/modules/juce_core/threads/juce_ChildProcess.cpp | |||||
| +++ b/modules/juce_core/threads/juce_ChildProcess.cpp | |||||
| @@ -81,6 +81,11 @@ String ChildProcess::readAllProcessOutput() | |||||
| } | |||||
| +int ChildProcess::getPID() const noexcept | |||||
| +{ | |||||
| + return activeProcess != nullptr ? activeProcess->getPID() : 0; | |||||
| +} | |||||
| + | |||||
| //============================================================================== | |||||
| //============================================================================== | |||||
| #if JUCE_UNIT_TESTS | |||||
| diff --git a/modules/juce_core/threads/juce_ChildProcess.h b/modules/juce_core/threads/juce_ChildProcess.h | |||||
| index 3c5e83bba..f6076fb82 100644 | |||||
| --- a/modules/juce_core/threads/juce_ChildProcess.h | |||||
| +++ b/modules/juce_core/threads/juce_ChildProcess.h | |||||
| @@ -101,6 +101,8 @@ public: | |||||
| */ | |||||
| bool kill(); | |||||
| + int getPID() const noexcept; | |||||
| + | |||||
| private: | |||||
| //============================================================================== | |||||
| class ActiveProcess; | |||||
| @@ -1,39 +0,0 @@ | |||||
| diff --git a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp | |||||
| index c12bc5f67..df8132b69 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 @@ | |||||
| namespace juce | |||||
| { | |||||
| +#if JUCE_MODAL_LOOPS_PERMITTED | |||||
| static bool exeIsAvailable (String executable) | |||||
| { | |||||
| ChildProcess child; | |||||
| @@ -255,10 +256,11 @@ private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Native) | |||||
| }; | |||||
| +#endif | |||||
| bool FileChooser::isPlatformDialogAvailable() | |||||
| { | |||||
| - #if JUCE_DISABLE_NATIVE_FILECHOOSERS | |||||
| + #if JUCE_DISABLE_NATIVE_FILECHOOSERS || ! JUCE_MODAL_LOOPS_PERMITTED | |||||
| return false; | |||||
| #else | |||||
| static bool canUseNativeBox = exeIsAvailable ("zenity") || exeIsAvailable ("kdialog"); | |||||
| @@ -268,7 +270,13 @@ bool FileChooser::isPlatformDialogAvailable() | |||||
| std::shared_ptr<FileChooser::Pimpl> FileChooser::showPlatformDialog (FileChooser& owner, int flags, FilePreviewComponent*) | |||||
| { | |||||
| +#if JUCE_MODAL_LOOPS_PERMITTED | |||||
| return std::make_shared<Native> (owner, flags); | |||||
| +#else | |||||
| + ignoreUnused (owner); | |||||
| + ignoreUnused (flags); | |||||
| + return nullptr; | |||||
| +#endif | |||||
| } | |||||
| } // namespace juce | |||||
| @@ -1,109 +0,0 @@ | |||||
| diff --git a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||||
| index 2f5338f1c..789e6dc20 100644 | |||||
| --- a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||||
| +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp | |||||
| @@ -921,7 +921,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 b024f9dde..c866ff208 100644 | |||||
| --- a/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||||
| +++ b/modules/juce_gui_basics/windows/juce_DialogWindow.cpp | |||||
| @@ -134,7 +134,8 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||||
| Colour backgroundColour, | |||||
| const bool escapeKeyTriggersCloseButton, | |||||
| const bool resizable, | |||||
| - const bool useBottomRightCornerResizer) | |||||
| + const bool useBottomRightCornerResizer, | |||||
| + const bool useNativeTitleBar) | |||||
| { | |||||
| LaunchOptions o; | |||||
| o.dialogTitle = dialogTitle; | |||||
| @@ -142,9 +143,9 @@ void DialogWindow::showDialog (const String& dialogTitle, | |||||
| o.componentToCentreAround = componentToCentreAround; | |||||
| o.dialogBackgroundColour = backgroundColour; | |||||
| o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||||
| - o.useNativeTitleBar = false; | |||||
| o.resizable = resizable; | |||||
| o.useBottomRightCornerResizer = useBottomRightCornerResizer; | |||||
| + o.useNativeTitleBar = useNativeTitleBar; | |||||
| o.launchAsync(); | |||||
| } | |||||
| @@ -156,7 +157,8 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||||
| Colour backgroundColour, | |||||
| const bool escapeKeyTriggersCloseButton, | |||||
| const bool resizable, | |||||
| - const bool useBottomRightCornerResizer) | |||||
| + const bool useBottomRightCornerResizer, | |||||
| + const bool useNativeTitleBar) | |||||
| { | |||||
| LaunchOptions o; | |||||
| o.dialogTitle = dialogTitle; | |||||
| @@ -164,9 +166,9 @@ int DialogWindow::showModalDialog (const String& dialogTitle, | |||||
| o.componentToCentreAround = componentToCentreAround; | |||||
| o.dialogBackgroundColour = backgroundColour; | |||||
| o.escapeKeyTriggersCloseButton = escapeKeyTriggersCloseButton; | |||||
| - o.useNativeTitleBar = false; | |||||
| o.resizable = resizable; | |||||
| o.useBottomRightCornerResizer = useBottomRightCornerResizer; | |||||
| + o.useNativeTitleBar = useNativeTitleBar; | |||||
| return o.runModal(); | |||||
| } | |||||
| diff --git a/modules/juce_gui_basics/windows/juce_DialogWindow.h b/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||||
| index 484a08384..ad94a08ee 100644 | |||||
| --- a/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||||
| +++ b/modules/juce_gui_basics/windows/juce_DialogWindow.h | |||||
| @@ -199,7 +199,8 @@ public: | |||||
| Colour backgroundColour, | |||||
| bool escapeKeyTriggersCloseButton, | |||||
| bool shouldBeResizable = false, | |||||
| - bool useBottomRightCornerResizer = false); | |||||
| + bool useBottomRightCornerResizer = false, | |||||
| + bool useNativeTitleBar = true); | |||||
| #if JUCE_MODAL_LOOPS_PERMITTED | |||||
| /** Easy way of quickly showing a dialog box containing a given component. | |||||
| @@ -245,7 +246,8 @@ public: | |||||
| Colour backgroundColour, | |||||
| bool escapeKeyTriggersCloseButton, | |||||
| bool shouldBeResizable = false, | |||||
| - bool useBottomRightCornerResizer = false); | |||||
| + bool useBottomRightCornerResizer = 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 2eb400a70..4cd5aefe0 100644 | |||||
| --- a/modules/juce_gui_basics/windows/juce_TopLevelWindow.h | |||||
| +++ b/modules/juce_gui_basics/windows/juce_TopLevelWindow.h | |||||
| @@ -154,7 +154,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 b90412cf2..b6c92e9fd 100644 | |||||
| --- a/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp | |||||
| +++ b/modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp | |||||
| @@ -92,7 +92,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,23 +0,0 @@ | |||||
| 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 da1a27308..3291db8a3 100644 | |||||
| --- a/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||||
| +++ b/modules/juce_gui_basics/native/x11/juce_linux_XWindowSystem.cpp | |||||
| @@ -2979,10 +2979,14 @@ void XWindowSystem::setWindowType (::Window windowH, int styleFlags) const | |||||
| if (atoms.windowType != None) | |||||
| { | |||||
| - auto hint = (styleFlags & ComponentPeer::windowIsTemporary) != 0 | |||||
| - || ((styleFlags & ComponentPeer::windowHasDropShadow) == 0 && Desktop::canUseSemiTransparentWindows()) | |||||
| - ? XWindowSystemUtilities::Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_COMBO") | |||||
| - : XWindowSystemUtilities::Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_NORMAL"); | |||||
| + Atom hint = None; | |||||
| + | |||||
| + if (styleFlags & ComponentPeer::windowIsTemporary) | |||||
| + hint = XWindowSystemUtilities::Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_TOOLTIP"); | |||||
| + else if ((styleFlags & ComponentPeer::windowHasDropShadow) == 0 && Desktop::canUseSemiTransparentWindows()) | |||||
| + hint = XWindowSystemUtilities::Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_COMBO"); | |||||
| + else | |||||
| + hint = XWindowSystemUtilities::Atoms::getIfExists (display, "_NET_WM_WINDOW_TYPE_NORMAL"); | |||||
| if (hint != None) | |||||
| xchangeProperty (windowH, atoms.windowType, XA_ATOM, 32, &hint, 1); | |||||
| @@ -1,14 +0,0 @@ | |||||
| diff --git a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||||
| index dcf0ff8f6..f497fef96 100644 | |||||
| --- a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||||
| +++ b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h | |||||
| @@ -63,7 +63,9 @@ typedef AudioComponentInstance AudioUnit; | |||||
| } | |||||
| @endcode | |||||
| */ | |||||
| +#ifndef _VESTIGE_H | |||||
| struct AEffect; | |||||
| +#endif | |||||
| //============================================================================== | |||||
| namespace juce | |||||
| @@ -1,14 +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 dd044d108..4da23cdf5 100644 | |||||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||||
| @@ -252,9 +252,6 @@ public: | |||||
| // You must at least have some channels | |||||
| jassert (processor->isMidiEffect() || (maxNumInChannels > 0 || maxNumOutChannels > 0)); | |||||
| - if (processor->isMidiEffect()) | |||||
| - maxNumInChannels = maxNumOutChannels = 2; | |||||
| - | |||||
| #ifdef JucePlugin_PreferredChannelConfigurations | |||||
| processor->setPlayConfigDetails (maxNumInChannels, maxNumOutChannels, 44100.0, 1024); | |||||
| #endif | |||||
| @@ -1,13 +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 4da23cdf5..914fd6b44 100644 | |||||
| --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||||
| +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp | |||||
| @@ -1824,7 +1824,7 @@ private: | |||||
| pointer_sized_int handleGetPlugInName (VstOpCodeArguments args) | |||||
| { | |||||
| - String (JucePlugin_Name).copyToUTF8 ((char*) args.ptr, 64 + 1); | |||||
| + String (processor->getName()).copyToUTF8 ((char*) args.ptr, 64 + 1); | |||||
| return 1; | |||||
| } | |||||
| @@ -1,38 +0,0 @@ | |||||
| diff --git a/extras/Projucer/Builds/LinuxMakefile/Makefile b/extras/Projucer/Builds/LinuxMakefile/Makefile | |||||
| index 6f21d6bc3..30157aa7a 100644 | |||||
| --- a/extras/Projucer/Builds/LinuxMakefile/Makefile | |||||
| +++ b/extras/Projucer/Builds/LinuxMakefile/Makefile | |||||
| @@ -39,7 +39,7 @@ ifeq ($(CONFIG),Debug) | |||||
| TARGET_ARCH := | |||||
| endif | |||||
| - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70001" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=7.0.1" "-DJUCE_APP_VERSION_HEX=0x70001" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||||
| + JUCE_CPPFLAGS := $(DEPFLAGS) "-DJUCER_ENABLE_GPL_MODE=1" "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70001" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=0" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=7.0.1" "-DJUCE_APP_VERSION_HEX=0x70001" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||||
| JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" | |||||
| JUCE_TARGET_APP := Projucer | |||||
| @@ -60,7 +60,7 @@ ifeq ($(CONFIG),Release) | |||||
| TARGET_ARCH := | |||||
| endif | |||||
| - JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70001" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=7.0.1" "-DJUCE_APP_VERSION_HEX=0x70001" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||||
| + JUCE_CPPFLAGS := $(DEPFLAGS) "-DJUCER_ENABLE_GPL_MODE=1" "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x70001" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=0" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=7.0.1" "-DJUCE_APP_VERSION_HEX=0x70001" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||||
| JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" | |||||
| JUCE_TARGET_APP := Projucer | |||||
| diff --git a/extras/Projucer/CMakeLists.txt b/extras/Projucer/CMakeLists.txt | |||||
| index 6e76a0076..78912c4c0 100644 | |||||
| --- a/extras/Projucer/CMakeLists.txt | |||||
| +++ b/extras/Projucer/CMakeLists.txt | |||||
| @@ -90,8 +90,9 @@ target_compile_definitions(Projucer PRIVATE | |||||
| JUCE_LOAD_CURL_SYMBOLS_LAZILY=1 | |||||
| JUCE_LOG_ASSERTIONS=1 | |||||
| JUCE_STRICT_REFCOUNTEDPOINTER=1 | |||||
| - JUCE_USE_CURL=1 | |||||
| - JUCE_WEB_BROWSER=0) | |||||
| + JUCE_USE_CURL=0 | |||||
| + JUCE_WEB_BROWSER=0 | |||||
| + JUCER_ENABLE_GPL_MODE=1) | |||||
| juce_add_binary_data(ProjucerData SOURCES | |||||
| Source/BinaryData/Icons/background_logo.svg | |||||
| @@ -1,20 +0,0 @@ | |||||
| diff --git a/modules/juce_core/juce_core.cpp b/modules/juce_core/juce_core.cpp | |||||
| index 067a189ab..f6fbfce2f 100644 | |||||
| --- a/modules/juce_core/juce_core.cpp | |||||
| +++ b/modules/juce_core/juce_core.cpp | |||||
| @@ -236,6 +236,7 @@ | |||||
| //============================================================================== | |||||
| #elif JUCE_ANDROID | |||||
| #include "native/juce_linux_CommonFile.cpp" | |||||
| + #include "native/juce_android_AndroidDocument.cpp" | |||||
| #include "native/juce_android_JNIHelpers.cpp" | |||||
| #include "native/juce_android_Files.cpp" | |||||
| #include "native/juce_android_Misc.cpp" | |||||
| @@ -251,7 +252,6 @@ | |||||
| #include "files/juce_common_MimeTypes.h" | |||||
| #include "files/juce_common_MimeTypes.cpp" | |||||
| -#include "native/juce_android_AndroidDocument.cpp" | |||||
| #include "threads/juce_HighResolutionTimer.cpp" | |||||
| #include "threads/juce_WaitableEvent.cpp" | |||||
| #include "network/juce_URL.cpp" | |||||
| @@ -1,434 +0,0 @@ | |||||
| 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 dc2e6cc83..425f7ac23 100644 | |||||
| --- a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | |||||
| +++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp | |||||
| @@ -39,12 +39,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> | |||||
| @@ -693,6 +698,7 @@ public: | |||||
| return LV2_STATE_SUCCESS; | |||||
| } | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| std::unique_ptr<AudioProcessorEditor> createEditor() | |||||
| { | |||||
| return std::unique_ptr<AudioProcessorEditor> (processor->createEditorIfNeeded()); | |||||
| @@ -702,6 +708,7 @@ public: | |||||
| { | |||||
| processor->editorBeingDeleted (editor); | |||||
| } | |||||
| + #endif | |||||
| static std::unique_ptr<AudioProcessor> createProcessorInstance() | |||||
| { | |||||
| @@ -759,7 +766,7 @@ private: | |||||
| ScopedJuceInitialiser_GUI scopedJuceInitialiser; | |||||
| - #if JUCE_LINUX || JUCE_BSD | |||||
| + #if (JUCE_LINUX || JUCE_BSD) && ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| SharedResourcePointer<MessageThread> messageThread; | |||||
| #endif | |||||
| @@ -842,6 +849,7 @@ private: | |||||
| "\tlv2:binary <" << URL::addEscapeChars (libraryPath.getFileName(), false) << "> ;\n" | |||||
| "\trdfs:seeAlso <dsp.ttl> .\n"; | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| if (proc.hasEditor()) | |||||
| { | |||||
| #if JUCE_MAC | |||||
| @@ -861,6 +869,7 @@ private: | |||||
| "\trdfs:seeAlso <ui.ttl> .\n" | |||||
| "\n"; | |||||
| } | |||||
| + #endif | |||||
| for (auto i = 0, end = proc.getNumPrograms(); i < end; ++i) | |||||
| { | |||||
| @@ -1088,8 +1097,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, ".", ""); | |||||
| @@ -1293,6 +1304,7 @@ private: | |||||
| static Result writeUiTtl (AudioProcessor& proc, const File& libraryPath) | |||||
| { | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| if (! proc.hasEditor()) | |||||
| return Result::ok(); | |||||
| @@ -1331,6 +1343,7 @@ private: | |||||
| "\topts:supportedOption\n" | |||||
| "\t\tui:scaleFactor ,\n" | |||||
| "\t\tparam:sampleRate .\n"; | |||||
| + #endif | |||||
| return Result::ok(); | |||||
| } | |||||
| @@ -1459,6 +1472,7 @@ static Optional<float> findScaleFactor (const LV2_URID_Map* symap, const LV2_Opt | |||||
| return parser.parseNumericOption<float> (scaleFactorOption); | |||||
| } | |||||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| class LV2UIInstance : private Component, | |||||
| private ComponentListener | |||||
| { | |||||
| @@ -1771,6 +1785,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 df3a1e8a9..e0b75a685 100644 | |||||
| --- a/modules/juce_audio_processors/juce_audio_processors.cpp | |||||
| +++ b/modules/juce_audio_processors/juce_audio_processors.cpp | |||||
| @@ -34,7 +34,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 | |||||
| @@ -42,7 +44,7 @@ | |||||
| #include <juce_gui_extra/juce_gui_extra.h> | |||||
| //============================================================================== | |||||
| -#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> | |||||
| @@ -196,9 +198,11 @@ private: | |||||
| #include "format_types/juce_LegacyAudioParameter.cpp" | |||||
| #include "processors/juce_AudioProcessor.cpp" | |||||
| #include "processors/juce_AudioPluginInstance.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_ARACommon.cpp" | |||||
| #include "format_types/juce_LADSPAPluginFormat.cpp" | |||||
| @@ -206,9 +210,11 @@ private: | |||||
| #include "format_types/juce_VST3PluginFormat.cpp" | |||||
| #include "format_types/juce_AudioUnitPluginFormat.mm" | |||||
| #include "format_types/juce_ARAHosting.cpp" | |||||
| -#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" | |||||
| @@ -216,7 +222,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" | |||||
| @@ -233,3 +241,8 @@ private: | |||||
| #include "format_types/juce_LV2PluginFormat_test.cpp" | |||||
| #endif | |||||
| #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 1664b90ae..389caf794 100644 | |||||
| --- a/modules/juce_audio_processors/juce_audio_processors.h | |||||
| +++ b/modules/juce_audio_processors/juce_audio_processors.h | |||||
| @@ -138,14 +138,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" | |||||
| @@ -164,7 +168,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" | |||||
| #include "utilities/ARA/juce_ARA_utils.h" | |||||
| diff --git a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||||
| index 53aa9c3d8..a84bd22be 100644 | |||||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp | |||||
| @@ -50,12 +50,14 @@ AudioProcessor::AudioProcessor (const BusesProperties& ioConfig) | |||||
| AudioProcessor::~AudioProcessor() | |||||
| { | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| { | |||||
| const ScopedLock sl (activeEditorLock); | |||||
| // ooh, nasty - the editor should have been deleted before its AudioProcessor. | |||||
| jassert (activeEditor == nullptr); | |||||
| } | |||||
| + #endif | |||||
| #if JUCE_DEBUG && ! JUCE_DISABLE_AUDIOPROCESSOR_BEGIN_END_GESTURE_CHECKING | |||||
| // This will fail if you've called beginParameterChangeGesture() for one | |||||
| @@ -874,6 +876,7 @@ void AudioProcessor::audioIOChanged (bool busNumberChanged, bool channelNumChang | |||||
| processorLayoutsChanged(); | |||||
| } | |||||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| //============================================================================== | |||||
| void AudioProcessor::editorBeingDeleted (AudioProcessorEditor* const editor) noexcept | |||||
| { | |||||
| @@ -910,6 +913,7 @@ AudioProcessorEditor* AudioProcessor::createEditorIfNeeded() | |||||
| return ed; | |||||
| } | |||||
| +#endif | |||||
| //============================================================================== | |||||
| 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 36e9769f2..27b5eb9cd 100644 | |||||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessor.h | |||||
| @@ -949,6 +949,7 @@ public: | |||||
| */ | |||||
| virtual void setNonRealtime (bool isNonRealtime) noexcept; | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| //============================================================================== | |||||
| /** Creates the processor's GUI. | |||||
| @@ -998,6 +999,7 @@ public: | |||||
| This may call createEditor() internally to create the component. | |||||
| */ | |||||
| AudioProcessorEditor* createEditorIfNeeded(); | |||||
| + #endif | |||||
| //============================================================================== | |||||
| /** Returns the default number of steps for a parameter. | |||||
| @@ -1209,9 +1211,11 @@ public: | |||||
| virtual CurveData getResponseCurve (CurveData::Type /*curveType*/) const { return {}; } | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| //============================================================================== | |||||
| /** Not for public use - this is called before deleting an editor component. */ | |||||
| void editorBeingDeleted (AudioProcessorEditor*) noexcept; | |||||
| + #endif | |||||
| /** Flags to indicate the type of plugin context in which a processor is being used. */ | |||||
| enum WrapperType | |||||
| @@ -1241,7 +1245,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 | |||||
| }; | |||||
| @@ -1490,7 +1496,9 @@ private: | |||||
| //============================================================================== | |||||
| Array<AudioProcessorListener*> listeners; | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| Component::SafePointer<AudioProcessorEditor> activeEditor; | |||||
| + #endif | |||||
| double currentSampleRate = 0; | |||||
| 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 ea943564b..6a0bed1af 100644 | |||||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp | |||||
| @@ -1568,8 +1568,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_AUDIOPROCESSOR_NO_GUI | |||||
| bool AudioProcessorGraph::AudioGraphIOProcessor::hasEditor() const { return false; } | |||||
| AudioProcessorEditor* AudioProcessorGraph::AudioGraphIOProcessor::createEditor() { return nullptr; } | |||||
| +#endif | |||||
| 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 5b6908824..f8e534009 100644 | |||||
| --- a/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||||
| +++ b/modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h | |||||
| @@ -364,8 +364,10 @@ public: | |||||
| bool acceptsMidi() const override; | |||||
| bool producesMidi() const override; | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| bool hasEditor() const override; | |||||
| AudioProcessorEditor* createEditor() override; | |||||
| + #endif | |||||
| int getNumPrograms() override; | |||||
| int getCurrentProgram() override; | |||||
| @@ -401,8 +403,10 @@ public: | |||||
| bool acceptsMidi() const override; | |||||
| bool producesMidi() const override; | |||||
| + #if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| bool hasEditor() const override { return false; } | |||||
| AudioProcessorEditor* createEditor() override { return nullptr; } | |||||
| + #endif | |||||
| 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 caf7eb798..1d59658ab 100644 | |||||
| --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp | |||||
| +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp | |||||
| @@ -473,6 +473,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, | |||||
| @@ -505,6 +506,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 4c498f9b2..4e33e2a67 100644 | |||||
| --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h | |||||
| +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h | |||||
| @@ -526,6 +526,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. | |||||
| @@ -593,6 +594,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 6651bddf8..d03d4f792 100644 | |||||
| --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp | |||||
| +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.cpp | |||||
| @@ -70,6 +70,7 @@ bool PluginHostType::isInAAXAudioSuite (AudioProcessor& processor) | |||||
| return false; | |||||
| } | |||||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| Image PluginHostType::getHostIcon (int size) const | |||||
| { | |||||
| ignoreUnused (size); | |||||
| @@ -86,6 +87,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 c222899fd..e5ec0a33a 100644 | |||||
| --- a/modules/juce_audio_processors/utilities/juce_PluginHostType.h | |||||
| +++ b/modules/juce_audio_processors/utilities/juce_PluginHostType.h | |||||
| @@ -207,8 +207,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. */ | |||||
| diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp | |||||
| index 1d3e3e1a5..4dfabfce5 100644 | |||||
| --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp | |||||
| +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp | |||||
| @@ -35,7 +35,9 @@ | |||||
| #define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 | |||||
| #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 | |||||
| +#if ! JUCE_AUDIOPROCESSOR_NO_GUI | |||||
| #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 | |||||
| +#endif | |||||
| #include <juce_audio_plugin_client/juce_audio_plugin_client.h> | |||||
| #include <juce_audio_plugin_client/detail/juce_CheckSettingMacros.h> | |||||
| @@ -1,34 +0,0 @@ | |||||
| diff --git a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||||
| index 4c3df9e46..70ca644e7 100644 | |||||
| --- a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||||
| +++ b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp | |||||
| @@ -166,6 +166,7 @@ private: | |||||
| void operator() (LPWSTR ptr) const noexcept { CoTaskMemFree (ptr); } | |||||
| }; | |||||
| + #if JUCE_MSVC | |||||
| bool showDialog (IFileDialog& dialog, bool async) | |||||
| { | |||||
| FILEOPENDIALOGOPTIONS flags = {}; | |||||
| @@ -383,6 +384,7 @@ private: | |||||
| return result; | |||||
| } | |||||
| + #endif | |||||
| Array<URL> openDialogPreVista (bool async) | |||||
| { | |||||
| @@ -499,11 +501,13 @@ private: | |||||
| const Remover remover (*this); | |||||
| + #if JUCE_MSVC | |||||
| if (SystemStats::getOperatingSystemType() >= SystemStats::WinVista | |||||
| && customComponent == nullptr) | |||||
| { | |||||
| return openDialogVistaAndUp (async); | |||||
| } | |||||
| + #endif | |||||
| return openDialogPreVista (async); | |||||
| } | |||||
| @@ -1,20 +0,0 @@ | |||||
| diff --git a/modules/juce_opengl/native/juce_OpenGLExtensions.h b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||||
| index 142a4688d..674321c63 100644 | |||||
| --- a/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||||
| +++ b/modules/juce_opengl/native/juce_OpenGLExtensions.h | |||||
| @@ -83,7 +83,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 +1 @@ | |||||
| Subproject commit 76a34204602b6a2a46b64bf3eb3ccb0e3c41b9f8 | |||||
| Subproject commit 32979563345db3995e15d5c489b6a240db16b740 | |||||
| @@ -63,7 +63,7 @@ | |||||
| #pragma warning(disable : 4996) | #pragma warning(disable : 4996) | ||||
| #endif | #endif | ||||
| #ifdef _WIN32 | |||||
| #ifdef _MSC_VER | |||||
| typedef double Real64; | typedef double Real64; | ||||
| /* The internal types */ | /* The internal types */ | ||||
| typedef unsigned char BYTE; | typedef unsigned char BYTE; | ||||
| @@ -77,9 +77,7 @@ | |||||
| typedef signed __int64 Bit64s; | typedef signed __int64 Bit64s; | ||||
| typedef unsigned int Bitu; | typedef unsigned int Bitu; | ||||
| typedef signed int Bits; | typedef signed int Bits; | ||||
| #endif | |||||
| #if __APPLE__ || __linux__ | |||||
| #else | |||||
| /// Jeff-Russ modified to be uniform across C++ implementations: | /// Jeff-Russ modified to be uniform across C++ implementations: | ||||
| // The internal types: | // The internal types: | ||||
| #include <stdint.h> | #include <stdint.h> | ||||