summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/source.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/source.h')
-rw-r--r--libs/ardour/ardour/source.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/libs/ardour/ardour/source.h b/libs/ardour/ardour/source.h
index 8bf66f8b8d..e94b1af54f 100644
--- a/libs/ardour/ardour/source.h
+++ b/libs/ardour/ardour/source.h
@@ -22,6 +22,7 @@
#define __ardour_source_h__
#include <string>
+#include <set>
#include <sigc++/signal.h>
@@ -33,6 +34,7 @@
namespace ARDOUR {
class Session;
+class Playlist;
class Source : public PBD::StatefulDestructible
{
@@ -57,22 +59,34 @@ class Source : public PBD::StatefulDestructible
virtual void mark_for_remove() = 0;
virtual void mark_streaming_write_completed () = 0;
-
+
XMLNode& get_state ();
int set_state (const XMLNode&);
+ void use () { _in_use++; }
+ void disuse () { if (_in_use) { _in_use--; } }
+
+ void add_playlist (ARDOUR::Playlist*);
+ void remove_playlist (ARDOUR::Playlist*);
+
+ uint32_t used() const;
+
+
static sigc::signal<void,Source*> SourceCreated;
protected:
void update_length (jack_nframes_t pos, jack_nframes_t cnt);
-
+
Session& _session;
string _name;
DataType _type;
time_t _timestamp;
jack_nframes_t _length;
+ std::set<ARDOUR::Playlist*> _playlists;
+
private:
+ uint32_t _in_use;
};
}