mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 19:56:31 +01:00
make "exclusive solo" apply to listen as well as SiP
git-svn-id: svn://localhost/ardour2/branches/3.0@7064 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
25704da321
commit
3fa522e5df
3 changed files with 32 additions and 6 deletions
|
|
@ -3,9 +3,13 @@
|
||||||
#include <gtkmm/scale.h>
|
#include <gtkmm/scale.h>
|
||||||
#include <gtkmm2ext/utils.h>
|
#include <gtkmm2ext/utils.h>
|
||||||
#include <gtkmm2ext/slider_controller.h>
|
#include <gtkmm2ext/slider_controller.h>
|
||||||
|
|
||||||
#include "pbd/fpu.h"
|
#include "pbd/fpu.h"
|
||||||
|
|
||||||
#include "midi++/manager.h"
|
#include "midi++/manager.h"
|
||||||
#include "midi++/factory.h"
|
#include "midi++/factory.h"
|
||||||
|
|
||||||
|
#include "ardour/audioengine.h"
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
#include "ardour/rc_configuration.h"
|
#include "ardour/rc_configuration.h"
|
||||||
#include "ardour/control_protocol_manager.h"
|
#include "ardour/control_protocol_manager.h"
|
||||||
|
|
@ -443,10 +447,10 @@ static const struct {
|
||||||
{ "Command", GDK_META_MASK },
|
{ "Command", GDK_META_MASK },
|
||||||
{ "Control", GDK_CONTROL_MASK },
|
{ "Control", GDK_CONTROL_MASK },
|
||||||
{ "Option", GDK_MOD1_MASK },
|
{ "Option", GDK_MOD1_MASK },
|
||||||
{ "Command-Shift", GDK_MOD1_MASK|GDK_SHIFT_MASK },
|
{ "Command-Shift", GDK_META_MASK|GDK_SHIFT_MASK },
|
||||||
{ "Command-Option", GDK_MOD1_MASK|GDK_MOD5_MASK },
|
{ "Command-Option", GDK_MOD1_MASK|GDK_META_MASK },
|
||||||
{ "Shift-Option", GDK_SHIFT_MASK|GDK_MOD5_MASK },
|
{ "Shift-Option", GDK_SHIFT_MASK|GDK_MOD1_MASK },
|
||||||
{ "Shift-Command-Option", GDK_MOD5_MASK|GDK_SHIFT_MASK|GDK_MOD1_MASK },
|
{ "Shift-Command-Option", GDK_MOD5_MASK|GDK_SHIFT_MASK|GDK_META_MASK },
|
||||||
|
|
||||||
#else
|
#else
|
||||||
{ "Shift", GDK_SHIFT_MASK },
|
{ "Shift", GDK_SHIFT_MASK },
|
||||||
|
|
@ -1234,7 +1238,12 @@ RCOptionEditor::RCOptionEditor ()
|
||||||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
|
sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
|
||||||
);
|
);
|
||||||
|
|
||||||
mm->add (HardwareMonitoring, _("JACK"));
|
#ifndef __APPLE__
|
||||||
|
/* no JACK monitoring on CoreAudio */
|
||||||
|
if (AudioEngine::instance()->can_request_hardware_monitoring()) {
|
||||||
|
mm->add (HardwareMonitoring, _("JACK"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
mm->add (SoftwareMonitoring, _("ardour"));
|
mm->add (SoftwareMonitoring, _("ardour"));
|
||||||
mm->add (ExternalMonitoring, _("audio hardware"));
|
mm->add (ExternalMonitoring, _("audio hardware"));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -536,11 +536,14 @@ Route::set_listen (bool yn, void* src)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_monitor_send) {
|
if (_monitor_send) {
|
||||||
|
cerr << name() << " set listen = " << yn << " current = " << _monitor_send->active() << endl;
|
||||||
if (yn != _monitor_send->active()) {
|
if (yn != _monitor_send->active()) {
|
||||||
if (yn) {
|
if (yn) {
|
||||||
_monitor_send->activate ();
|
_monitor_send->activate ();
|
||||||
} else {
|
_mute_master->set_soloed (true);
|
||||||
|
} else {
|
||||||
_monitor_send->deactivate ();
|
_monitor_send->deactivate ();
|
||||||
|
_mute_master->set_soloed (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
listen_changed (src); /* EMIT SIGNAL */
|
listen_changed (src); /* EMIT SIGNAL */
|
||||||
|
|
|
||||||
|
|
@ -2225,8 +2225,22 @@ Session::route_listen_changed (void* /*src*/, boost::weak_ptr<Route> wpr)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (route->listening()) {
|
if (route->listening()) {
|
||||||
|
|
||||||
|
if (Config->get_exclusive_solo()) {
|
||||||
|
/* new listen: disable all other listen */
|
||||||
|
shared_ptr<RouteList> r = routes.reader ();
|
||||||
|
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
||||||
|
if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_hidden()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
(*i)->set_listen (false, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_listen_cnt++;
|
_listen_cnt++;
|
||||||
|
|
||||||
} else if (_listen_cnt > 0) {
|
} else if (_listen_cnt > 0) {
|
||||||
|
|
||||||
_listen_cnt--;
|
_listen_cnt--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue