20 #ifndef __ardour_source_h__
21 #define __ardour_source_h__
26 #include <glibmm/threads.h>
28 #include <boost/utility.hpp>
47 RemovableIfEmpty = 0x10,
48 RemoveAtDestroy = 0x20,
64 void stamp (time_t when) { _timestamp = when; }
66 virtual bool empty ()
const = 0;
68 virtual void update_length (
framecnt_t cnt) = 0;
72 void mark_for_remove();
75 virtual void mark_streaming_write_completed (
const Lock& lock) = 0;
80 int set_state (
const XMLNode&,
int version);
83 bool writable ()
const;
89 bool has_been_analysed()
const;
91 virtual void set_been_analysed (
bool yn);
92 virtual bool check_for_analysis_data_on_disk();
97 std::string get_transients_path()
const;
98 int load_transients (
const std::string&);
101 virtual void set_timeline_position (
framepos_t pos);
103 void set_allow_remove_if_empty (
bool yn);
105 Glib::Threads::Mutex&
mutex() {
return _lock; }
108 virtual void inc_use_count ();
109 virtual void dec_use_count ();
110 int use_count()
const {
return g_atomic_int_get (const_cast<gint*>(&_use_count)); }
111 bool used()
const {
return use_count() > 0; }
112 uint32_t
level()
const {
return _level; }
130 void fix_writable_flags ();
virtual bool length_mutable() const
PBD::Signal0< void > AnalysisChanged
Glib::Threads::Mutex::Lock Lock
void set_ancestor_name(const std::string &name)
virtual void session_saved()
Glib::Threads::Mutex _analysis_lock
framepos_t _timeline_position
std::string _ancestor_name
virtual void mark_streaming_write_started(const Lock &lock)
AnalysisFeatureList transients
std::list< framepos_t > AnalysisFeatureList
virtual bool can_be_analysed() const
virtual bool set_destructive(bool)
Glib::Threads::Mutex & mutex()
static PBD::Signal1< void, Source * > SourceCreated
framepos_t timeline_position() const
std::string ancestor_name()
Glib::Threads::Mutex _lock
virtual framepos_t natural_position() const
LIBARDOUR_API PBD::PropertyDescriptor< framecnt_t > length