The code added in 6f20de5434 was only
executed when no explicit sample rates were set.
Now, the sample rate is always updated after querying available sample
rates and before querying available buffer sizes, so that the buffer
size check is guaranteed to use an up-to-date samplerate value.
Previously, the set Comparator behaved the same way, regardless of the
value of columnFirst. This is incorrect; the set should be sorted such
that the final item in the set has the greatest cross-dimension.
There was also an off-by-one error in the result of
getHighestCrossDimension(). The highestCrossDimension data member is
exclusive, but the cell values in the occupiedCells set are inclusive.
We need to add 1 to the maximum cell cross-dimension in order to convert
it to an exclusive value.
It's important that the plugin always returns the full set of available
components.
The plugin may be scanned by a separate process from the 'main' DAW
process, and these processes may report different compatibility levels.
If the scanner has more restricted compatibility than the 'main' DAW
process, then some channel layouts may not be registered, and will be
hidden in the DAW.
Previously, filling a string containing a space or other non-rendered
character with a gradient would end up filling the entire clip region.
The correct behaviour is to completely skip filling any empty paths.
This issue manifested on Linux when building in Debug mode. It may also
have caused issues on other platforms. When editing a slider's value
using its text box, and then pressing the enter key, the program would
crash. The issue was not present when running with address sanitizer.
Valgrind was able to find the problem.
This fixes an issue where paths consisting of just a drive letter ("C:")
would be passed to CreateFile without a trailing path separator. The
documented behaviour in this case is for the path to be interpreted
relative to the "current directory" on that disk, so getLinkedTarget()
would incorrectly return the disk's working directory instead of the
drive root.