mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
IFileDialog::Show and CoUninitialize both seem to require the main message loop to be active and running when they are called. If we block the message thread while calling these functions, we may cause a deadlock. The destructor of the Win32NativeFileChooser was blocking the message thread until the background thread exited, but the background thread was unable to make progress while the message thread was blocked. To work around this issue, we now pump the message thread in the destructor of the Win32NativeFileChooser. If a dialog is currently active, this should allow it to exit gracefully. Note that we cannot use MessageManager::runDispatchLoopUntil here: - MessageManager::runDispatchLoopUntil will not process any messages if the quit message has been received, which could lead to deadlocks if the FileChooser is destroyed after the quit message has been posted. - This function isn't defined when JUCE_MODAL_LOOPS_PERMITTED is disabled. |
||
|---|---|---|
| .. | ||
| juce_analytics | ||
| juce_audio_basics | ||
| juce_audio_devices | ||
| juce_audio_formats | ||
| juce_audio_plugin_client | ||
| juce_audio_processors | ||
| juce_audio_utils | ||
| juce_blocks_basics | ||
| juce_box2d | ||
| juce_core | ||
| juce_cryptography | ||
| juce_data_structures | ||
| juce_dsp | ||
| juce_events | ||
| juce_graphics | ||
| juce_gui_basics | ||
| juce_gui_extra | ||
| juce_opengl | ||
| juce_osc | ||
| juce_product_unlocking | ||
| juce_video | ||
| CMakeLists.txt | ||