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

137 commits

Author SHA1 Message Date
reuk
6473deb155
PluginListComponent: Fix potential use-after-free on modal component dismiss 2025-08-27 16:57:17 +01:00
Anthony Nicholls
36d07a6ce3 Docs: Replace doxygen preprocessor conditionals with @cond and @endconds 2025-07-21 18:11:43 +02:00
Anthony Nicholls
46703f3e65 PluginListComponent: Replace inappropriate naming with more suitable alternatives 2025-06-10 16:14:06 +01:00
reuk
5c34248d00
PluginListComponent: Wait for current scan to complete before calling owner.scanFinished()
I observed a deadlock when scanning AU plugins in-process in the
AudioPluginHost, and then clicking the "cancel" button in the scan
progress alert window.

The cause of the deadlock seems to be that JUCE uses async messages to
create and destroy AU plugins on the main thread. When running a plugin
scanner on a background thread, it was possible to end up in a situation
where the background thread was waiting on the message thread to process
a create/destroy message; and, at the same time, the main thread was
blocked waiting for all scan jobs to complete. This seemed to happen
because scanFinished() was called directly from the Scanner's
timerCallback as soon as the progress window was cancelled, even if
there was still a scan in progress at that point.

To avoid the deadlock, we now wait until the current scan has completely
finished before allowing the timerCallback to call scanFinished(). If no
scan is in progress, then the main thread can safely destroy the scanner
ThreadPool without needing to wait at that point.
2025-06-06 23:12:16 +01:00
reuk
dc890c69c2
PluginListComponent: Use lambda form of ModalCallbackFunction 2025-06-06 23:12:16 +01:00
reuk
b20df8d713
PopupMenu: Add missing target components for menus created by built-in widgets 2025-06-03 16:08:56 +01:00
reuk
336a475921
PluginListComponent: Pass associatedComponent for temporary AlertWindows
This should allow these alert windows to display at the correct scale on
HiDPI Windows machines.
2025-06-03 16:08:56 +01:00
Christian Haase
9de56d0aab
PluginListComponent: Add missing TRANS statements 2024-11-21 13:42:54 +00:00
attila
5ce2fc388e Fix C++23 compilation 2024-08-15 11:15:15 +02:00
reuk
4533077b75
LookAndFeel: Allow specifying a default typeface metrics kind to use 2024-04-18 14:16:00 +01:00
reuk
4f2c287f9b
Font: Deprecate old Font constructors 2024-04-18 14:16:00 +01:00
Tom Poole
94d98a2b10 Update licensing information 2024-04-16 11:39:35 +01:00
reuk
047448fbce
Warnings: Add missing overrides 2024-01-30 11:37:30 +00:00
Tom Poole
6bf9bb9a2e Add final specifiers in implementation files 2023-10-10 16:12:38 +01:00
Tom Poole
4153d59e39 Formatting 2023-10-02 15:42:20 +01:00
Tom Poole
7d45d498b9 Removed some superfluous consts from definitions 2023-09-20 16:31:10 +01:00
Anthony Nicholls
b3da4ae946 ThreadPool: Add support for a user specified thread name 2023-06-19 12:24:45 +00:00
reuk
39a731de46
ScopedMessageBox: Replace old AlertWindow uses with new API 2023-02-22 21:00:17 +00:00
reuk
543b001e9c FileSearchPath: Allow working with paths that are not necessarily absolute
This allows paths that are prefixed with environment variables to behave
as expected. This is useful when scanning the default LV2 locations in
the AudioPluginHost on Windows.
2023-02-01 23:05:51 +00:00
Tom Poole
2ec861d99e Update licensing banners to JUCE 7 2022-05-16 17:55:48 +01:00
Tom Poole
dea3fe60e4 Update copyright banners 2022-04-04 12:36:32 +01:00
reuk
093dbc7df1
Plugin Scanning: Fix thread sanitizer issues in the AudioPluginHost 2022-01-27 18:43:22 +00:00
reuk
7da8b73a96
AudioPluginHost: Add subprocess plugin scanning feature 2021-10-14 16:56:20 +01:00
reuk
d59230aecc
AudioPluginFormat: Remove canScanOnBackgroundThread(), as it is not generally useful 2021-10-14 12:40:25 +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
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
551d7b9c5b Add MessageBoxOptions class for specifying a set of AlertWindow and NativeMessageBox options
- Add AlertWindow::show() and showAsync() methods that take a MessageBoxOptions argument
  - Add NativeMessageBox::show() and showAsync() methods that take a MessageBoxOptions argument
  - Update the DialogsDemo to demonstrate the new methods
  - Deprecate AlertWindow::showNativeDialogBox() in favour of the NativeMessageBox methods
  - Pass button strings specified in MesssageBoxOptions to native dialog boxes correctly
  - Use modern TaskDialog on Windows for the native dialog box where available
