where possible audio devices that disappear are not forgotten until
the user selects another device, this should allow temporarily missing
devices or forgetting to switch on devices before starting WSJT-X to
be handled more cleanly. If all else fails, visiting the Settings
dialog and clicking OK should get things going again. Note that we
still do not have a reliable way of detecting failed audio out
devices, in that case selecting another device and then returning to
the original should work.
Enumerating audio devices is expensive and on Linux may take many
seconds per device. To avoid lengthy blocking behaviour until it is
absolutely necessary, audio devices are not enumerated until one of
the "Settings->Audio" device drop-down lists is opened. Elsewhere when
devices must be discovered the enumeration stops as soon as the
configured device is discovered. A status bar message is posted when
audio devices are being enumerated as a reminder that the UI may block
while this is happening.
The message box warning about unaccounted-for input audio samples now
only triggers when >5 seconds of audio appears to be missing or over
provided. Hopefully this will make the warning less annoying for those
that are using audio sources with high and/or variable latencies. A
status bar message is still posted for any amount of audio input
samples unaccounted for >1/5 second, this message appearing a lot
should be considered as notification that there is a problem with the
audio sub-system, system load is too high, or time synchronization is
stepping the PC clock rather than adjusting the frequency to maintain
monotonic clock ticks.
uses a settings file to define log sink back-ends, by default uses
:/wsjtx_log_config.ini from the resources file-system. Users may
override by placing their own wsjtx_log_config.ini into the WSJT-X
config location. The settings file format is as described in the Boost
log
documentation (https://www.boost.org/doc/libs/1_74_0/libs/log/doc/html/log/detailed/utilities.html#log.detailed.utilities.setup.settings_file)
with the additional feature that allows some pre-defined variables to
be expanded. The predefined variables refer to standard locations in
the file-system, and allow log files and rotation target directory
paths to be specified. The pre-defined variables are:
DesktopLocation
DocumentsLocation
TempLocation
HomeLocation
CacheLocation
GenericCacheLocation
GenericDataLocation
AppDataLocation
and must be used enclosed on braces and preceded by a '$'
character. E.g. to define the pattern for a sink's log file:
FileName="${AppLocalDataLocation}/wsjtx_syslog.log"
this would place the log file wsjtx_syslog.log in the WSJT-X log files
directory, on all platforms.
Requires Boost libraries to be available as an external library.
On Debian style Linux distributions:
sudo apt install boost-dev-all
On Red Hat style Linux distributions:
sudo dnf install boost-dev
On macOS install Boost from a suitable Open Source package manager,
e.g. MacPorts:
sudo port install boost
If building WSJT-X packages on macOS for distribution you must build
boost and its dependants from sources with a suitable macports.conf
file specifying the target macOS version (10.12 at present). To build
Boost from sources in this case:
sudo port -s install boost
On MS Windows boost must be built from sources using the correct MinGW
compilers, i.e. the Qt tools 32- or 64-bit g++ for each target
bit-width respectively. To build boost something along the lines of
the following recipe should be used:
1) Download the boost ZIP source archive from
https://sourceforge.net/projects/boost/, the latest release should be
OK, at the time of writing that was 1.74,
2) create a directory for the sources:
MKDIR C:\boost-install
and extract the boost sources there.
3) Bootstrap and build Boost.Build. If you are building both 32- and
64-bit variants then do this twice, each from the correct MinGW
terminal session for the necessary tool-chain. Specify a unique
install directory for each variant (--prefix=). I use C:\Tools as a
root directory for external libraries and tools, choose whatever suits
your development environment.
CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW32" install
CD C:\boost-install\boost_1_74_0\tools\build
bootstrap.bat gcc
b2 --prefix="C:\Tools\boost-build\MinGW64" install
4) Build Boost. If you are building both 32- and 64-bit variants then
do this twice, each from the correct MinGW terminal session for the
necessary tool-chain. Specify a unique build and install directory for
each variant (--build-dir= and --prefix=). I use C:\Tools as a root
directory for external libraries and tools, choose whatever suits your
development environment.
SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
--build-type=complete ^
--prefix="C:\Tools\boost\MinGW32" ^
toolset=gcc install
SET Path=%Path%;C:\Tools\boost-build\MinGW32\bin
CD C:\boost-install\boost_1_74_0
b2 --build-dir="C:\boost-install\boost_1_74_0\build" ^
--build-type=complete ^
--prefix="C:\Tools\boost\MinGW32" ^
toolset=gcc address-model=64 install
5) Once successfully built the sources directory and build trees
within can be deleted. The build products are contained in the install
directories (C:\Tools\boost-build and C:\Tools\boost in my case).
6) Update your development environment to include the boost headers
and libraries. In my case I have scripts that set up 32- and 64-bit
environments, they need to be modified to include the appropriate
boost library directories on the Path environment variable so that
applications linked to Boost libraries can locate the DLLs. For
32-bit:
SET Path=C:\Tools\boost\MinGW32\lib;%Path%
For 64-bit:
SET Path=C:\Tools\boost\MinGW64\lib;%Path%
7) To build WSJT-X CMake will need to be able to locate the Boost
libraries. I do that using tool-chain files for each of 32- and 64-bit
in both Debug and Release configurations which are passed to the CMake
configuration invocation using the -DCMAKE_TOOLCHAIN_FILE= variable
assignment. In the tool-chain files you need to add the appropriate
Boost installation directory to the CMAKE_PREFIX_PATH variable,
something like:
set (BOOSTDIR C:/Tools/boost/MinGW32)
...
set (CMAKE_PREFIX_PATH ${BOOSTDIR} ${QTDIR} ...
adjust as needed for 32- or 64-bit variants.