summaryrefslogtreecommitdiff
path: root/libs/audiographer
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2012-10-30 21:14:03 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2012-10-30 21:14:03 +0000
commitc8a4bdc4a4aecca78a986aa419fc0ccdea1c8a69 (patch)
tree2574487edd8f7f43a8434f37755a270e758fdf06 /libs/audiographer
parentb5c5fc7a08a4f02d80a664ee18812e84d08dc6fd (diff)
Create export temporary files in the export directory
git-svn-id: svn://localhost/ardour2/branches/3.0@13371 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/audiographer')
-rw-r--r--libs/audiographer/audiographer/sndfile/tmp_file.h24
1 files changed, 21 insertions, 3 deletions
diff --git a/libs/audiographer/audiographer/sndfile/tmp_file.h b/libs/audiographer/audiographer/sndfile/tmp_file.h
index a4e7b2679a..8655fd7191 100644
--- a/libs/audiographer/audiographer/sndfile/tmp_file.h
+++ b/libs/audiographer/audiographer/sndfile/tmp_file.h
@@ -1,6 +1,9 @@
#ifndef AUDIOGRAPHER_TMP_FILE_H
#define AUDIOGRAPHER_TMP_FILE_H
+#include <cstdio>
+#include <string>
+
#include "sndfile_writer.h"
#include "sndfile_reader.h"
@@ -12,14 +15,29 @@ template<typename T = DefaultSampleType>
class TmpFile : public SndfileWriter<T>, public SndfileReader<T>
{
public:
-
+
+ /// \a filename_template must match the requirements for mkstemp, i.e. end in "XXXXXX"
+ TmpFile (char * filename_template, int format, ChannelCount channels, framecnt_t samplerate)
+ : SndfileHandle (mkstemp(filename_template), true, SndfileBase::ReadWrite, format, channels, samplerate)
+ , filename (filename_template)
+ {}
+
TmpFile (int format, ChannelCount channels, framecnt_t samplerate)
: SndfileHandle (fileno (tmpfile()), true, SndfileBase::ReadWrite, format, channels, samplerate)
{}
-
+
TmpFile (TmpFile const & other) : SndfileHandle (other) {}
using SndfileHandle::operator=;
-
+
+ ~TmpFile()
+ {
+ if (!filename.empty()) {
+ std::remove(filename.c_str());
+ }
+ }
+
+ private:
+ std::string filename;
};
} // namespace