From 539aa71d180d6b3d5c887707c356d3d00c0b37e8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 30 May 2007 03:31:49 +0000 Subject: (MERGED FROM rev 1924 on 2.0-ongoing) fix some (all? not likely) problems with dragging close to 2^32-1 frames git-svn-id: svn://localhost/ardour2/trunk@1925 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/audioplaylist.h | 2 -- libs/ardour/ardour/crossfade.h | 8 +++++--- libs/ardour/ardour/curve.h | 8 ++++---- libs/ardour/ardour/playlist.h | 2 +- libs/ardour/ardour/region.h | 4 ++++ 5 files changed, 14 insertions(+), 10 deletions(-) (limited to 'libs/ardour/ardour') diff --git a/libs/ardour/ardour/audioplaylist.h b/libs/ardour/ardour/audioplaylist.h index 4acbc9ad51..e431759c99 100644 --- a/libs/ardour/ardour/audioplaylist.h +++ b/libs/ardour/ardour/audioplaylist.h @@ -72,11 +72,9 @@ class AudioPlaylist : public ARDOUR::Playlist void remove_dependents (boost::shared_ptr region); private: - Crossfades _crossfades; Crossfades _pending_xfade_adds; void crossfade_invalidated (boost::shared_ptr); - XMLNode& state (bool full_state); void dump () const; bool region_changed (Change, boost::shared_ptr); diff --git a/libs/ardour/ardour/crossfade.h b/libs/ardour/ardour/crossfade.h index 61a30f1c0f..74fcc6f2fc 100644 --- a/libs/ardour/ardour/crossfade.h +++ b/libs/ardour/ardour/crossfade.h @@ -61,10 +61,10 @@ class Crossfade : public ARDOUR::AudioRegion Crossfade (boost::shared_ptr in, boost::shared_ptr out, CrossfadeModel, bool active); - /* copy constructor to copy a crossfade with new regions. used (for example) when a playlist copy is made */ + Crossfade (boost::shared_ptr, boost::shared_ptr, boost::shared_ptr); /* the usual XML constructor */ @@ -77,6 +77,8 @@ class Crossfade : public ARDOUR::AudioRegion XMLNode& get_state (void); int set_state (const XMLNode&); + static std::string node_name(); + boost::shared_ptr in() const { return _in; } boost::shared_ptr out() const { return _out; } @@ -86,11 +88,11 @@ class Crossfade : public ARDOUR::AudioRegion bool refresh (); - uint32_t upper_layer () const { + layer_t upper_layer () const { return std::max (_in->layer(), _out->layer()); } - uint32_t lower_layer () const { + layer_t lower_layer () const { return std::min (_in->layer(), _out->layer()); } diff --git a/libs/ardour/ardour/curve.h b/libs/ardour/ardour/curve.h index dd63439f08..5b725f4720 100644 --- a/libs/ardour/ardour/curve.h +++ b/libs/ardour/ardour/curve.h @@ -52,8 +52,8 @@ class Curve : public AutomationList Curve (const Curve& other, double start, double end); Curve (const XMLNode&); - bool rt_safe_get_vector (double x0, double x1, float *arg, int32_t veclen); - void get_vector (double x0, double x1, float *arg, int32_t veclen); + bool rt_safe_get_vector (double x0, double x1, float *arg, int64_t veclen); + void get_vector (double x0, double x1, float *arg, int64_t veclen); AutomationEventList::iterator closest_control_point_before (double xval); AutomationEventList::iterator closest_control_point_after (double xval); @@ -72,14 +72,14 @@ class Curve : public AutomationList double unlocked_eval (double where); double multipoint_eval (double x); - void _get_vector (double x0, double x1, float *arg, int32_t veclen); + void _get_vector (double x0, double x1, float *arg, int64_t veclen); }; } // namespace ARDOUR extern "C" { - void curve_get_vector_from_c (void *arg, double, double, float*, int32_t); + void curve_get_vector_from_c (void *arg, double, double, float*, int64_t); } #endif /* __ardour_curve_h__ */ diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 9eb66f66b6..00d81199a7 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -253,7 +253,7 @@ class Playlist : public PBD::StatefulDestructible, public boost::enable_shared_f int remove_region_internal (boost::shared_ptr); RegionList *find_regions_at (nframes_t frame); - void copy_regions (RegionList&) const; + virtual void copy_regions (RegionList&) const; void partition_internal (nframes_t start, nframes_t end, bool cutting, RegionList& thawlist); nframes_t _get_maximum_extent() const; diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index c3aac3dfa8..006f15e7a4 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -96,6 +96,8 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro nframes_t start () const { return _start; } nframes_t length() const { return _length; } layer_t layer () const { return _layer; } + virtual layer_t lower_layer () const { return _layer; } + virtual layer_t upper_layer () const { return _layer; } nframes_t sync_offset(int& dir) const; nframes_t sync_position() const; @@ -188,6 +190,8 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro virtual int set_state (const XMLNode&); virtual int set_live_state (const XMLNode&, Change&, bool send); + static std::string node_name(); + virtual boost::shared_ptr get_parent() const; uint64_t last_layer_op() const { return _last_layer_op; } -- cgit v1.2.3