# HG changeset patch # User Chris Cannam # Date 1232475031 0 # Node ID 993e0a4f1343ea0d2c2fcbddee5b7c515ba140ee # Parent 57857a57a03a55e2f64705c19d4e3b46ad52a55f * Try to avoid leaving output files open after completion diff -r 57857a57a03a -r 993e0a4f1343 data/fileio/FileSource.cpp --- a/data/fileio/FileSource.cpp Fri Jan 16 15:12:23 2009 +0000 +++ b/data/fileio/FileSource.cpp Tue Jan 20 18:10:31 2009 +0000 @@ -47,6 +47,25 @@ QMutex FileSource::m_mapMutex; +#ifdef DEBUG_FILE_SOURCE +static int extantCount = 0; +static std::map urlExtantCountMap; +static void incCount(QString url) { + ++extantCount; + if (urlExtantCountMap.find(url) == urlExtantCountMap.end()) { + urlExtantCountMap[url] = 1; + } else { + ++urlExtantCountMap[url]; + } + std::cerr << "FileSource: Now " << urlExtantCountMap[url] << " for this url, " << extantCount << " total" << std::endl; +} +static void decCount(QString url) { + --extantCount; + --urlExtantCountMap[url]; + std::cerr << "FileSource: Now " << urlExtantCountMap[url] << " for this url, " << extantCount << " total" << std::endl; +} +#endif + FileSource::FileSource(QString fileOrUrl, ProgressReporter *reporter, QString preferredContentType) : m_url(fileOrUrl), @@ -64,6 +83,7 @@ { #ifdef DEBUG_FILE_SOURCE std::cerr << "FileSource::FileSource(" << fileOrUrl.toStdString() << ")" << std::endl; + incCount(m_url.toString()); #endif if (!canHandleScheme(m_url)) { @@ -132,6 +152,7 @@ { #ifdef DEBUG_FILE_SOURCE std::cerr << "FileSource::FileSource(" << url.toString().toStdString() << ") [as url]" << std::endl; + incCount(m_url.toString()); #endif if (!canHandleScheme(m_url)) { @@ -163,6 +184,7 @@ { #ifdef DEBUG_FILE_SOURCE std::cerr << "FileSource::FileSource(" << m_url.toString().toStdString() << ") [copy ctor]" << std::endl; + incCount(m_url.toString()); #endif if (!canHandleScheme(m_url)) { @@ -207,6 +229,7 @@ { #ifdef DEBUG_FILE_SOURCE std::cerr << "FileSource(" << m_url.toString().toStdString() << ")::~FileSource" << std::endl; + decCount(m_url.toString()); #endif cleanup(); @@ -597,6 +620,10 @@ if (newUrl != m_url) { cleanup(); deleteCacheFile(); +#ifdef DEBUG_FILE_SOURCE + decCount(m_url.toString()); + incCount(newUrl.toString()); +#endif m_url = newUrl; m_localFile = 0; m_lastStatus = 0;