summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/audiographer/private/sndfile.hh14
1 files changed, 14 insertions, 0 deletions
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)