ardour.git
4 years agogoodbye USE_TRACKS_CODE_FEATURES and is_tracks_build
Paul Davis [Wed, 25 Sep 2019 18:16:13 +0000 (12:16 -0600)]
goodbye USE_TRACKS_CODE_FEATURES and is_tracks_build

4 years agoRemove ui-config mixbus ifdef's
Robin Gareus [Wed, 25 Sep 2019 14:31:52 +0000 (16:31 +0200)]
Remove ui-config mixbus ifdef's

4 years agoSome reasonable default config changes
Robin Gareus [Wed, 25 Sep 2019 13:27:02 +0000 (15:27 +0200)]
Some reasonable default config changes

4 years agoPrint LADSPA ID with debug message
Robin Gareus [Wed, 25 Sep 2019 13:16:34 +0000 (15:16 +0200)]
Print LADSPA ID with debug message

4 years agoCleanup configuration stage
Robin Gareus [Wed, 25 Sep 2019 12:13:51 +0000 (14:13 +0200)]
Cleanup configuration stage

* use print() only for errors
* use write_config_text() for normal operation
* fail if lld was requested, but not found

4 years agoConsolidate and extend "well-known" controls:
Robin Gareus [Wed, 25 Sep 2019 12:00:34 +0000 (14:00 +0200)]
Consolidate and extend "well-known" controls:

* Add new common strip controls (inspired from Mixbus)
* Remove duplicate documentation, document virtual API only.
* "azimuth" not "azi"

4 years agoFaderport: use well-known-controls API
Robin Gareus [Wed, 25 Sep 2019 10:03:06 +0000 (12:03 +0200)]
Faderport: use well-known-controls API

4 years agoadd configure-time option to use lld as the linker (on linux)
Paul Davis [Tue, 24 Sep 2019 23:36:22 +0000 (17:36 -0600)]
add configure-time option to use lld as the linker (on linux)

this cuts about 15 seconds off the total linker time on a 16 core ryzen threadripper

4 years agoMixbus backports -- part one of many
Robin Gareus [Tue, 24 Sep 2019 20:10:02 +0000 (22:10 +0200)]
Mixbus backports -- part one of many

Changes that are not explicitly #ifdef'ed should go to ardour-git.

4 years agoPrepare for plugin-control groups
Robin Gareus [Tue, 24 Sep 2019 17:48:31 +0000 (19:48 +0200)]
Prepare for plugin-control groups

This is in preparation to allow groups of "well known" controls,
the parameter ID of which is not known a-priori.

4 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Tue, 24 Sep 2019 09:20:23 +0000 (10:20 +0100)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

4 years agoAdd/remove source(s) in our MSVC project (libardour)
John Emmas [Tue, 24 Sep 2019 09:19:38 +0000 (10:19 +0100)]
Add/remove source(s) in our MSVC project (libardour)

4 years agoInclude a header file needed for Windows VST support
John Emmas [Tue, 24 Sep 2019 09:17:32 +0000 (10:17 +0100)]
Include a header file needed for Windows VST support

4 years agosplit apart ardour_ui.cc into a series of distinct source modules.
Paul Davis [Mon, 23 Sep 2019 20:49:06 +0000 (14:49 -0600)]
split apart ardour_ui.cc into a series of distinct source modules.

Should be a 100% no-op - no code was altered, just moved

4 years agofix problem with ArdourDialog::on_delete_event() not being called when appropriate...
Paul Davis [Mon, 23 Sep 2019 03:45:30 +0000 (21:45 -0600)]
fix problem with ArdourDialog::on_delete_event() not being called when appropriate during app startup

The dialog is run using gtk_dialog_run() which uses on_response() to deal with delete/close events unlike a regular
top level event loop.

Probably even better would be run run the dialog from the top level event loop, but this is a bit complex

4 years agoremove empty methods and signal connections
Paul Davis [Mon, 23 Sep 2019 01:21:18 +0000 (19:21 -0600)]
remove empty methods and signal connections

4 years agovarious changes to transportFSM, mostly to try to keep track of whether to roll-after...
Paul Davis [Sun, 22 Sep 2019 18:19:28 +0000 (12:19 -0600)]
various changes to transportFSM, mostly to try to keep track of whether to roll-after-locate (more) accurately

