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

7812 commits

Author SHA1 Message Date
reuk
c19cd73306
HWNDComponentPeer: Avoid dismissing modals from peer-initiated messages 2021-05-14 17:41:32 +01:00
reuk
1124ec146d VSTPluginFormat: Fix rare crash where plugins may attempt to read uninitialised pointers 2021-05-14 16:55:02 +01:00
Tom Poole
bfdda737a2 Projucer: Removed the live build 2021-05-14 12:54:07 +01:00
ed
64896eefcd Accessibility: Fixed a potential crash when re-using custom ListBox components 2021-05-13 14:35:51 +01:00
reuk
972c45a76e
VST3: Remove noisy warnings from VST3 SDK 2021-05-13 12:10:07 +01:00
reuk
900282ccf3
MinGW: Fix warnings and errors emitted when building VST3 plugins 2021-05-13 12:10:06 +01:00
reuk
52e6c4f727
VST3: Update VST3 SDK files 2021-05-13 12:10:06 +01:00
reuk
d31a1ee3ee
VST3 SDK: Revert JUCE modification to fplatform.h 2021-05-13 12:10:06 +01:00
reuk
40fa4ff90c
AU Client: Fix variable naming 2021-05-12 15:54:53 +01:00
reuk
668f16f0ec
Component: Ensure component position does not change when removed and re-added to desktop 2021-05-12 12:50:08 +01:00
reuk
47c7751750
VST3 Host: Avoid calling IMidiMapping functions on the audio thread 2021-05-12 11:14:35 +01:00
reuk
c8dae58fd2
VST3 Host: Avoid calling processBlock, prepareToPlay, and releaseResources simultaneously
The old design had us checking isActive inside our audio callbacks, and
also modifying isActive from prepareToPlay(), and releaseResources(). To
avoid race conditions, and to ensure that isActive actually reflects the
activation state of our plugin, we need to lock in these places. If we
don't lock, there's a chance that other threads will observe isActive to
be true while the plugin is not actually active (for example).

If you're not convinced, imagine this scenario:
- The message thread calls prepareToPlay. The plugin is activated.
- The audio thread starts calling processBlock, and gets as far as the
  isActive check. The plugin appears active, so we continue into
  processBlock.
- At the same time, the message thread calls releaseResources(). The
  processBlock call is still in progress, but the message thread is
  simultaneously making calls to setProcessing() and setActive(), which
  is a race.

