summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-27 05:01:07 +0200
committerRobin Gareus <robin@gareus.org>2015-04-27 17:19:57 +0200
commit36ee1681fe87d3f1d39fa52727e1dee5e2dd1322 (patch)
treea7594a7e1dd09e783d095992cc4e1cabbf1218f0 /libs/ardour
parentb7a711e385a6a8cbd4d170bae449b4785f890b23 (diff)
special case [optimize] RT processor reorder.
realtime processor re-ordering does not require a route resort nor latency compensation update. (which were done as callback in same thread)
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/types.h3
-rw-r--r--libs/ardour/route.cc2
-rw-r--r--libs/ardour/session_transport.cc6
3 files changed, 9 insertions, 2 deletions
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index 3f95d0c239..a43eb0125d 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -557,7 +557,8 @@ namespace ARDOUR {
struct RouteProcessorChange {
enum Type {
GeneralChange = 0x0,
- MeterPointChange = 0x1
+ MeterPointChange = 0x1,
+ RealTimeChange = 0x2
};
RouteProcessorChange () : type (GeneralChange), meter_visibly_changed (true)
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index a6a51c395e..5df1be71cb 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -3407,7 +3407,7 @@ Route::apply_processor_changes_rt ()
}
}
if (changed) {
- processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */
+ processors_changed (RouteProcessorChange (RouteProcessorChange::RealTimeChange)); /* EMIT SIGNAL */
set_processor_positions ();
}
}
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index b392dabcbf..e953271ead 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -1826,6 +1826,12 @@ Session::route_processors_changed (RouteProcessorChange c)
}
if (c.type == RouteProcessorChange::MeterPointChange) {
+ set_dirty ();
+ return;
+ }
+
+ if (c.type == RouteProcessorChange::RealTimeChange) {
+ set_dirty ();
return;
}