2021-07-21 16:34:12 +01:00
reuk
31a7c62baf
Windows: Fix and suppress some analysis warnings
This fixes warnings that are emitted when building with the `-analyze`
flag enabled.
2021-05-26 15:34:26 +01:00
reuk
3baaad8b5b
XmlElement: Update loops to use new iterators 2021-01-28 20:14:11 +00:00
reuk
d236964410 PluginList: Fix revealing plugins 2020-10-29 15:53:33 +00:00
reuk
394c4fd475 Clang: Fix warnings when building with clang 10 2020-07-01 10:00:43 +01:00
ed
009d685179 Updated all license headers 2020-06-29 08:30:22 +01:00
Tom Poole
894e7d2bd2 Updated all license headers 2020-04-23 17:30:39 +01:00
reuk
327f817b9b Copyrights: Update commercial/gpl headers to be gpl-only 2020-04-09 15:22:56 +01:00
ed
59a058fdc6 Fixed some warnings flagged up when enabling -Wswitch-enum, -Wswitch-default, -Wredundant-decls, and -Wimplicit-fallthrough 2020-03-09 17:39:28 +00:00
ed
a54da0b832 Fixed some more typos 2020-01-07 08:53:23 +00:00
jules
6ba85cb46c Added some static methods to all the AudioPluginFormat classes to allow their type names to be retrieved without an instance being created. Also added a method AudioPluginFormatManager::getFormats() for easier iteration of formats 2019-07-18 12:33:10 +01:00
jules
4599496a42 Added some flexibility to PluginListComponent to make it easier to customise, and added some right-click popup menu options for the items 2019-07-16 17:09:18 +01:00
jules
cd4aba9e43 PopupMenu modernisation: Improved the PopupMenu::Item class to make it easy to build items by chaining calls together. 2019-06-20 13:55:18 +01:00
ed
c88611e5c8 Made KnownPluginList::addToMenu() and ::getIndexChosenByMenu() operate on a copy of the PluginDescription array so they are in sync 2019-06-19 15:30:29 +01:00
ed
08501a3705 Fixed an issue when adding plug-ins with empty paths on macOS in KnownPluginList::createTree() with sortByFileSystemLocation 2019-06-18 16:51:39 +01:00
jules
9d120bf481 Modified PluginListComponent so that if all paths to scan are deleted, it reverts to the default set of paths for the given format (otherwise there was no way to make it reset to default) 2019-06-08 09:18:15 +01:00
ed
b745ed9bd9 Fixed a potential crash in KnownPluginList::removeType() 2019-05-31 10:00:27 +01:00
Tom Poole
a9a0f6b92f Enforced more comprehensive const-correctness in the JUCE container classes 2019-05-29 08:52:16 +01:00
ed
92a9c37bac Deprecated some thread unsafe methods in KnownPluginList and modernised the interface a bit 2019-05-23 14:22:56 +01:00
jules
62ead7dc7d Added some overloads to OwnedArray to let items be added from std::unique_ptrs. Also removed OwnedArray::addIfNotAlreadyThere because it's ambiguous about whether the object should be deleted if it fails to be added! 2019-05-15 11:02:03 +01:00
jules
6463529371 Another batch of conversion of methods which returned bare XmlElement* to return unique_ptrs 2019-05-15 11:02:03 +01:00
jules
b6f0b2d0aa Tweaked the re-entrancy check on the PluginListComponent scan 2019-03-15 12:42:04 +00:00
ed
a234721110 Added various clang-tidy modernize-* fixes 2019-01-31 15:15:31 +00:00
jules
cdb55f70c2 Changes to avoid some clang warnings 2019-01-18 08:59:28 +00:00