diff options
author | David Robillard <d@drobilla.net> | 2006-07-19 05:44:23 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-07-19 05:44:23 +0000 |
commit | 0cdb918d4dd409075c0e2fdc50633e7b6adb22f2 (patch) | |
tree | 0c2901a6c81dffa69a87533b70c6f8e5bffa2ed4 /libs/ardour/ardour | |
parent | 50a3102b9b533d7f8786d220f8df67421b9227c8 (diff) |
Work towards removal of Session's Diskstream list.
Havn't managed to completely remove it because of Session loading from XML - the
Diskstreams are separate from the Tracks (I assume as a throwback to when they
were distinct) so the Diskstreams need to be stored somewhere until the Tracks
are loaded. Ideally tracks should completely own their Diskstreams - not sure
how to accomplish this without breaking Session loading though...
git-svn-id: svn://localhost/ardour2/branches/midi@687 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_diskstream.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_track.h | 106 | ||||
-rw-r--r-- | libs/ardour/ardour/diskstream.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 114 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 7 | ||||
-rw-r--r-- | libs/ardour/ardour/session_diskstream.h | 42 |
6 files changed, 37 insertions, 242 deletions
diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h index 8e0f892e5a..247939b378 100644 --- a/libs/ardour/ardour/audio_diskstream.h +++ b/libs/ardour/ardour/audio_diskstream.h @@ -172,6 +172,8 @@ class AudioDiskstream : public Diskstream const PBD::ID& id() const { return _id; } + XMLNode* deprecated_io_node; + protected: friend class Session; diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index e92c11faff..b03205dfaf 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -21,7 +21,7 @@ #ifndef __ardour_audio_track_h__ #define __ardour_audio_track_h__ -#include <ardour/route.h> +#include <ardour/track.h> namespace ARDOUR { @@ -30,7 +30,7 @@ class AudioDiskstream; class AudioPlaylist; class RouteGroup; -class AudioTrack : public Route +class AudioTrack : public Track { public: AudioTrack (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); @@ -39,67 +39,39 @@ class AudioTrack : public Route int set_name (string str, void *src); - int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - - jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); - int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); - int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool can_record, bool rec_monitors_input); - - void toggle_monitor_input (); + int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); + + int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); + + int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool can_record, bool rec_monitors_input); - bool can_record() const { return true; } void set_record_enable (bool yn, void *src); - AudioDiskstream& disk_stream() const { return *_diskstream; } - int set_diskstream (AudioDiskstream&, void *); + AudioDiskstream& audio_diskstream() const; + int use_diskstream (string name); int use_diskstream (const PBD::ID& id); - TrackMode mode() const { return _mode; } void set_mode (TrackMode m); - sigc::signal<void> ModeChanged; - jack_nframes_t update_total_latency(); void set_latency_delay (jack_nframes_t); int export_stuff (vector<Sample*>& buffers, char * workbuf, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t end_frame); - sigc::signal<void,void*> diskstream_changed; - - enum FreezeState { - NoFreeze, - Frozen, - UnFrozen - }; - - FreezeState freeze_state() const; - - sigc::signal<void> FreezeChange; - void freeze (InterThreadInfo&); void unfreeze (); void bounce (InterThreadInfo&); void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); - XMLNode& get_state(); - XMLNode& get_template(); int set_state(const XMLNode& node); - PBD::Controllable& rec_enable_control() { - return _rec_enable_control; - } - bool record_enabled() const; - void set_meter_point (MeterPoint, void* src); protected: - AudioDiskstream *_diskstream; - MeterPoint _saved_meter_point; - TrackMode _mode; - XMLNode& state (bool full); void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, @@ -107,61 +79,15 @@ class AudioTrack : public Route bool meter); uint32_t n_process_buffers (); - + private: - struct FreezeRecordInsertInfo { - FreezeRecordInsertInfo(XMLNode& st) - : state (st), insert (0) {} - - XMLNode state; - Insert* insert; - PBD::ID id; - UndoAction memento; - }; - - struct FreezeRecord { - FreezeRecord() { - playlist = 0; - have_mementos = false; - } - - ~FreezeRecord(); - - AudioPlaylist* playlist; - vector<FreezeRecordInsertInfo*> insert_info; - bool have_mementos; - FreezeState state; - }; - - FreezeRecord _freeze_record; - XMLNode* pending_state; - - void diskstream_record_enable_changed (void *src); - void diskstream_input_channel_changed (void *src); - - void input_change_handler (void *src); - - sigc::connection recenable_connection; - sigc::connection ic_connection; + int set_diskstream (AudioDiskstream&, void *); - int deprecated_use_diskstream_connections (); + int deprecated_use_diskstream_connections (); void set_state_part_two (); void set_state_part_three (); - - struct RecEnableControllable : public PBD::Controllable { - RecEnableControllable (AudioTrack&); - - void set_value (float); - float get_value (void) const; - - AudioTrack& track; - }; - - RecEnableControllable _rec_enable_control; - - bool _destructive; }; -}; /* namespace ARDOUR*/ +} /* namespace ARDOUR*/ #endif /* __ardour_audio_track_h__ */ diff --git a/libs/ardour/ardour/diskstream.h b/libs/ardour/ardour/diskstream.h index f9c662203c..b595879264 100644 --- a/libs/ardour/ardour/diskstream.h +++ b/libs/ardour/ardour/diskstream.h @@ -146,9 +146,9 @@ class Diskstream : public Stateful, public sigc::trackable virtual void handle_input_change (IOChange, void *src); - sigc::signal<void,void*> record_enable_changed; - sigc::signal<void> speed_changed; - sigc::signal<void,void*> reverse_changed; + sigc::signal<void,void*> RecordEnableChanged; + sigc::signal<void> SpeedChanged; + sigc::signal<void,void*> ReverseChanged; sigc::signal<void> PlaylistChanged; sigc::signal<void> AlignmentStyleChanged; @@ -156,8 +156,6 @@ class Diskstream : public Stateful, public sigc::trackable static sigc::signal<void> DiskUnderrun; static sigc::signal<void,Diskstream*> DiskstreamCreated; // XXX use a ref with sigc2 //static sigc::signal<void,list<Source*>*> DeleteSources; - - XMLNode* deprecated_io_node; protected: friend class Session; diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 090ca6b729..9874cfa56d 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -20,7 +20,7 @@ #ifndef __ardour_midi_track_h__ #define __ardour_midi_track_h__ -#include <ardour/route.h> +#include <ardour/track.h> namespace ARDOUR { @@ -30,79 +30,49 @@ class MidiDiskstream; class MidiPlaylist; class RouteGroup; -class MidiTrack : public Route +class MidiTrack : public Track { public: MidiTrack (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); MidiTrack (Session&, const XMLNode&); ~MidiTrack (); - + int set_name (string str, void *src); - int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); - - int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); - - int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool can_record, bool rec_monitors_input); - - void toggle_monitor_input (); - - bool can_record() const { return true; } + int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); + + int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); + + int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool can_record, bool rec_monitors_input); void set_record_enable (bool yn, void *src); - MidiDiskstream& disk_stream() const { return *_diskstream; } + MidiDiskstream& midi_diskstream() const; - int set_diskstream (MidiDiskstream&, void *); int use_diskstream (string name); int use_diskstream (const PBD::ID& id); - TrackMode mode() const { return _mode; } - void set_mode (TrackMode m); - sigc::signal<void> ModeChanged; - jack_nframes_t update_total_latency(); - void set_latency_delay (jack_nframes_t); + void set_latency_delay (jack_nframes_t); int export_stuff (vector<unsigned char*>& buffers, char * workbuf, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t end_frame); - sigc::signal<void,void*> diskstream_changed; - - enum FreezeState { - NoFreeze, - Frozen, - UnFrozen - }; - - FreezeState freeze_state() const; - - sigc::signal<void> FreezeChange; - void freeze (InterThreadInfo&); void unfreeze (); void bounce (InterThreadInfo&); void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); - XMLNode& get_state(); - XMLNode& get_template(); int set_state(const XMLNode& node); - PBD::Controllable& rec_enable_control() { return _rec_enable_control; } - bool record_enabled() const; - void set_meter_point (MeterPoint, void* src); protected: - MidiDiskstream *_diskstream; - MeterPoint _saved_meter_point; - TrackMode _mode; - XMLNode& state (bool full); void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, @@ -112,64 +82,12 @@ protected: uint32_t n_process_buffers (); private: - struct FreezeRecordInsertInfo - { - FreezeRecordInsertInfo(XMLNode& st) - : state (st), insert (0) - {} - - XMLNode state; - Insert* insert; - PBD::ID id; - UndoAction memento; - }; - - struct FreezeRecord - { - FreezeRecord() - { - playlist = 0; - have_mementos = false; - } - - ~FreezeRecord(); - - MidiPlaylist* playlist; - vector<FreezeRecordInsertInfo*> insert_info; - bool have_mementos; - FreezeState state; - }; - - FreezeRecord _freeze_record; - XMLNode* pending_state; - - void diskstream_record_enable_changed (void *src); - void diskstream_input_channel_changed (void *src); - - void input_change_handler (void *src); - - sigc::connection recenable_connection; - sigc::connection ic_connection; - - int deprecated_use_diskstream_connections (); + int set_diskstream (MidiDiskstream&, void *); + void set_state_part_two (); void set_state_part_three (); - - struct MIDIRecEnableControllable : public PBD::Controllable { - MIDIRecEnableControllable (MidiTrack&); - - void set_value (float); - float get_value (void) const; - - MidiTrack& track; - }; - - MIDIRecEnableControllable _rec_enable_control; - - bool _destructive; }; -} -; /* namespace ARDOUR*/ +} /* namespace ARDOUR*/ #endif /* __ardour_midi_track_h__ */ diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 6192fe4abd..3b1a0bef99 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -290,15 +290,8 @@ class Session : public sigc::trackable, public Stateful uint32_t get_next_diskstream_id() const { return n_diskstreams(); } uint32_t n_diskstreams() const; - template<class T> void foreach_diskstream (T *obj, void (T::*func)(Diskstream&)); - typedef list<Diskstream *> DiskstreamList; - Session::DiskstreamList disk_streams() const { - Glib::RWLock::ReaderLock lm (diskstream_lock); - return diskstreams; /* XXX yes, force a copy */ - } - typedef list<Route *> RouteList; RouteList get_routes() const { diff --git a/libs/ardour/ardour/session_diskstream.h b/libs/ardour/ardour/session_diskstream.h deleted file mode 100644 index 52db157f44..0000000000 --- a/libs/ardour/ardour/session_diskstream.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#ifndef __ardour_session_diskstream_h__ -#define __ardour_session_diskstream_h__ - -#include <ardour/session.h> -#include <ardour/audio_diskstream.h> - -namespace ARDOUR { - -template<class T> void -Session::foreach_diskstream (T *obj, void (T::*func)(Diskstream&)) -{ - Glib::RWLock::ReaderLock lm (diskstream_lock); - for (DiskstreamList::iterator i = diskstreams.begin(); i != diskstreams.end(); i++) { - if (!(*i)->hidden()) { - (obj->*func) (**i); - } - } -} - -} /* namespace */ - -#endif /* __ardour_session_diskstream_h__ */ |