Closes #1413Closes#1414
This commit addresses issues with building PortMixer
using the upstream version of PortAudio.
The resulting solution allows:
* To build Linux with the vanilla PortAudio.
* To build Windows with the vanilla PortAudio, but the notable exceptions:
* for PortMixer to work on MME - PA 19.7.0 is required; only static linking is supported. A patch is available to allow dynamic linking;
* for PortMixer to work on DirectSound - the patch is always required.
Remove nyquist autotools
... This may allow upgrade to the latest version of portaudio, which is
desirable for fixes and improvements, including the fixing of build warnings on
Mac about use of deprecated SDK functions.
The function PaUtil_GetTime() cannot be called.
To make a conservative fix that doesn't affect the fine tuning of timing,
replicate the implementation of that function directly in AudioIO.cpp, with
all necessary conditional compilation branches.
Don't attempt a fix with std::chrono, although that would be more nicely
platform independent.
Testing should confirm that MIDI playback doesn't suffer any jittery timing,
such as it did especially on Linux with ALSA, when the playback feature was
under development in 2017.
... such as one whose only line is "CM,Exit", which can also be recorded.
But no commands that pop up modal dialogs, or mouse interactions, can yet play
back.
`prepare_offline_dependencies.sh` will generate a tarball containing:
* Files required for PIP to install Conan
* Conan download cache
The resulting tarball content depends on CMake flags passed down
to the script.
`build_package.sh` demonstrates how to use the offline dependecies
to build Audacity. The script requires the exact CMake options that were
provided to `prepare_offline_dependencies.sh`
`build_packages.sh` allows validating the build process for different
Linux distros. It uses Docker to:
* Generate the dependencies tarball.
* Execute an offline build using `build_package.sh`.
* Generate distro specific packages, offline as well.
When `audacity_conan_allow_prebuilt_binaries` is turned on,
the dependecies that are managed by Conan
will be built from the source code every time
cmake configuartion changes
... use more indirect notifications to the frame that it needs updates.
One notification to update the window when text is flushed in the logger.
Another to update the window for changes in language preferences.