4 years agochange the way we clear post transport work as the butler and post-butler methods...
Paul Davis [Sun, 22 Sep 2019 18:18:36 +0000 (12:18 -0600)]
change the way we clear post transport work as the butler and post-butler methods get things done

This avoids the blanket "set_post_transport_work (PostTransportWork(0));" that never really looked right

4 years agoimprove debug output
Paul Davis [Sun, 22 Sep 2019 17:50:51 +0000 (11:50 -0600)]
improve debug output

4 years agomove all bundle-related session methods into their own file
Paul Davis [Sun, 22 Sep 2019 17:50:44 +0000 (11:50 -0600)]
move all bundle-related session methods into their own file

4 years agoadd direct access API for transportFSM and session transport speed
Paul Davis [Sun, 22 Sep 2019 17:49:59 +0000 (11:49 -0600)]
add direct access API for transportFSM and session transport speed

4 years agoremove unused PostTransportDuration and enumeration-writing for Adjust(Playback|Captu...
Paul Davis [Sun, 22 Sep 2019 17:49:19 +0000 (11:49 -0600)]
remove unused PostTransportDuration and enumeration-writing for Adjust(Playback|Capture)Buffering

4 years agoUI goto_start() action no longer forces roll-after-locate
Paul Davis [Sun, 22 Sep 2019 17:44:06 +0000 (11:44 -0600)]
UI goto_start() action no longer forces roll-after-locate

4 years agocorrect problem with some locates that would keep rolling after they are finished
Paul Davis [Fri, 20 Sep 2019 22:52:13 +0000 (16:52 -0600)]
correct problem with some locates that would keep rolling after they are finished

4 years agosplit session-bundled-related methods to their own file
Paul Davis [Fri, 20 Sep 2019 20:31:19 +0000 (14:31 -0600)]
split session-bundled-related methods to their own file

4 years agoadd const and tweak variable name
Paul Davis [Fri, 20 Sep 2019 20:12:08 +0000 (14:12 -0600)]
add const and tweak variable name

4 years agotransport master deletion is no longer in parallel with process()
Paul Davis [Fri, 20 Sep 2019 20:11:53 +0000 (14:11 -0600)]
transport master deletion is no longer in parallel with process()

4 years agouse internal seek to implement DiskReader::seek() when possible.
Paul Davis [Fri, 20 Sep 2019 20:11:07 +0000 (14:11 -0600)]
use internal seek to implement DiskReader::seek() when possible.

This still needs a check that the amount of readable data left in the buffe is adequate.

4 years agoNO-OP: whitespace
Robin Gareus [Sun, 22 Sep 2019 02:58:32 +0000 (04:58 +0200)]
NO-OP: whitespace

4 years agoOptimize Audio-buffer summing
Robin Gareus [Sun, 22 Sep 2019 02:54:28 +0000 (04:54 +0200)]
Optimize Audio-buffer summing

* skip silent buffers
* use vectorized copy
* prefer memset for zero-gain

4 years agoRemove unused method
Robin Gareus [Sun, 22 Sep 2019 02:52:26 +0000 (04:52 +0200)]
Remove unused method

4 years agoProperly initialize BusSendEnable min/max
Robin Gareus [Sun, 22 Sep 2019 02:15:36 +0000 (04:15 +0200)]
Properly initialize BusSendEnable min/max

4 years agoNO-OP: cleanup code
Robin Gareus [Sun, 22 Sep 2019 02:15:01 +0000 (04:15 +0200)]
NO-OP: cleanup code

4 years agoFix latency-measurement port-name display
Robin Gareus [Fri, 20 Sep 2019 21:30:05 +0000 (23:30 +0200)]
Fix latency-measurement port-name display

In case there are no pretty-names, a blank text was displayed

4 years agoAdd abstract API for latency compensated sends
Robin Gareus [Fri, 20 Sep 2019 18:25:04 +0000 (20:25 +0200)]
Add abstract API for latency compensated sends

This is in preparation for MixbusSends that are not derived from
Delivery : IOProcessor.

4 years agodo not abort in the event that we cannot internal-seek to align with the playhead.
Paul Davis [Fri, 20 Sep 2019 19:02:46 +0000 (13:02 -0600)]
do not abort in the event that we cannot internal-seek to align with the playhead.

There are no good options here, but treating it like a regular underrun seems as good as anything

4 years agobetter initial value
Paul Davis [Fri, 20 Sep 2019 18:36:23 +0000 (12:36 -0600)]
better initial value

4 years agoremove debug output
Paul Davis [Fri, 20 Sep 2019 18:19:25 +0000 (12:19 -0600)]
remove debug output

4 years agofix crash when doing rapid (ongoing-locate-interrupting) locates
Paul Davis [Fri, 20 Sep 2019 18:18:49 +0000 (12:18 -0600)]
fix crash when doing rapid (ongoing-locate-interrupting) locates

4 years agomove TransportFSM::enqueue() into .cc file
Paul Davis [Fri, 20 Sep 2019 18:17:22 +0000 (12:17 -0600)]
move TransportFSM::enqueue() into .cc file

4 years agoat transport stop, reset FSM's idea of the last locate target (also removes const...
Paul Davis [Fri, 20 Sep 2019 18:16:50 +0000 (12:16 -0600)]
at transport stop, reset FSM's idea of the last locate target (also removes const from method)

4 years agofix commented out decision on whether or not to hide/show sysexes in MIDI regions
Paul Davis [Fri, 20 Sep 2019 18:11:33 +0000 (12:11 -0600)]
fix commented out decision on whether or not to hide/show sysexes in MIDI regions

4 years agoHandle an unused edge-case
Robin Gareus [Fri, 20 Sep 2019 17:40:29 +0000 (19:40 +0200)]
Handle an unused edge-case

In practice PanControllable::owner cannot be NULL, but in theory it
could be (and might be for Mixbus6 internal panning).

4 years agoFix Latency Measurement without device re-start
Robin Gareus [Fri, 20 Sep 2019 17:38:34 +0000 (19:38 +0200)]
Fix Latency Measurement without device re-start

This handles a case when the engine was started normally
(not for latency measurement), and measurement is performed later.
This resulted in a duplicate backend start

4 years agoconst-ify TransportFSM
Paul Davis [Fri, 20 Sep 2019 15:44:15 +0000 (09:44 -0600)]
const-ify TransportFSM

4 years agorename TransportFSM::FSMEvent to TransportFSM::Event (c/o the Department of Redundanc...
Paul Davis [Fri, 20 Sep 2019 15:38:09 +0000 (09:38 -0600)]
rename TransportFSM::FSMEvent to TransportFSM::Event (c/o the Department of Redundancy Department)

4 years agoadd an important comment about transportFSM being single-thread and synchronous
Paul Davis [Fri, 20 Sep 2019 15:35:08 +0000 (09:35 -0600)]
add an important comment about transportFSM being single-thread and synchronous

4 years agouse boost::intrusive to manage FSM events (this is all RT code)
Paul Davis [Fri, 20 Sep 2019 15:33:24 +0000 (09:33 -0600)]
use boost::intrusive to manage FSM events (this is all RT code)

4 years agoexpand comment
Paul Davis [Fri, 20 Sep 2019 14:21:14 +0000 (08:21 -0600)]
expand comment

4 years agoRemove my BOOST_MPL declarations (as BOOST_MPL seems to have been removed more generally)
John Emmas [Fri, 20 Sep 2019 10:32:58 +0000 (11:32 +0100)]
Remove my BOOST_MPL declarations (as BOOST_MPL seems to have been removed more generally)

4 years agoremove compiler flags required only by boost::msm and a large transition table
Paul Davis [Fri, 20 Sep 2019 04:34:02 +0000 (22:34 -0600)]
remove compiler flags required only by boost::msm and a large transition table

4 years agoreplace boost::msm - based FSM for transport with one written in "plain C++"
Paul Davis [Fri, 20 Sep 2019 04:33:43 +0000 (22:33 -0600)]
replace boost::msm - based FSM for transport with one written in "plain C++"

Still need to use boost::intrusive to managed qeued/deferred containers

4 years agoFix LV2 state:loadDefaultState
Robin Gareus [Wed, 18 Sep 2019 16:40:02 +0000 (18:40 +0200)]
Fix LV2 state:loadDefaultState

lilv_state_restore() needs to be called unconditionally (regardless
if a plugin actually has a state-interface) to set port and properties.
It has to be called after ports are enumerated and supported
properties are loaded.

4 years agodon't bother following playhead priority during session loading
Paul Davis [Wed, 18 Sep 2019 16:08:32 +0000 (10:08 -0600)]
don't bother following playhead priority during session loading

4 years agodeepen stack trace when checking non-RT RT calls
Paul Davis [Wed, 18 Sep 2019 16:08:20 +0000 (10:08 -0600)]
deepen stack trace when checking non-RT RT calls

4 years agoAdd missing break (VST-key forwarding)
Robin Gareus [Wed, 18 Sep 2019 15:28:35 +0000 (17:28 +0200)]
Add missing break (VST-key forwarding)

4 years agoNO-OP: fix some Wimplicit-fallthrough, see prev commit
Robin Gareus [Wed, 18 Sep 2019 15:27:56 +0000 (17:27 +0200)]
NO-OP: fix some Wimplicit-fallthrough, see prev commit

4 years agoNO-OP: fix some Wimplicit-fallthrough
Robin Gareus [Wed, 18 Sep 2019 15:27:09 +0000 (17:27 +0200)]
NO-OP: fix some Wimplicit-fallthrough

gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.

see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

4 years agoIntroduce the BOOST_MPL stuff (though it all seems a bit flaky with MSVC...)
John Emmas [Wed, 18 Sep 2019 14:08:26 +0000 (15:08 +0100)]
Introduce the BOOST_MPL stuff (though it all seems a bit flaky with MSVC...)

4 years agoRemove a (no longer needed) source file from our MSVC project (evoral)
John Emmas [Wed, 18 Sep 2019 14:05:16 +0000 (15:05 +0100)]
Remove a (no longer needed) source file from our MSVC project (evoral)

4 years agoAdd/remove source(s) in our MSVC project (libardour)
John Emmas [Wed, 18 Sep 2019 14:03:51 +0000 (15:03 +0100)]
Add/remove source(s) in our MSVC project (libardour)

4 years agoFix OSX builds: undef Apples's odd nil macro
Robin Gareus [Wed, 18 Sep 2019 04:23:40 +0000 (06:23 +0200)]
Fix OSX builds: undef Apples's odd nil macro

4 years agoConsistent use of abort() /* NOTREACHED */
Robin Gareus [Wed, 18 Sep 2019 03:57:26 +0000 (05:57 +0200)]
Consistent use of abort() /* NOTREACHED */

This fixes some static analysis warnings:
PBD::fatal transmitter needs to be connected to a function
that aborts. This is usually the case with GUI

4 years agoFix Wdeprecated, dynamic exception
Robin Gareus [Wed, 18 Sep 2019 02:43:09 +0000 (04:43 +0200)]
Fix Wdeprecated, dynamic exception

Dynamic exception specifications are deprecated in C++11,
and were removed in C++17.

4 years agoRemove old unused source file
Robin Gareus [Wed, 18 Sep 2019 02:37:12 +0000 (04:37 +0200)]
Remove old unused source file

4 years agoAdd missing i18n include (after 7f3f2018334)
Robin Gareus [Wed, 18 Sep 2019 02:32:51 +0000 (04:32 +0200)]
Add missing i18n include (after 7f3f2018334)

4 years agoRe-order includes
Robin Gareus [Wed, 18 Sep 2019 02:14:31 +0000 (04:14 +0200)]
Re-order includes

* external, system-wide first <>
* next "pbd/*"
...

4 years agoRemove "i18n.h" include from header - fix builds
Robin Gareus [Wed, 18 Sep 2019 02:09:26 +0000 (04:09 +0200)]
Remove "i18n.h" include from header - fix builds

i18n alsways needs to be included last. This fixes an ambiguity of "_"

boost/function_types/detail/class_transform.hpp:23:26:
 error: ‘boost::mpl::placeholders::_’ has not been declared
 using mpl::placeholders::_;

4 years agodeepen stacktrace to show where non-process calls to supposedly process-stack-only...
Paul Davis [Wed, 18 Sep 2019 01:16:53 +0000 (19:16 -0600)]
deepen stacktrace to show where non-process calls to supposedly process-stack-only methods are called

4 years agoadd finite state machine to control/manage transport state
Paul Davis [Wed, 18 Sep 2019 00:26:03 +0000 (18:26 -0600)]
add finite state machine to control/manage transport state

4 years agocorrect mistakenly left-in debugging condition that removed parallelism for PortManag...
Paul Davis [Wed, 18 Sep 2019 00:20:51 +0000 (18:20 -0600)]
correct mistakenly left-in debugging condition that removed parallelism for PortManager::cycle_start()

4 years agominor tweaks to use initialization rather than assignment
Paul Davis [Wed, 27 Mar 2019 16:58:12 +0000 (09:58 -0700)]
minor tweaks to use initialization rather than assignment

4 years agoremove unused local variable
Paul Davis [Mon, 8 Jul 2019 15:59:14 +0000 (09:59 -0600)]
remove unused local variable

4 years agofix thinko when testing for internal seek with negative distance
Paul Davis [Thu, 5 Sep 2019 20:04:20 +0000 (14:04 -0600)]
fix thinko when testing for internal seek with negative distance

4 years agouse const int rather than macro
Paul Davis [Thu, 11 Jul 2019 15:15:42 +0000 (09:15 -0600)]
use const int rather than macro

4 years agoparametize the maximum transport speed.
Paul Davis [Thu, 11 Jul 2019 05:32:14 +0000 (23:32 -0600)]
parametize the maximum transport speed.

No GUI to adjust this at this, nor is any planned. This just makes it easier if
we ever feel we can change this.

4 years agoresize audio port _data buffer based on current buffer size
Paul Davis [Thu, 11 Jul 2019 05:39:02 +0000 (23:39 -0600)]
resize audio port _data buffer based on current buffer size

4 years agomanually correct cherry-pick of cdbabe40ed4e
Paul Davis [Mon, 8 Jul 2019 16:01:25 +0000 (10:01 -0600)]
manually correct cherry-pick of cdbabe40ed4e

4 years agoadd new port flag to identify those owned by a transport master
Paul Davis [Mon, 8 Jul 2019 15:58:01 +0000 (09:58 -0600)]
add new port flag to identify those owned by a transport master

These ports are handled without SRC

4 years agoadd ::usable() method to TransportMaster objects to allow GUI to show their usability...
Paul Davis [Mon, 16 Sep 2019 19:46:06 +0000 (13:46 -0600)]
add ::usable() method to TransportMaster objects to allow GUI to show their usability after backend/engine changes

4 years agoCorrectly handle Zoom > Edit-point > Mouse
Robin Gareus [Tue, 17 Sep 2019 14:56:15 +0000 (16:56 +0200)]
Correctly handle Zoom > Edit-point > Mouse

Previously this failed if the event was initiated outside
of the canvas (e.g. Zoom buttons).

This also fixes a special case of Zooming to an edit-point at zero.

4 years agofoldback gui: removed mute, solo button hide in SIP
Len Ovens [Mon, 16 Sep 2019 23:23:01 +0000 (16:23 -0700)]
foldback gui: removed mute, solo button hide in SIP

Mute removed, Solo renamed to listen only shows when
not in SIP mode.

4 years agoClarify splash-screen boot messages
Robin Gareus [Mon, 16 Sep 2019 20:56:54 +0000 (22:56 +0200)]
Clarify splash-screen boot messages

Parsing MIDNAM is what takes the most time.

"Reset Remote Controls" message is misleading (it means MMC), not
control-surfaces, which a user may have none.

4 years agoFoldback gui: desensitize solo button when in SIP mode
Len Ovens [Sun, 15 Sep 2019 21:48:09 +0000 (14:48 -0700)]
Foldback gui: desensitize solo button when in SIP mode

Because foldback by design goes to physical outputs
rather than master or monitor, SIP solo does not work
or make sense. PFL/AFL allow a foldback to be rough
adjusted using the control room monitoring.

A soloed Foldback bus will be released when the foldback
strip is switched to a different foldback bus

4 years agoFoldback gui:Removed unused calls and parameters
Len Ovens [Sun, 15 Sep 2019 14:00:11 +0000 (07:00 -0700)]
Foldback gui:Removed unused calls and parameters

4 years agoSet Foldback strip width and ellipsize to work
Len Ovens [Sat, 14 Sep 2019 17:19:01 +0000 (10:19 -0700)]
Set Foldback strip width and ellipsize to work

4 years agodesensitize foldback show unless there is a foldback bus
Len Ovens [Fri, 13 Sep 2019 15:18:35 +0000 (08:18 -0700)]
desensitize foldback show unless there is a foldback bus

The view menu should not show the foldback item
if there is no foldback bus available.

4 years agoUse new icons in mixer window
Robin Gareus [Thu, 12 Sep 2019 21:35:57 +0000 (23:35 +0200)]
Use new icons in mixer window

4 years agoAdd new icons: hide, prev/next
Robin Gareus [Thu, 12 Sep 2019 21:30:48 +0000 (23:30 +0200)]
Add new icons: hide, prev/next

4 years agofoldback gui: simplify foldback strip menus
Len Ovens [Thu, 12 Sep 2019 19:44:38 +0000 (12:44 -0700)]
foldback gui: simplify foldback strip menus

This uses less code and fixes the odd crash as well
(there was sometimes a crash when using the send
display context menu)

4 years agofoldback gui: simplify button code where possible
Len Ovens [Thu, 12 Sep 2019 16:39:38 +0000 (09:39 -0700)]
foldback gui: simplify button code where possible

use signal_clicked rather than signal_button_press_event
for cases where a menu is not launched.

4 years agoFoldback gui: Added hide and show
Len Ovens [Wed, 11 Sep 2019 23:36:05 +0000 (16:36 -0700)]
Foldback gui: Added hide and show

- New menu item in view menu
- Foldback strip has hide button
- Adding a new foldback bus sets show
- setting is saved and restored

4 years agofoldback gui: added tool tips for previous and next
Len Ovens [Wed, 11 Sep 2019 04:40:39 +0000 (21:40 -0700)]
foldback gui: added tool tips for previous and next

4 years agoFoldback gui: previous and next buttons don't wrap around
Len Ovens [Wed, 11 Sep 2019 04:09:54 +0000 (21:09 -0700)]
Foldback gui: previous and next buttons don't wrap around

I had set the previous next buttons to wrap around
but Robin felt dead ending was better. The previous
button becomes insensitive when the first foldback bus
is displayed and next is insensitive when the last is
displayed.

4 years agoFoldback GUI: sort send controls by mixer order
Len Ovens [Wed, 11 Sep 2019 02:26:00 +0000 (19:26 -0700)]
Foldback GUI: sort send controls by mixer order

also found send button name did not follow sending
route name after change and tool tip was wrong. Fixed
both.

4 years agoWho needs semicolons?
Robin Gareus [Wed, 11 Sep 2019 01:00:26 +0000 (03:00 +0200)]
Who needs semicolons?

4 years agoAU: fix optional buffers
Robin Gareus [Wed, 11 Sep 2019 00:40:57 +0000 (02:40 +0200)]
AU: fix optional buffers

The spec [1] says:
 "If the mData pointers are null, the audio unit can
  provide pointers to its own buffers. In this case,
  the audio unit must keep those buffers valid for
  the duration of the calling thread’s I/O cycle."

A plugin *can* do this, but it does not need to. An extra
NULL test is required.

furthermore [2] specifies

 "mDataByteSize -  The number of bytes in the buffer pointed
  at by the mData field."

In case the host does not provide any buffers, this is obviously zero.

[1] https://developer.apple.com/documentation/audiotoolbox/1438430-audiounitrender?language=objc
[2] https://developer.apple.com/documentation/coreaudiotypes/audiobuffer?language=objc

4 years agoAU: don't consider in-place if there are no inputs
Robin Gareus [Wed, 11 Sep 2019 00:31:19 +0000 (02:31 +0200)]
AU: don't consider in-place if there are no inputs

4 years agoFoldback GUI: size and position tweaks
Len Ovens [Tue, 10 Sep 2019 23:08:24 +0000 (16:08 -0700)]
Foldback GUI: size and position tweaks

 - Set width so added pan controls in send controls don't change size
 - output button shows only ports applicable to foldback use
 - Size text to leave widget width alone
 - Center level control
 -

4 years agoAdd note about Denormal protection pref changes
Robin Gareus [Tue, 10 Sep 2019 15:03:16 +0000 (17:03 +0200)]
Add note about Denormal protection pref changes

Modifications to the MXCSR register are pre thread. Changing this
setting only directly affects the GUI thread.