In order to avoid collisions in the JucePlugin_Build preprocessor
definitions, we were only propagating the JUCE_MODULE_AVAILABLE defs
from the shared code target to the plugin wrapper targets.
After this change, we propagate everything *but* the JucePlugin_Build
definitions.
When a global AppConfig file is not added to a project, preprocessor defines from project, exporter and target settings now override defines that would have been in this file, matching the previous behaviour.
Previously we were choosing a Visual and Colormap on initialisation of the X11 Display which could lead to bugs when opening a window with different visual and colour requirements. This commit makes 16, 24 and 32-bit visuals available and chooses the correct one when opening a window.
It was possible to encounter data races when when requesting connection
callbacks on the message thread, but creating/destroying connection
objects on a background thread.
This change ensures that a message will not be processed if the
destination connection is destroyed before the message is delivered.
Deprecated methods returning a Display& in favour of new methods returning a Display* which return nullptr when running on a system with no connected displays.
Adds a new `drawPopupMenuBackgroundForOption` member function to
`PopupMenu::LookAndFeelMethods`. By default this will pass through
to `drawPopupMenuBackground`, but it can be overridden in cases
where the background appearance depends on the current `Options`.
The recent IFileChooser update to the JUCE FileChooser meant that
Windows build machines must be running Vista or newer.
For compilers other than MinGW, we were already requiring that the build
machine must be running Windows 8 or newer.
Previously, if `AudioProcessorGraph::prepareToPlay` was called twice,
interspersed with calls to `setProcessingPrecision`, the graph would
consider the nodes 'prepared' on the second call, and wouldn't
re-prepare the inner nodes with the new precision setting.
graph.setProcessingPrecision (juce::AudioProcessor::singlePrecision);
graph.prepareToPlay (44100, 512);
graph.setProcessingPrecision (juce::AudioProcessor::doublePrecision);
graph.prepareToPlay (44100, 512); // this wouldn't update the nodes
Now, we always explicitly unprepare all nodes at the beginning of
prepareToPlay, so that they'll always receive the newest settings.