1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-25 15:53:52 +02:00

More use of shared_ptr to Track, for safety...

... This even makes it possible to remove the prohibition of undo and redo
during transport, not that we want to though.  Playback and recording will
continue, using track objects that might not be in the current project.
This commit is contained in:
Paul Licameli
2017-08-24 11:44:36 -04:00
parent 0319d6ea68
commit c975de8c5e
15 changed files with 76 additions and 68 deletions

View File

@@ -684,16 +684,14 @@ protected:
class WaveTrackCache {
public:
WaveTrackCache()
: mPTrack(0)
, mBufferSize(0)
: mBufferSize(0)
, mOverlapBuffer()
, mNValidBuffers(0)
{
}
explicit WaveTrackCache(const WaveTrack *pTrack)
: mPTrack(0)
, mBufferSize(0)
explicit WaveTrackCache(const std::shared_ptr<const WaveTrack> &pTrack)
: mBufferSize(0)
, mOverlapBuffer()
, mNValidBuffers(0)
{
@@ -701,8 +699,8 @@ public:
}
~WaveTrackCache();
const WaveTrack *GetTrack() const { return mPTrack; }
void SetTrack(const WaveTrack *pTrack);
const WaveTrack *GetTrack() const { return mPTrack.get(); }
void SetTrack(const std::shared_ptr<const WaveTrack> &pTrack);
// Uses fillZero always
// Returns null on failure
@@ -731,7 +729,7 @@ private:
}
};
const WaveTrack *mPTrack;
std::shared_ptr<const WaveTrack> mPTrack;
size_t mBufferSize;
Buffer mBuffers[2];
GrowableSampleBuffer mOverlapBuffer;