summaryrefslogtreecommitdiff
path: root/libs/evoral
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-07-16 14:55:11 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-07-16 14:55:11 +0000
commitc8e3f32533cc6f4481222781d93e7bf7c32ffe5f (patch)
tree94f6c8a687459ebeaaa259acc4da1832ff2bd303 /libs/evoral
parente9ab577177db3c37719331c00900e48d4dfbf158 (diff)
newly created files for use in recording appear in a .stubs folder, and are moved out of it when recording stops
git-svn-id: svn://localhost/ardour2/branches/3.0@7426 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral')
-rw-r--r--libs/evoral/evoral/SMF.hpp5
-rw-r--r--libs/evoral/src/SMF.cpp19
2 files changed, 19 insertions, 5 deletions
diff --git a/libs/evoral/evoral/SMF.hpp b/libs/evoral/evoral/SMF.hpp
index 7b77051238..a99514829d 100644
--- a/libs/evoral/evoral/SMF.hpp
+++ b/libs/evoral/evoral/SMF.hpp
@@ -66,7 +66,10 @@ public:
double round_to_file_precision (double val) const;
-private:
+ protected:
+ void set_path (const std::string& p);
+
+ private:
std::string _file_path;
smf_t* _smf;
smf_track_t* _smf_track;
diff --git a/libs/evoral/src/SMF.cpp b/libs/evoral/src/SMF.cpp
index 332547a13b..ef460c2eef 100644
--- a/libs/evoral/src/SMF.cpp
+++ b/libs/evoral/src/SMF.cpp
@@ -90,14 +90,13 @@ SMF::open(const std::string& path, int track) THROW_FILE_ERROR
return -1;
}
- _smf = smf_load (f);
- if (_smf == NULL) {
+ if ((_smf = smf_load (f)) == 0) {
return -1;
}
- _smf_track = smf_get_track_by_number(_smf, track);
- if (!_smf_track)
+ if ((_smf_track = smf_get_track_by_number(_smf, track)) == 0) {
return -2;
+ }
//cerr << "Track " << track << " # events: " << _smf_track->number_of_events << endl;
if (_smf_track->number_of_events == 0) {
@@ -157,15 +156,22 @@ void
SMF::close() THROW_FILE_ERROR
{
if (_smf) {
+#if 0
+ /* XXX why would we automatically save-on-close?
+ */
+
PBD::StdioFileDescriptor d (_file_path, "w+");
FILE* f = d.allocate ();
if (f == 0) {
throw FileError ();
}
+ cerr << "CLOSE: Save SMF to " << _file_path << endl;
+
if (smf_save(_smf, f) != 0) {
throw FileError();
}
+#endif
smf_delete(_smf);
_smf = 0;
_smf_track = 0;
@@ -294,5 +300,10 @@ SMF::round_to_file_precision (double val) const
return round (val * div) / div;
}
+void
+SMF::set_path (const std::string& p)
+{
+ _file_path = p;
+}
} // namespace Evoral