diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-08 16:28:21 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-08 16:28:21 +0000 |
commit | ff122d0fe8fde6a8a4edc71f9dbba5d161036300 (patch) | |
tree | bde7638b27de0f51ae1d02c4bf486c712abcfbe8 /libs/ardour/session_events.cc | |
parent | 660fd702af13ace2d0399e47d5e9a644a6e3a8d7 (diff) |
monster commit: transport mgmt changes from 2.X (omnibus edition); make slave use nframes64_t ; avoid crashes in Drags when commiting reversible transactions that do not exist
git-svn-id: svn://localhost/ardour2/branches/3.0@6034 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_events.cc')
-rw-r--r-- | libs/ardour/session_events.cc | 40 |
1 files changed, 7 insertions, 33 deletions
diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index 65635b773f..fb993faa68 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -23,6 +23,7 @@ #include "ardour/timestamps.h" #include "pbd/error.h" +#include "pbd/enumwriter.h" #include <glibmm/thread.h> #include "ardour/ardour.h" @@ -38,28 +39,6 @@ using namespace PBD; MultiAllocSingleReleasePool Session::Event::pool ("event", sizeof (Session::Event), 512); -static const char* event_names[] = { - "SetTransportSpeed", - "SetDiskstreamSpeed", - "Locate", - "LocateRoll", - "LocateRollLocate", - "SetLoop", - "PunchIn", - "PunchOut", - "RangeStop", - "RangeLocate", - "Overwrite", - "SetSlaveSource", - "Audition", - "InputConfigurationChange", - "SetAudioRange", - "SetMusicRange", - "SetPlayRange", - "StopOnce", - "AutoLoop" -}; - void Session::add_event (nframes_t frame, Event::Type type, nframes_t target_frame) { @@ -161,7 +140,7 @@ Session::merge_event (Event* ev) for (Events::iterator i = events.begin(); i != events.end(); ++i) { if ((*i)->type == ev->type && (*i)->action_frame == ev->action_frame) { error << string_compose(_("Session: cannot have two events of type %1 at the same frame (%2)."), - event_names[ev->type], ev->action_frame) << endmsg; + enum_2_string (ev->type), ev->action_frame) << endmsg; return; } } @@ -321,7 +300,7 @@ Session::process_event (Event* ev) switch (ev->type) { case Event::SetLoop: - set_play_loop (ev->yes_or_no, (ev->speed == 1.0f)); + set_play_loop (ev->yes_or_no); break; case Event::AutoLoop: @@ -362,7 +341,7 @@ Session::process_event (Event* ev) case Event::SetTransportSpeed: - set_transport_speed (ev->speed, ev->yes_or_no); + set_transport_speed (ev->speed, ev->yes_or_no, ev->second_yes_or_no); break; case Event::PunchIn: @@ -425,17 +404,12 @@ Session::process_event (Event* ev) break; case Event::InputConfigurationChange: - post_transport_work = PostTransportWork (post_transport_work | PostTransportInputChange); + add_post_transport_work (PostTransportInputChange); _butler->schedule_transport_work (); break; - case Event::SetAudioRange: - current_audio_range = ev->audio_range; - setup_auto_play (); - break; - - case Event::SetPlayRange: - set_play_range (ev->yes_or_no, (ev->speed == 1.0f)); + case Event::SetPlayAudioRange: + set_play_range (ev->audio_range, (ev->speed == 1.0f)); break; default: |