1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-11 23:54:18 +00:00
Commit graph

8207 commits

Author SHA1 Message Date
ed
a852f4f45f Component: Only pass mouse wheel and magnify events up to enabled parents 2021-10-08 17:19:04 +01:00
ed
7a8a4944cb ComboBox: Hide active menu when disabled 2021-10-08 17:19:04 +01:00
ed
0000771751 Accessibility: Report Button on/off state via AccessibilityValueInterface 2021-10-08 17:19:04 +01:00
ed
e6360ca4cf Accessibility: Send AccessibilityEvent::valueChanged when ComboBox selection is changed 2021-10-08 17:19:03 +01:00
ed
0b844b7d88 Windows Accessibility: Implement AccessibilityEvent::valueChanged 2021-10-08 17:19:03 +01:00
ed
f70fd14065 iOS Accessibility: Implement accessibilityPerformEscape gesture to dismiss modals 2021-10-08 17:19:03 +01:00
ed
bc64c30df6 Accessibility: Use more specific AccessibilityRole::dialogWindow for CallOutBox 2021-10-08 17:19:03 +01:00
ed
b8aa237463 Accessibility: Add Button::setToggleable() method for manually specifying that a button's on/off state is toggleable and should be exposed to accessibility clients 2021-10-08 17:18:46 +01:00
ed
e1d1dd380c iOS: Fix compatibility when targeting older SDK versions 2021-10-08 17:18:32 +01:00
reuk
f5f834f758
CompilerWarnings: Update minimum supported clang version for JUCE_BEGIN_NO_SANITIZE
Clang versions 5 to 8 inclusive seem to struggle to compile JUCE when
JUCE_BEGIN_NO_SANITIZE is used. This is unexpected, as simpler programs
using the same macro definitions compile correctly on clang 5.
2021-10-07 14:31:27 +01:00
reuk
d286e690b2
PluginListComponent: Disallow scanning VST3 plugins on background threads
Native Instrument VST3s (I tested Kontakt and Supercharger) crash when
the bundleEntry function is called from a background thread on macOS.
This change disables scanning for VST3 plugins on a background thread
using the PluginListComponent, to allow loading these plugins in the
AudioPluginHost.

I can't find any "official" word on whether the bundleEntry and
bundleExit functions should be guaranteed to be made from the main
thread. However, the VST3PluginTestHost app seems to call these
functions exclusively from the main thread.
2021-10-07 14:31:26 +01:00
reuk
47dcc31e77
VST3 Client: Allow setting latency from inside prepareToPlay 2021-10-07 14:31:26 +01:00
ed
ca16bf44b8 Add comment above AppleClang workaround in FloatVectorOperations::setFpStatusRegister() 2021-10-07 14:30:33 +01:00
ed
051e0ed6d6 Fix leak on MultiDocumentPanel destruction 2021-10-07 14:30:32 +01:00
ed
f2b9ab15d8 iOS: Use UIPasteboard string property in SystemClipboard::getTextFromClipboard() to ensure that only NSStrings are retrieved 2021-10-07 14:30:24 +01:00
reuk
96612b12d8
VST Host: Ensure parent window is showing before attempting to open an editor
This fixes an issue with NI Raum and Choral where the editors would open
in a new window, rather than in the same window as the VST
AudioProcessorEditor.
2021-10-06 16:59:08 +01:00
reuk
28a1bc54f9
ProcessSpec: Add equality operators 2021-10-06 16:59:08 +01:00
reuk
e797c993a8
AAX Client: Add dirty state reporting via updateHostDisplay 2021-10-06 16:59:08 +01:00
reuk
294caba2b5
VST3: Add dirty-state set/get
Adds a mechanism to notify the host that the plugin state needs saving,
using updateHostDisplay.

Also allows JUCE hosts to detect when a plugin needs its state saving
via the AudioProcessorListener.
2021-10-06 16:59:07 +01:00
reuk
832bbed8c3
VST3: Fix error when building VST3 plugins
On macOS 10.15, stdatomic.h (included by the VST3 SDK) defines a macro
named atomic_thread_fence when building in C++20 mode. This macro was
trampling over a call to std::atomic_thread_fence from the C++ atomic
header, made in juce_Atomic.h.

No JUCE implementation files use the C11 atomic functions, so I think
it's safe to just undef the problematic symbol after including all the
VST3 implementation files.
2021-10-06 16:59:07 +01:00
reuk
752a676fa6
ImageCache: Avoid data race on impl when accessing cache from a background thread 2021-10-06 16:59:07 +01:00
reuk
4b57909fb0
Singleton: Fix thread sanitizer warning about race on "instance" data member 2021-10-06 16:59:07 +01:00
reuk
eb3c3ed27c
AudioTransportSource: Fix thread sanitizer warnings
The AudioPlaybackDemo was previously triggering thread sanitizer
warnings when starting playback.
2021-10-06 16:59:07 +01:00
reuk
a62d4c6a5a
CoreAudioFormat: Allow specifying stream kind hints 2021-10-06 16:59:06 +01:00
reuk
4a3ea2721d
Refactoring: Use any_of(), all_of() or, none_of() instead of find_if() where possible
When the result of find_if() is only compared to the container's end(),
the operation can normally be expressed more concisely using any_of(),
all_of(), or none_of().
2021-10-06 16:59:06 +01:00
reuk
c1cd432703
Mac Menu: Avoid errant beeps when triggering menu items 2021-10-06 16:59:06 +01:00
ed
69d4e0186f Update code to use new AudioData interleaving/deinterleaving API 2021-10-06 16:44:51 +01:00
ed
d9a3a2605d Improve AudioData interleaving/deinterleaving helper methods API and add docs 2021-10-06 16:44:45 +01:00
ed
3e606cc378 Update code to use new AudioData interleaving/deinterleaving helper methods 2021-10-05 17:30:13 +01:00
ed
52025f9756 AudioData: Add helper methods for interleaving/deinterleaving samples 2021-10-05 16:31:55 +01:00
ed
f899b65315 Docs: Exclude top-level std namespace when building docs 2021-10-04 17:23:37 +01:00
ed
05b49da0fe macOS: Silence some deprecation warnings 2021-10-04 17:23:29 +01:00
ed
6da59e87a3 Fix float_Pi deprecation warning typo 2021-10-04 10:01:07 +01:00
reuk
462c3a8dd4
VST Host: Ensure editor windows open at correct size
Previously, on hi res displays, "Plogue AlterEgo" was opening with a
window that was too large, because the window size was applied before
the scale factor was known. When the scale factor was updated, the
window size was not changed if the window was hidden, so the window
would remain too large when it was shown.
2021-09-30 16:58:23 +01:00
reuk
8f1ba916ff
VST3 Host: Set content scale before opening plugin window for the first time
Some plugins (e.g. FabFilter Pro-C 2) will reopen their windows at their
previous size, but without accounting for a new scale factor. For these
plugins, we need to explicitly set a scale factor of 1 before calling
getSize for the first time, in order to ensure that the plugin knows it
should return its desired unscaled size, and not its size at the scale
factor it was using last.

