# HG changeset patch # User Chris Cannam # Date 1201172639 0 # Node ID cc4eb32efc6c415e5a26929899436218229063ba # Parent 399ea254afd69a0c5ad14e9c921ab852673b07e5 * Further model lifecycle fixes diff -r 399ea254afd6 -r cc4eb32efc6c data/fft/FFTDataServer.cpp --- a/data/fft/FFTDataServer.cpp Wed Jan 23 18:09:50 2008 +0000 +++ b/data/fft/FFTDataServer.cpp Thu Jan 24 11:03:59 2008 +0000 @@ -453,7 +453,8 @@ #endif if (i->second.second > 0) { - std::cerr << "ERROR: FFTDataServer::modelAboutToBeDeleted: Model " << model << " (\"" << model->objectName().toStdString() << "\") is about to be deleted, but is still being referred to by FFT server " << server << " with non-zero refcount " << i->second.second << std::endl; + std::cerr << "WARNING: FFTDataServer::modelAboutToBeDeleted: Model " << model << " (\"" << model->objectName().toStdString() << "\") is about to be deleted, but is still being referred to by FFT server " << server << " with non-zero refcount " << i->second.second << std::endl; + return; } for (ServerQueue::iterator j = m_releasedServers.begin(); j != m_releasedServers.end(); ++j) { diff -r 399ea254afd6 -r cc4eb32efc6c data/model/FFTModel.cpp --- a/data/model/FFTModel.cpp Wed Jan 23 18:09:50 2008 +0000 +++ b/data/model/FFTModel.cpp Thu Jan 24 11:03:59 2008 +0000 @@ -86,6 +86,11 @@ FFTModel::sourceModelAboutToBeDeleted() { if (m_sourceModel) { + std::cerr << "FFTModel[" << this << "]::sourceModelAboutToBeDeleted(" << m_sourceModel << ")" << std::endl; + if (m_server) { + FFTDataServer::releaseInstance(m_server); + m_server = 0; + } FFTDataServer::modelAboutToBeDeleted(m_sourceModel); } }