From: Paul Davis Date: Wed, 21 Jul 2010 13:02:58 +0000 (+0000) Subject: force creation of MIDI (SMF) files on disk whenever an SMF object is created, to... X-Git-Tag: 3.0-alpha5~1790 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=6ef49a0b86e746e8f0f8617998a2a3bb781576cd;p=ardour.git force creation of MIDI (SMF) files on disk whenever an SMF object is created, to avoid "source exists but no file don disk exists" issue git-svn-id: svn://localhost/ardour2/branches/3.0@7459 d708f5d6-7413-0410-9779-e7cbd77b26cf --- diff --git a/libs/evoral/src/SMF.cpp b/libs/evoral/src/SMF.cpp index ae3c8781a5..210692f114 100644 --- a/libs/evoral/src/SMF.cpp +++ b/libs/evoral/src/SMF.cpp @@ -128,11 +128,12 @@ SMF::create(const std::string& path, int track, uint16_t ppqn) THROW_FILE_ERROR _file_path = path; _smf = smf_new(); - if (smf_set_ppqn(_smf, ppqn) != 0) { - throw FileError(); - } if (_smf == NULL) { + return -1; + } + + if (smf_set_ppqn(_smf, ppqn) != 0) { return -1; } @@ -147,6 +148,21 @@ SMF::create(const std::string& path, int track, uint16_t ppqn) THROW_FILE_ERROR return -2; _smf_track->next_event_number = 0; + + { + /* put a stub file on disk */ + + PBD::StdioFileDescriptor d (_file_path, "w+"); + FILE* f = d.allocate (); + if (f == 0) { + return -1; + } + + if (smf_save (_smf, f)) { + return -1; + } + } + _empty = true; return 0;