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

7771 commits

Author SHA1 Message Date
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
ed
5bff5dc9c8 Whitespace 2021-04-22 18:22:06 +01:00
ed
547dc7712c Fixed a potential crash in DropShadower when the component is deleted before the shadower 2021-04-22 18:20:10 +01:00
reuk
327fc86ff2
PluginDescription: Also check deprecatedUid when matching plugin identifier strings 2021-04-22 14:28:52 +01:00
reuk
36653e8b30
VST Host: Correctly retrieve results of effGetSpeakerArrangement
The plugin should interpret the arguments as VstSpeakerArrangement**
instances. It should modify the pointed-to VstSpeakerArrangement* so
that it points to a long-lived VstSpeakerArrangement in the plugin.
2021-04-22 12:47:46 +01:00
ed
a1337a3863 VST3: Workaround incorrect VST3 editor ref-count bug in Adobe Audition
Audition incorrectly increments the ref-count of the IPlugView* returned from IEditController::createView() and never fully releases it. This commit reverts e0306d25 for Audition to ensure that an editor is always returned, otherwise Audition displays a blank GUI.
2021-04-22 12:20:07 +01:00
ed
3c48207d15 PluginHostType: Added Adobe Audition on macOS 2021-04-22 12:16:25 +01:00
ed
1ab54a9438 PluginHostType: Added AU Lab 2021-04-22 12:16:20 +01:00
ed
b5c0c75a5b ASIO: Read buffer size after setting device sample rate 2021-04-20 17:24:49 +01:00
ed
27af34af8b ASIO: Support larger buffer sizes 2021-04-20 17:24:49 +01:00
ed
b5bb5273c1 TextEditor: Use caret position relative to the Component top-left when calculating scroll amounts in scrollEditorToPositionCaret() and scrollToMakeSureCursorIsVisible() 2021-04-20 17:24:49 +01:00
ed
24c2953369 TextEditor: Call checkLayout() before moving caret and repainting text in remove() 2021-04-20 17:24:49 +01:00
ed
841aae5b18 TextEditor: Call scrollToMakeSureCursorIsVisible() after updating layout when undoing/redoing 2021-04-20 17:24:49 +01:00
ed
c145434adf TextEditor: Fixed a bug causing the caret to disappear at the end of lines 2021-04-20 17:24:49 +01:00
reuk
1e606ddb32
MainMenu: Allow components to directly handle shortcut keys which trigger menu items
This fixes a regression introduced by
6e9261ea66 which meant that components
were not given a chance to respond to shortcut keypresses if those same
keypresses were registered for a menu item. This resulted in behaviour
where shortcuts such as 'cmd+c' would not be passed to a focused
TextEditor if a different command with the same shortcut was registered
in the main menu.

With this change in place, we now check whether the menu item's shortcut
keys match the current event's pressed keys. If the keypresses match, we
can assume that the event was triggered by the keyboard, and dispatch
the keypresses to the ComponentPeer. If the keypresses do not match,
then the menu item was likely selected using space/return, or by
clicking, in which case the event is dispatched directly to the
ApplicationCommandManager.
2021-04-20 17:21:08 +01:00
reuk
75ed712b19 AU Wrapper: Fix build errors when using PreferredChannelConfigurations 2021-04-19 22:32:51 +01:00
reuk
965f14311d
AUv3 Wrapper: Tidy up sample rate detection 2021-04-19 14:37:38 +01:00
reuk
8f74f3624c
AU Format: Enable output channels in MIDI FX
This mostly reverts commit 6e89e61b89.

MIDI FX plugins are allowed to have audio channels, even if they only
produce silence. If a plugin requests a particular bus/channel layout,
the host should respect this request, or attempt to update the layout.
The host should fill all channels that the plugin expects to be filled.

The old commit also meant that we weren't correctly supplying the host
sample rate to MIDI FX plugins.
2021-04-19 14:37:38 +01:00
reuk
cafb437762
AU Wrapper: Use correct sample rate for MIDI FX with no buses
MIDI FX AudioUnits can retrieve their current sample rate from an output
bus. However, it's reasonable for a JUCE MIDI FX plugin to require 0
output buses, in which case the correct sample rate cannot be retrieved.

This patch modifies the AU wrapper to ensure that MIDI FX plugins will
always have at least one output bus. This bus does not necessarily
correspond to a matching bus in the AudioProcessor, and it will not be
passed to AudioProcessor::processBlock. With the output bus in place,
the correct sample rate is reported in `prepareToPlay`.
2021-04-19 14:37:38 +01:00
ed
d30c0502bf ASIO: Update buffer size list when opening a device
This fixes a bug where a new buffer size set from the device control panel may not be added to the bufferSizes array
2021-04-19 09:54:02 +01:00
Tom Poole
ee76137441 Fixed some compiler warnings 2021-04-16 16:44:05 +01:00
reuk
4cefb3707c
AudioDeviceManager: Ensure current state is updated correctly when device settings are updated 2021-04-14 14:31:43 +01:00
reuk
146c8573ca
X11: Fix drag-n-drop bug in the XWindowSystem class
This resolves a regression which was introduced in
74ca3b44c4.

