summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-01-16 19:42:04 +0100
committerRobin Gareus <robin@gareus.org>2017-01-16 19:54:42 +0100
commit88d797bd6424f9cdbf48a26e0913965a6f102363 (patch)
tree3736b9e7b96c7fa61e6cd2914b23eb7fe24fe10c /libs
parent88b3aa926a82ff103d8440e89e28b202a450e18f (diff)
Prepare session-wide implicit monitoring overrides
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/session_configuration_vars.h1
-rw-r--r--libs/ardour/ardour/types.h2
-rw-r--r--libs/ardour/enums.cc14
-rw-r--r--libs/ardour/session_state.cc4
-rw-r--r--libs/ardour/track.cc11
5 files changed, 31 insertions, 1 deletions
diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h
index 25c2b61186..db789553cb 100644
--- a/libs/ardour/ardour/session_configuration_vars.h
+++ b/libs/ardour/ardour/session_configuration_vars.h
@@ -36,6 +36,7 @@ CONFIG_VARIABLE (bool, auto_return, "auto-return", false)
CONFIG_VARIABLE (bool, auto_input, "auto-input", true)
CONFIG_VARIABLE (bool, punch_in, "punch-in", false)
CONFIG_VARIABLE (bool, punch_out, "punch-out", false)
+CONFIG_VARIABLE (MonitorChoice, session_monitoring, "session-monitoring", MonitorAuto)
CONFIG_VARIABLE (bool, layered_record_mode, "layered-record-mode", false)
CONFIG_VARIABLE (uint32_t, subframes_per_frame, "subframes-per-frame", 100)
CONFIG_VARIABLE (Timecode::TimecodeFormat, timecode_format, "timecode-format", Timecode::timecode_30)
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index 9a7b719111..46ef2bade9 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -721,6 +721,7 @@ std::istream& operator>>(std::istream& o, ARDOUR::AutoConnectOption& sf);
std::istream& operator>>(std::istream& o, ARDOUR::TracksAutoNamingRule& sf);
std::istream& operator>>(std::istream& o, ARDOUR::EditMode& sf);
std::istream& operator>>(std::istream& o, ARDOUR::MonitorModel& sf);
+std::istream& operator>>(std::istream& o, ARDOUR::MonitorChoice& sf);
std::istream& operator>>(std::istream& o, ARDOUR::PFLPosition& sf);
std::istream& operator>>(std::istream& o, ARDOUR::AFLPosition& sf);
std::istream& operator>>(std::istream& o, ARDOUR::ListenPosition& sf);
@@ -744,6 +745,7 @@ std::ostream& operator<<(std::ostream& o, const ARDOUR::AutoConnectOption& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::TracksAutoNamingRule& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::EditMode& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorModel& sf);
+std::ostream& operator<<(std::ostream& o, const ARDOUR::MonitorChoice& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::PFLPosition& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::AFLPosition& sf);
std::ostream& operator<<(std::ostream& o, const ARDOUR::ListenPosition& sf);
diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc
index db8aeb17b2..c2a2a32801 100644
--- a/libs/ardour/enums.cc
+++ b/libs/ardour/enums.cc
@@ -833,6 +833,20 @@ std::ostream& operator<<(std::ostream& o, const TracksAutoNamingRule& var)
return o << s;
}
+std::istream& operator>>(std::istream& o, MonitorChoice& var)
+{
+ std::string s;
+ o >> s;
+ var = (MonitorChoice) string_2_enum (s, var);
+ return o;
+}
+
+std::ostream& operator<<(std::ostream& o, const MonitorChoice& var)
+{
+ std::string s = enum_2_string (var);
+ return o << s;
+}
+
std::istream& operator>>(std::istream& o, MonitorModel& var)
{
std::string s;
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index bae1f46d01..b4b08de44d 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -3907,11 +3907,13 @@ Session::config_changed (std::string p, bool ours)
} else if (p == "auto-loop") {
+ } else if (p == "session-monitoring") {
+
} else if (p == "auto-input") {
if (Config->get_monitoring_model() == HardwareMonitoring && transport_rolling()) {
/* auto-input only makes a difference if we're rolling */
- set_track_monitor_input_status (!config.get_auto_input());
+ set_track_monitor_input_status (!config.get_auto_input());
}
} else if (p == "punch-in") {
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 7cdca70d3b..cb23943f2a 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -929,6 +929,17 @@ Track::monitoring_state () const
return MonitoringDisk;
}
+ switch (_session.config.get_session_monitoring ()) {
+ case MonitorDisk:
+ return MonitoringDisk;
+ break;
+ case MonitorInput:
+ return MonitoringInput;
+ break;
+ default:
+ break;
+ }
+
/* This is an implementation of the truth table in doc/monitor_modes.pdf;
I don't think it's ever going to be too pretty too look at.
*/