add an explicit close function to sndfile
authorRobin Gareus <robin@gareus.org>
Mon, 2 Mar 2015 22:11:04 +0000 (23:11 +0100)
committerRobin Gareus <robin@gareus.org>
Mon, 2 Mar 2015 22:11:04 +0000 (23:11 +0100)
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

index 1c4ef5ab58b03dbfc4a64a55fdb8bb5a487a8270..02e8651f6080f049e62726fdae9c85a115252649 100644 (file)
@@ -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)