Mercurial > hg > svcore
annotate base/TempWriteFile.h @ 1211:5a1198083d9a piper
Pull out model creation into the transformer thread run(), so that all communications with the plugin server happen on a single thread. Then make the model accessor wait for them to be created (which still happens right at the start of processing) before returning.
author | Chris Cannam |
---|---|
date | Mon, 17 Oct 2016 14:18:23 +0100 |
parents | 920e3880f7b4 |
children | 1c9bbbb6116a |
rev | line source |
---|---|
Chris@674 | 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ |
Chris@674 | 2 |
Chris@674 | 3 /* |
Chris@674 | 4 Sonic Visualiser |
Chris@674 | 5 An audio file viewer and annotation editor. |
Chris@674 | 6 Centre for Digital Music, Queen Mary, University of London. |
Chris@674 | 7 |
Chris@674 | 8 This program is free software; you can redistribute it and/or |
Chris@674 | 9 modify it under the terms of the GNU General Public License as |
Chris@674 | 10 published by the Free Software Foundation; either version 2 of the |
Chris@674 | 11 License, or (at your option) any later version. See the file |
Chris@674 | 12 COPYING included with this distribution for more information. |
Chris@674 | 13 */ |
Chris@674 | 14 |
Chris@674 | 15 #ifndef _TEMP_WRITE_FILE_H_ |
Chris@674 | 16 #define _TEMP_WRITE_FILE_H_ |
Chris@674 | 17 |
Chris@674 | 18 #include <QTemporaryFile> |
Chris@674 | 19 |
Chris@674 | 20 /** |
Chris@674 | 21 * A class that manages the creation of a temporary file with a given |
Chris@674 | 22 * prefix and the renaming of that file to the prefix after use. For |
Chris@674 | 23 * use when saving a file over an existing one, to avoid clobbering |
Chris@674 | 24 * the original before the save is complete. |
Chris@674 | 25 */ |
Chris@674 | 26 |
Chris@674 | 27 class TempWriteFile |
Chris@674 | 28 { |
Chris@674 | 29 public: |
Chris@674 | 30 TempWriteFile(QString targetFileName); // may throw FileOperationFailed |
Chris@674 | 31 |
Chris@674 | 32 /** |
Chris@674 | 33 * Destroy the temporary file object. If moveToTarget has not |
Chris@674 | 34 * been called, the associated temporary file will be deleted |
Chris@674 | 35 * without being copied to the target location. |
Chris@674 | 36 */ |
Chris@674 | 37 ~TempWriteFile(); |
Chris@674 | 38 |
Chris@674 | 39 /** |
Chris@674 | 40 * Return the name of the temporary file. Unless the constructor |
Chris@674 | 41 * threw an exception, this file will have been created already |
Chris@674 | 42 * (but it will not be open). |
Chris@674 | 43 * |
Chris@674 | 44 * (If moveToTarget has already been called, return an empty |
Chris@674 | 45 * string.) |
Chris@674 | 46 */ |
Chris@674 | 47 QString getTemporaryFilename(); |
Chris@674 | 48 |
Chris@674 | 49 /** |
Chris@674 | 50 * Rename the temporary file to the target filename. |
Chris@674 | 51 */ |
Chris@674 | 52 void moveToTarget(); |
Chris@674 | 53 |
Chris@674 | 54 protected: |
Chris@674 | 55 QString m_target; |
Chris@674 | 56 QString m_temp; |
Chris@674 | 57 }; |
Chris@674 | 58 |
Chris@674 | 59 |
Chris@674 | 60 #endif |