1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-31 08:58:43 +01: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

@@ -32,7 +32,7 @@
#include "../lib-src/header-substitutes/allegro.h"
class NoteTrack;
using NoteTrackArray = std::vector < NoteTrack* >;
using NoteTrackArray = std::vector < std::shared_ptr< NoteTrack > >;
#endif // EXPERIMENTAL_MIDI_OUT
@@ -60,8 +60,8 @@ class SelectedRegion;
class AudacityProject;
class WaveTrack;
using WaveTrackArray = std::vector < WaveTrack* >;
using ConstWaveTrackArray = std::vector < const WaveTrack* >;
using WaveTrackArray = std::vector < std::shared_ptr < WaveTrack > >;
using WaveTrackConstArray = std::vector < std::shared_ptr < const WaveTrack > >;
extern AUDACITY_DLL_API AudioIO *gAudioIO;
@@ -164,7 +164,7 @@ class AUDACITY_DLL_API AudioIO final {
* If successful, returns a token identifying this particular stream
* instance. For use with IsStreamActive() below */
int StartStream(const ConstWaveTrackArray &playbackTracks, const WaveTrackArray &captureTracks,
int StartStream(const WaveTrackConstArray &playbackTracks, const WaveTrackArray &captureTracks,
#ifdef EXPERIMENTAL_MIDI_OUT
const NoteTrackArray &midiTracks,
#endif
@@ -637,7 +637,7 @@ private:
ArrayOf<std::unique_ptr<RingBuffer>> mCaptureBuffers;
WaveTrackArray mCaptureTracks;
ArrayOf<std::unique_ptr<RingBuffer>> mPlaybackBuffers;
ConstWaveTrackArray mPlaybackTracks;
WaveTrackConstArray mPlaybackTracks;
ArrayOf<std::unique_ptr<Mixer>> mPlaybackMixers;
volatile int mStreamToken;