Other plugins (Surge) misreport their desired size when it is requested
before the window has become visible. For these plugins, we need to
re-request the plugin's desired window size after it has opened.

The problems above are mostly noticeable when opening/reopening plugins
on a hi-DPI display on Windows.
2021-09-30 16:57:11 +01:00
reuk
61cdcff2e9
VST3 Host: Ensure requested size is applied, even when plugin does not support scaling
This fixes some issues with Izotope Ozone 9:
- Resizing would stutter, and could leave the view in an inconsistent
  state.
- Closing and reopening the view after resizing would display black bars
  around the editor view.

The root of the problem was that the call to Component::setSize() inside
the resizeView call checked whether the plugin supported resizing. If
not, it would force the embedded view back to the current size. This
behaviour is incorrect - if the plugin requests a resize via resizeView,
the new size should be applied whether or not the plugin "supports
resizing".
2021-09-30 14:19:27 +01:00
reuk
ebf86b5f35
VST3 Host: Correctly size unscalable editors when DPI changes 2021-09-30 14:19:27 +01:00
reuk
9bec8e633a
VST3 Host: Ensure that plugins open with their top left corner in the right position
This fixes a bug on Windows where plugins that do not implement the
IPlugViewContentScaleSupport interface opened in the AudioPluginHost
with their editors in the very top left corner of the window, rather
than below the window's titlebar.

Examples of plugins with no scaling support, suitable for reproducing
the issue:
- U-He Hive 2.1.1 Rev 12092 x64
- FabFilter Pro-C 1.23 x64
2021-09-30 14:19:26 +01:00
reuk
72f3a15616
HWNDComponentPeer: Avoid auto-scaling child hwnds
The scaling machinery in the component peer was causing problems for
hosted plugin views. Scaling the plugin view size requires close
collaboration between the plugin and the host, and it's important for
the host to have exact control over the size of the plugin's view. The
removed code in the HWNDComponentPeer was modifying the sizes of
embedded plugin windows, which would often leave them at an incorrect
size.

The faulty behaviour was especially noticable with plugins that do not
support DPI-aware behaviour. I tested with the following plugins (VST2 +
VST3), which should all now display correctly in the AudioPluginHost,
and assume the correct size when opened on hi-res displays, or dragged
between displays with different scale factors:
- Plogue AlterEgo
- U-He Hive 2
- FabFilter Pro-C
- Native Instruments Supercharger
- Surge
2021-09-30 14:19:26 +01:00
reuk
7cd04f7d74
Windowing: Refactor DPI-related function loading 2021-09-30 14:19:26 +01:00
ed
a87dd82ca2 Prevent optimisation of floating-point status register value in FloatVectorOperations::setFpStatusRegister() 2021-09-30 14:08:23 +01:00
ed
8d72e7fccc Linux: Update displays when DPI settings change 2021-09-29 17:41:04 +01:00
ed
70d36f06db Linux: Implement dark mode detection 2021-09-29 17:40:58 +01:00
ed
3d282c1078 Desktop: Deprecate isOSXDarkModeActive() and add isDarkModeActive() for other platforms 2021-09-29 17:40:58 +01:00
ed
ea35602f18 X11: Use XSettings to respond to window scale factor changes 2021-09-29 17:40:57 +01:00
ed
f69de31094 X11: Add XSettings class for parsing and storing display settings according to the XSETTINGS specification 2021-09-29 17:40:57 +01:00
ed
5e44bc39e0 X11: Pass Display instance to GetXProperty constructor 2021-09-29 17:40:57 +01:00
ed
b9542ccc4c Update code to use C++14 [[deprecated]] attribute
This commit removes the various compiler-specific JUCE_DEPRECATED macros and replaces them with C++14's deprecated attribute. It also removes the JUCE_CATCH_DEPRECATED_CODE_MISUSE flag as we can rely on the override specifier catching usage of these old virtual methods, and tidies up the DOXYGEN preprocessor checks as they were inconsistent across the codebase.
2021-09-29 16:14:00 +01:00
ed
a435026b24 macOS: Use available keyword instead of preprocessor version checks where possible 2021-09-29 16:13:48 +01:00
ed
291f88abb2 macOS/iOS: Suppress and fix unguarded availability warnings 2021-09-29 16:13:27 +01:00