mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
Mirror of Ardour Source Code
The crashed previously because:
A VCA is-a Automatable is-a Evoral::ControlSet
After VCA's d'tor completes ~Automatable runs and emits signal to
DropReferences of all master-controls.
This in turn calls SlavableAutomationControl::master_going_away()
for slaved parameters for the given master-control
In ::master_going_away() the weak-pointer reference to the master's
AutomationControl (owned by the destroyed VCA) is still valid.
Execution is in the d'tor of Automatable which is-a ControlSet and
the ContolSet keeps a reference to the Control and hence also to the
AutomationControl which is-a Evoral::Control.
So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
which is actually the MuteControl owned by the VCA.
It calls SlavableAutomationControl::remove_master() which
in turn calls MuteControl::pre_remove_master() which uses the
MuteMaster API to retrieve the value. The MuteMaster however is the
VCA that has just been destroyed.
The solution is twofold:
1) emit "drop_references" from the VCA d'tor itself,
before the VCA is destroyed.
2) disconnect a slaved control from the master's drop_references signal
when un-assigning a master-control.
|
||
|---|---|---|
| doc | ||
| export | ||
| gtk2_ardour | ||
| headless | ||
| libs | ||
| mcp | ||
| midi_maps | ||
| msvc_extra_headers | ||
| MSVCardour3 | ||
| MSVCMixbus3 | ||
| MSVCvst_scan | ||
| osc | ||
| patches | ||
| patchfiles | ||
| scripts | ||
| session_utils | ||
| templates | ||
| tools | ||
| vst | ||
| .dir-locals.el | ||
| .gitattributes | ||
| .gitignore | ||
| ardour-3.ttl | ||
| ardour.1 | ||
| ardour.1.es | ||
| ardour.1.fr | ||
| ardour.1.ru | ||
| COPYING | ||
| instant.xml | ||
| instant.xml.sae | ||
| msvc32-fixup.pl | ||
| PACKAGER_README | ||
| README | ||
| README-GITHUB.txt | ||
| system_config | ||
| testfile.flac | ||
| testfile.ogg | ||
| TRANSLATORS | ||
| waf | ||
| wscript | ||
Please see the Ardour web site at http://ardour.org/ for all documentation..
For information on building ardour:
http://ardour.org/development.html