These changes compile okay for me (using VS2019) although they wouldn't link to my older-built libraries. Hopefully he'll be okay if he builds everything with the same compiler.
There are two problem cases:
1) the drag "fake-located" the playhead, but a redraw happens before the locate itself finishes.
2) the transport emits Session::PositionChanged from Session::non_realtime_stop(), even though
this is occuring in the "middle" of the locate process (we stop first).
In the first case, the drag code sets _pending_locate_request, since we need this to be true even
before the queued SessionEvent for the locate has been processed. So to deal with this case
In the second case, we use Session::locate_initiated() to decide if we're in the middle of a locate.
The drag code expects coordinates in canvas coordinates, but we were not translating them at the editor level (canvas event handling
does do this, but cannot affect the situation if the event falls through to the editor)
This always leads to feedback situations. It may be acceptable
via the "allow feedback" option and accepting 1 cycle delay.
yet Aux-sends from the master bus are just bad practice,
and no found on any mixing desk.
Sends do not have any ports, so a unique name is not required.
Since 82541b33a4 custom aux names are kept when setting state.
Previously this "worked" because set_state() change the name
of the new aux-send to the name of the target-bus.
build_control_ui() special cases `AutomationControl mcontrol = NULL`
to create read-only output display. So Iterating over
Evoral::Control that are not AutomationControl must not crash.
This fixes a bug introduced in a44fecb740.
"Edit with generic controls" caused crashes for plugins with ctrl outs.
Note that this is done at the GUI level, might need to double check if there are
other paths into a "save" that should be covered. Control surfaces use the action, but
Lua comes to mind