From 27572a2bce848e62f8ae80862936df3a084ff62c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 14 Oct 2021 13:10:46 -0600 Subject: [PATCH] fix problem with SrcFileSource ::length() was non-virtual, and so calling SrcFileSource::length() would access the base class (AudioFileSource)'s version. Since SrcFileSource is essentially a pimpl-like pattern, this was incorrect; we need to make sure we call the pimpl-style method instead. --- libs/ardour/ardour/source.h | 2 +- libs/ardour/ardour/srcfilesource.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/source.h b/libs/ardour/ardour/source.h index dbbe7ad4ed..4b75ad06cc 100644 --- a/libs/ardour/ardour/source.h +++ b/libs/ardour/ardour/source.h @@ -74,7 +74,7 @@ public: time_t timestamp() const { return _timestamp; } void stamp (time_t when) { _timestamp = when; } - timecnt_t length() const { return _length; } + virtual timecnt_t length() const { return _length; } samplecnt_t length_samples () const { return _length.samples(); }; virtual bool empty () const; diff --git a/libs/ardour/ardour/srcfilesource.h b/libs/ardour/ardour/srcfilesource.h index 3676e965c7..c70dc1b859 100644 --- a/libs/ardour/ardour/srcfilesource.h +++ b/libs/ardour/ardour/srcfilesource.h @@ -44,7 +44,7 @@ public: timepos_t natural_position() const { return _source->natural_position() * _ratio;} samplecnt_t readable_length_samples() const { return _source->length_samples () * _ratio; } - samplecnt_t length (samplepos_t /*pos*/) const { return _source->length_samples () * _ratio; } + timecnt_t length () const { return timecnt_t ((samplecnt_t) (_source->length_samples () * _ratio)); } bool can_be_analysed() const { return false; } bool clamped_at_unity() const { return false; }