diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-01-27 13:22:55 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-01-27 13:22:55 +0000 |
commit | 98ade9348a803996529758d782e1595f916122e3 (patch) | |
tree | cea55d938f10e6046e9cea8b7a3f5e6a6fbd412b /libs/ardour/ardour | |
parent | 5e8403ff69b12353c9d71d72690a261bf5b7b059 (diff) |
rework design of midi clock ticker to avoid expensive generalization that has turned out to have no particular use, and fix bug that caused incorrect ticks to be sent (or attempted) as the transport starts up
git-svn-id: svn://localhost/ardour2/branches/3.0@11359 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/session.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/ticker.h | 36 |
2 files changed, 10 insertions, 32 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index ee9c457ca4..fef6b7232e 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -104,6 +104,7 @@ class Graph; class IO; class IOProcessor; class ImportStatus; +class MidiClockTicker; class MidiControlUI; class MidiRegion; class MidiSource; @@ -513,9 +514,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi TempoMap& tempo_map() { return *_tempo_map; } - /// signals the current transport position in frames, bbt and timecode time (in that order) - PBD::Signal3<void, const framepos_t &, const Timecode::BBT_Time&, const Timecode::Time&> tick; - /* region info */ boost::shared_ptr<Region> find_whole_file_parent (boost::shared_ptr<Region const>) const; @@ -1520,6 +1518,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi uint32_t next_control_id () const; bool ignore_route_processor_changes; + + MidiClockTicker* midi_clock; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/ticker.h b/libs/ardour/ardour/ticker.h index 07aa1cc522..144d85f601 100644 --- a/libs/ardour/ardour/ticker.h +++ b/libs/ardour/ardour/ticker.h @@ -18,6 +18,7 @@ $Id$ */ +#include <boost/noncopyable.hpp> #include "pbd/signals.h" @@ -37,40 +38,17 @@ namespace ARDOUR class Session; -class Ticker : public SessionHandlePtr +class MidiClockTicker : public SessionHandlePtr, boost::noncopyable { public: - Ticker() {}; - virtual ~Ticker() {} - - virtual void tick ( - const framepos_t& transport_frames, - const Timecode::BBT_Time& transport_bbt, - const Timecode::Time& transport_timecode) = 0; - - void set_session (Session* s); -}; - -class MidiClockTicker : public Ticker -{ - /// Singleton -private: - MidiClockTicker() : _midi_port(0), _ppqn(24), _last_tick(0.0) {}; - MidiClockTicker( const MidiClockTicker& ); - MidiClockTicker& operator= (const MidiClockTicker&); - -public: + MidiClockTicker (); virtual ~MidiClockTicker() {}; - static MidiClockTicker& instance() { - static MidiClockTicker _instance; - return _instance; - } + void tick (const framepos_t& transport_frames, + const Timecode::BBT_Time& transport_bbt, + const Timecode::Time& transport_timecode); - void tick( - const framepos_t& transport_frames, - const Timecode::BBT_Time& transport_bbt, - const Timecode::Time& transport_timecode); + bool has_midi_port() const { return _midi_port != 0; } void set_session (Session* s); void session_going_away(); |