From a5eb3bae87c53cdc66f05fca0dfa412833b12cc2 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 2 Mar 2015 23:11:04 +0100 Subject: add an explicit close function to sndfile NB. if someday we want to switch back to upstream SndfileHandle, we need to subclass wrap it. (not sure what else is different, anyway) --- libs/audiographer/private/sndfile.hh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libs/audiographer') diff --git a/libs/audiographer/private/sndfile.hh b/libs/audiographer/private/sndfile.hh index 1c4ef5ab58..02e8651f60 100644 --- a/libs/audiographer/private/sndfile.hh +++ b/libs/audiographer/private/sndfile.hh @@ -87,6 +87,8 @@ class SndfileHandle SndfileHandle (const SndfileHandle &orig) ; SndfileHandle & operator = (const SndfileHandle &rhs) ; + void close (void) ; + /* Mainly for debugging/testing. */ int refCount (void) const { return (p == NULL) ? 0 : p->ref ; } @@ -152,6 +154,18 @@ inline SndfileHandle::SNDFILE_ref::~SNDFILE_ref (void) { if (sf != NULL) { sf_close (sf) ; } } + +void +SndfileHandle::close (void) +{ + if (p != NULL && --p->ref == 0) + { + delete p ; + p = NULL; + } +} + + inline SndfileHandle::SndfileHandle (const char *path, int mode, int fmt, int chans, int srate) : p (NULL) -- cgit v1.2.3