Prior to that commit, drag and drop on Linux/X11 worked as expected.
DragAndDropContainer::performExternalDragDropOfFiles allowed dropping
files onto other applications.

After the faulty commit, this function may cause the window manager to
enter a bad state in which the drag operation never finishes, making it
impossible to switch between windows or close windows.

I think the issue happens because the DnD source may receive (spurious?)
XdndLeave messages during the drag, which cause the peer's entry in the
dragAndDropStateMap to be removed. Before the faulty commit, each peer
had its own drag and drop state object, which was not destroyed in this
way.

This change will keep the peer's drag state object alive, even when an
XdndLeave message is received. The entry will still be removed when the
peer's window is destroyed.
2021-04-14 12:36:48 +01:00
ed
a06063dfd7 VST3: Added a missing return in the previous commit 2021-04-14 11:44:13 +01:00
ed
b1294fdadb VST3: Call setComponentState() on message thread on Linux 2021-04-13 16:25:43 +01:00
ed
dbf5789cda Linux: Fixed a compile error when building VST3 plug-ins with JUCE_MODAL_LOOPS_PERMITTED=0 2021-04-13 16:25:26 +01:00
ed
11d872ea1b MessageMananger: Made dispatchNextMessageOnSystemQueue() accessible by internal code 2021-04-13 16:25:04 +01:00
reuk
c3a98d44c5
DSP: Fix uses of "snap to zero" preprocessor definition 2021-04-12 10:57:19 +01:00
reuk
6832dca430 StandaloneFilterWindow: Auto-resize settings dialog when IO options change 2021-04-11 17:09:57 +01:00
ed
04fdc4c209 Standalone: Add a dummy output channel to MIDI effect plug-ins 2021-04-09 16:45:28 +01:00
ed
107a2cfe27 AudioProcessorPlayer: Support MIDI effect processors 2021-04-09 16:45:02 +01:00
reuk
9f03bbc358
VST3 Host: Ensure IEditController::setParamNormalized is only called from the message thread
Some plugins, such as the 'AGain' demo from the VST3 SDK and Diginoiz
Subdivine segfault when setParamNormalized is called from a background
thread.

This patch attempts to ensure that calls to get/set parameter values can
be made safely from the audio or message threads.

It also adds some MessageManagerLocks around some other calls to the
EditController's member functions which should technically only be made
from the GUI thread.

Finally, it updates the parameter input queues to the IAudioProcessor so
that writing to the queue is wait-free. As part of this change, a new
queue type is introduced which holds up to a single point. This should
improve memory usage for plugins with many parameters.
2021-04-09 12:19:22 +01:00
reuk
4cfe27af08
VST3 Host: Avoid using Array with a non-dummy CriticalSection 2021-04-09 12:19:22 +01:00
reuk
361f839546
VST3 Client: Avoid calling performEdit from the audio thread
Previously, all VST3 parameter changes were signalled to the host via
performEdit, regardless of the originating thread. This breaks the
contract of the IEditController interface, which requires that all calls
are made from the UI thread.

This change modifies the VST3 wrapper so that it will only call
performEdit when a parameter is set on the message thread. If a
parameter is set on the audio thread instead, then the parameter change
will be signalled to the host using
`ProcessData::outputParameterChanges`.

If your VST3 plugin uses a background thread to update parameters for
some reason, you'll encounter data races. Please don't do that.
2021-04-09 12:19:22 +01:00
reuk
c507ec9e73
VST3 Client: Ensure IComponentHandler::restartComponent is only called from the UI thread
When loading a JUCE plugin in Live, Live was producing diagnostic
messages in its Log.txt warning that restartComponent was being called
from a non-UI thread. This change should silence this warning, and
improve compliance with the VST3 spec.
2021-04-09 12:19:22 +01:00
reuk
1f21ce5f30
VST3: Add CachedParamValues helper type 2021-04-09 12:19:21 +01:00
reuk
e4659fd8f2
File: Use unit test random instance to generate unique filename 2021-04-09 10:26:28 +01:00
reuk
44441d3d79
VST2: Prefer unique_ptr to manual delete calls 2021-04-08 13:33:12 +01:00
reuk
d50c3920ef
FirstOrderTPTFilter: Ensure state is updated properly when samplerate is changed 2021-04-08 13:33:11 +01:00
reuk
cfd85ad4ee
UnitTestRunner: Fix bug in File tests when multiple test instances are run simultaneously 2021-04-08 13:33:11 +01:00
ed
1a5fb5992a BufferingAudioReader: Added some tests 2021-04-08 11:51:42 +01:00
ed
c4a9c7876f BufferedAudioReader: Fixed a bug reading past the end of the input source 2021-04-08 11:51:42 +01:00