When the AvailableModulesList is destroyed, it will wait for the current
module scanning job (running on a background thread) to complete. This
job will try to take the AvailableModulesList::lock when it completes,
so the lock must outlive the background thread.
Previously, when saving a temporary project, two native dialogs would be
created. The first was very short-lived, as it was automatically
dismissed by the second dialog. On older macOS versions, this appeared
to work correctly (the first dialog was so short-lived that it did not
appear to the user). However, on macOS 12.0, the second dialog fails to
display altogether.
Displaying two file chooser dialogs feels like a programming error, so
the code has been reorganised a bit to avoid this case.
By default, x86_64 binaries are not signed, but arm64 binaries are. When
building universal binaries, it was possible to end up with a final
artefact that contains an unsigned x86_64 image, but a signed arm64
image. In some cases, this could cause issues in subsequent codesign
invocations.
When the result of find_if() is only compared to the container's end(),
the operation can normally be expressed more concisely using any_of(),
all_of(), or none_of().
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.