# HG changeset patch # User Chris Cannam # Date 1228841617 0 # Node ID e7a39c45a7a49e18088267ffae1a887f03f8141a # Parent 7207e3eba44f15bb62dc2f4d1c412ce08e3f61d7 * close output streams a little sooner when writing features for more than one file (doesn't affect eventual output though) diff -r 7207e3eba44f -r e7a39c45a7a4 rdf/RDFFeatureWriter.cpp --- a/rdf/RDFFeatureWriter.cpp Mon Dec 08 15:08:39 2008 +0000 +++ b/rdf/RDFFeatureWriter.cpp Tue Dec 09 16:53:37 2008 +0000 @@ -118,11 +118,16 @@ // combination QTextStream *stream = getOutputStream(trackId, transform.getIdentifier()); - if (!stream) return; //!!! this is probably better handled with an exception + if (!stream) { + std::cerr << "RDFFeatureWriter::write: ERROR: No output stream for track id \"" + << trackId.toStdString() << "\" and transform \"" + << transform.getIdentifier().toStdString() << "\"" << std::endl; + return; + } if (m_startedStreamTransforms.find(stream) == m_startedStreamTransforms.end()) { - cerr << "This stream is new, writing prefixes" << endl; +// cerr << "This stream is new, writing prefixes" << endl; writePrefixes(stream); if (m_singleFileName == "" && !m_stdout) { writeSignalDescription(stream, trackId); @@ -410,6 +415,8 @@ PluginRDFDescription &desc, QString timelineURI) { +// std::cerr << "RDFFeatureWriter::writeSparseRDF: have " << featureList.size() << " features" << std::endl; + if (featureList.empty()) return; QTextStream &stream = *sptr; @@ -656,7 +663,7 @@ for (map::iterator i = m_openDenseFeatures.begin(); i != m_openDenseFeatures.end(); ++i) { - cerr << "closing a stream" << endl; +// cerr << "closing a stream" << endl; StreamBuffer &b = i->second; *(b.first) << b.second << "\" ." << endl; } diff -r 7207e3eba44f -r e7a39c45a7a4 transform/FileFeatureWriter.cpp --- a/transform/FileFeatureWriter.cpp Mon Dec 08 15:08:39 2008 +0000 +++ b/transform/FileFeatureWriter.cpp Tue Dec 09 16:53:37 2008 +0000 @@ -32,6 +32,7 @@ FileFeatureWriter::FileFeatureWriter(int support, QString extension) : + m_prevstream(0), m_support(support), m_extension(extension), m_manyFiles(false), @@ -258,6 +259,13 @@ } } - return m_streams[file]; + QTextStream *stream = m_streams[file]; + + if (m_prevstream && stream != m_prevstream) { + m_prevstream->flush(); + } + m_prevstream = stream; + + return stream; } diff -r 7207e3eba44f -r e7a39c45a7a4 transform/FileFeatureWriter.h --- a/transform/FileFeatureWriter.h Mon Dec 08 15:08:39 2008 +0000 +++ b/transform/FileFeatureWriter.h Tue Dec 09 16:53:37 2008 +0000 @@ -57,6 +57,7 @@ typedef map FileStreamMap; FileMap m_files; FileStreamMap m_streams; + QTextStream *m_prevstream; QString getOutputFilename(QString, TransformId); QFile *getOutputFile(QString, TransformId);