1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00
JUCE/modules
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
..
juce_analytics Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_animation Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_audio_basics Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_audio_devices WASAPI: Fix bug where attempting to clear output buffers had no effect 2025-06-03 16:12:00 +01:00
juce_audio_formats Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_audio_plugin_client PopupMenu: Add missing target components for menus created by built-in widgets 2025-06-03 16:08:56 +01:00
juce_audio_processors PluginListComponent: Wait for current scan to complete before calling owner.scanFinished() 2025-06-06 23:12:16 +01:00
juce_audio_utils AudioVisualiserComponent: Fix potential data races 2025-06-03 16:12:00 +01:00
juce_box2d Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_core GlyphArrangement: Use portable string trimming 2025-06-03 16:12:00 +01:00
juce_cryptography Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_data_structures Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_dsp Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_events Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_graphics Graphics: Add missing JUCE_API annotation to ScopedSaveState 2025-06-03 16:12:00 +01:00
juce_gui_basics PopupMenu: Add missing target components for menus created by built-in widgets 2025-06-03 16:08:56 +01:00
juce_gui_extra PopupMenu: Add missing target components for menus created by built-in widgets 2025-06-03 16:08:56 +01:00
juce_javascript Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_midi_ci Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_opengl Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_osc Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_product_unlocking Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
juce_video Bump version number to 8.0.8 2025-06-02 09:24:54 +01:00
CMakeLists.txt Javascript: Move javascript implementation into a separate module 2024-11-07 09:53:10 +00:00