diff --git a/samplebuffer.cpp b/samplebuffer.cpp index 437eee7..6965ff7 100644 --- a/samplebuffer.cpp +++ b/samplebuffer.cpp @@ -25,6 +25,12 @@ SampleBuffer::SampleBuffer(SampleSource *src) : src(src) src->subscribe(this); } +template +SampleBuffer::~SampleBuffer() +{ + src->unsubscribe(this); +} + template std::unique_ptr SampleBuffer::getSamples(off_t start, off_t length) { diff --git a/samplebuffer.h b/samplebuffer.h index c9f0fae..4574931 100644 --- a/samplebuffer.h +++ b/samplebuffer.h @@ -31,6 +31,7 @@ private: public: SampleBuffer(SampleSource *src); + ~SampleBuffer(); void invalidateEvent(); virtual std::unique_ptr getSamples(off_t start, off_t length); virtual void work(void *input, void *output, int count) = 0;