Normally, it'd be up to the host of the AudioProcessor to ensure that
prepareToPlay() isn't called at the same time as processBlock().
However, VST3 plugins can request a restart at any time from the UI
thread, requiring us to call prepareToPlay() even while processBlock()
is running.
2021-05-12 11:14:34 +01:00
ed
8b74ec2fb7 MinGW: Exclude native accessibility code 2021-05-12 08:02:20 +01:00
ed
70d0657f00 Windows: Only load UIA functions when accessibility is active 2021-05-11 15:57:54 +01:00
ed
6a36af2a11 Fixed a lambda capture lifetime issue when setting up IncDecButtons style sliders 2021-05-11 15:57:48 +01:00
ed
533f68219b Fixed some Doxygen issues 2021-05-11 11:48:52 +01:00
Tom Poole
a1a65707f6 Fixed a documentation typo 2021-05-10 11:50:37 +01:00
ed
ec990202b1 Accessibility: Added VoiceOver (macOS) and Narrator (Windows) accessibility screen reader support to juce_gui_basics 2021-05-10 10:53:14 +01:00
reuk
1df59f7469
VST3 Host: Only send updates for modified parameters 2021-05-07 10:10:53 +01:00
reuk
f35c2d90e2
VST3 Host: Ensure AudioProcessor parameter indices are used when appropriate
Previously, IEditController parameter indices were being used to index
into the AudioProcessor parameter array, but these parameter indices are
not guaranteed to point to the same parameter (parameter groups may
cause reordering on JUCE's side). Now, we use the IEditController
indices universally.
2021-05-06 16:04:22 +01:00
reuk
32f99d2615
AudioPlayHead: Tidy up implementation 2021-05-06 15:51:09 +01:00
reuk
0f690662d8
AutoResizingNSViewComponent: Fix display issues for certain plugin views
Previously, the following plugins were causing issues when hosting their
editors:

- Softube plugins. I used Saturation Knob for testing, which crashed when
  deleting the temporary parent view.
- KORG Gadget series, which displayed a black screen after the temporary parent
  view was deleted.
- FabFilter Pro-C, which displayed at the wrong scale when opened on a
  retina display.
2021-05-06 15:51:09 +01:00
reuk
a7ce9aab98
MidiBuffer: Allow addEvent to report success or failure 2021-05-05 12:13:17 +01:00
reuk
12df164127
Allow VST and LADSPA plugins to load properly from old PluginDescriptions
Old PluginDescriptions may only have the `deprecatedUid` field set, with
the `uniqueId` field set to 0. In this case, the uniqueId should be
ignored, and the deprecatedUid used instead.
2021-05-04 21:02:54 +01:00
reuk
19821db2a3
HWNDComponentPeer: Dismiss modals when windows are moved
This change ensures that popup menus will be dismissed when hosted
plugin windows are moved, even when these plugin views are themselves
hosted inside JUCE views, like those used in the AudioPluginHost.
2021-05-04 14:24:22 +01:00
reuk
15305e69af VST3 hosting: Fix issue where MIDI controller changes were not passed on to plugins 2021-05-02 14:59:12 +01:00
ed
51a593abac CodeEditorComponent: Avoid dereferencing a nullptr when recreating caret component 2021-04-30 17:15:27 +01:00
reuk
22189f7aa4
ArrayBase: Avoid undefined behaviour when trying to copy a range of 0 elements 2021-04-30 14:49:23 +01:00
reuk
e9b26887dd
NSViewComponentPeer: Fix bug where components could draw with unwanted translation
When drawing a popup menu for a target component with a non-unity scale,
the contents of the component were being drawn with an unwanted vertical
offset.
2021-04-29 17:43:31 +01:00
reuk
6e5645bf8f
macOS Windowing: Revert unnecessary change which produced incorrect monitor bounds 2021-04-29 17:43:31 +01:00
ed
d6baa1570d Docs: Removed reference to Graphics::getClipRegion() method which no longer exists 2021-04-29 17:33:24 +01:00
ed
c9731d4827 AUv3: Removed a duplicate statement in getCurrentPosition() 2021-04-29 17:31:33 +01:00
ed
665fac678f TextEditor: Enable horizontal scrollbars for multi-line editors with word wrapping disabled 2021-04-29 17:05:00 +01:00
reuk
f73f8ee849
NSViewComponentPeer: Use JUCE-style coordinates to position subviews 2021-04-28 15:38:10 +01:00
ed
a747f7c47f
CoreGraphics: Added convertToPointFloat() helper 2021-04-28 15:38:09 +01:00
reuk
ec43c7f61c
FileChooser: Remember previous file location on Windows 2021-04-28 13:46:55 +01:00
reuk
0e7fd1b909
StandalonePluginHolder: Fix out-of-bounds read when audio callbacks use larger-than-expected buffers 2021-04-28 12:59:08 +01:00
reuk
0e47da1474
VST Client: Ensure audioMasterIOChanged is sent when latency is updated 2021-04-28 09:57:12 +01:00
ed
d6ac6b543b Removed some unnecessary angled brackets 2021-04-27 15:56:01 +01:00
ed
a8aafed53d Removed some unnecessary virtual keywords 2021-04-27 15:56:01 +01:00
ed
bd17993caa SidePanel: Call onPanelShowHide when animation has completed 2021-04-27 15:56:01 +01:00
ed
8aa84abd7c Oboe: Updated to release 1.5.1 2021-04-27 11:56:35 +01:00
ed
433750941b MemoryBlock: Added a new replaceAll() method and deprecated the replaceWith() method
When passing in valid data with zero size, replaceWith() will do nothing and leave the MemoryBlock in its previous state which may be unexpected. replaceAll() will reset the MemoryBlock and resize it to 0
2021-04-27 09:06:14 +01:00
ed
f5dac0780d TextEditor: Only start new lines when shouldStartNewLine == true when splitting long atoms 2021-04-26 15:05:00 +01:00
ed
7fb45db0d2 TextEditor: Always return positive integers from getMaximumTextWidth/Height() 2021-04-26 15:03:52 +01:00
ed
b9c8a1475f TextEditor: New line atoms should have zero width 2021-04-23 16:17:23 +01:00
ed
b644d7b675 TextEditor: Fixed a wrapping bug when right-justified 2021-04-23 16:17:23 +01:00
ed
0fc1ede50f Used MemoryBlock::isEmpty() in a few places 2021-04-22 18:22:06 +01:00
ed
b2b1685ca6 Added MemoryBlock::isEmpty() 2021-04-22 18:22:06 +01:00
ed
76993469ea CoreGraphics: Fixed a leak when loading an empty MemoryBlock in juce_loadWithCoreImage() 2021-04-22 18:22:06 +01:00