summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-11-11 03:22:41 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-11-11 03:22:41 +0000
commit55b143d013166cf5c869f589b4f1ee3539ac5f09 (patch)
tree016712040db0921dde049067e86c9481f4a1c6d3 /gtk2_ardour
parent90263f9a6dcec5de1bf6cd305d194118333a81ef (diff)
fix reload of region gain envelopes, freeze works from start ... end instead of zero ... end; prep for bouncing-before-tape-mode
git-svn-id: svn://localhost/ardour2/trunk@1105 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/route_time_axis.cc24
-rw-r--r--gtk2_ardour/route_time_axis.h1
2 files changed, 21 insertions, 4 deletions
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index ab8ebb32b5..7ae1f860fc 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -480,8 +480,6 @@ RouteTimeAxisView::set_track_mode (TrackMode mode)
RadioMenuItem* item;
RadioMenuItem* other_item;
- cerr << "STM, mode = " << mode;
-
switch (mode) {
case ARDOUR::Normal:
item = normal_track_mode_item;
@@ -498,10 +496,28 @@ RouteTimeAxisView::set_track_mode (TrackMode mode)
}
if (item->get_active () && track()->mode() != mode) {
- if (track()->set_mode (mode)) {
- Glib::signal_idle().connect (bind (sigc::ptr_fun (__reset_item), other_item));
+ _set_track_mode (track(), mode, other_item);
+ }
+}
+
+void
+RouteTimeAxisView::_set_track_mode (Track* track, TrackMode mode, RadioMenuItem* reset_item)
+{
+ bool needs_bounce;
+
+ if (!track->can_use_mode (mode, needs_bounce)) {
+
+ if (!needs_bounce) {
+ /* cannot be done */
+ Glib::signal_idle().connect (bind (sigc::ptr_fun (__reset_item), reset_item));
+ return;
+ } else {
+ cerr << "would bounce this one\n";
+ return;
}
}
+
+ track->set_mode (mode);
}
void
diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h
index 4a6f89e0af..cefe954c9a 100644
--- a/gtk2_ardour/route_time_axis.h
+++ b/gtk2_ardour/route_time_axis.h
@@ -234,6 +234,7 @@ protected:
ArdourCanvas::SimpleRect* timestretch_rect;
void set_track_mode (ARDOUR::TrackMode);
+ void _set_track_mode (ARDOUR::Track* track, ARDOUR::TrackMode mode, Gtk::RadioMenuItem* reset_item);
void track_mode_changed ();
list<RedirectAutomationInfo*> redirect_automation;