Mercurial > hg > svcore
changeset 272:8bbc9e336475
* avoid trying to calculate fft from incomplete decoded audio file in spectrum
author | Chris Cannam |
---|---|
date | Mon, 02 Jul 2007 14:57:01 +0000 |
parents | 822bd7fd526c |
children | f1f47660483d |
files | data/fft/FFTDataServer.cpp |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/data/fft/FFTDataServer.cpp Mon Jul 02 13:53:38 2007 +0000 +++ b/data/fft/FFTDataServer.cpp Mon Jul 02 14:57:01 2007 +0000 @@ -503,6 +503,8 @@ std::cerr << "FFTDataServer(" << this << " [" << (void *)QThread::currentThreadId() << "])::FFTDataServer" << std::endl; #endif + //!!! end is not correct until model finished reading -- what to do??? + size_t start = m_model->getStartFrame(); size_t end = m_model->getEndFrame(); @@ -990,6 +992,12 @@ { Profiler profiler("FFTDataServer::fillColumn", false); + if (!m_model->isReady()) { + std::cerr << "WARNING: FFTDataServer::fillColumn(" + << x << "): model not yet ready" << std::endl; + return; + } + if (!m_fftInput) { std::cerr << "WARNING: FFTDataServer::fillColumn(" << x << "): " << "input has already been completed and discarded?" @@ -1142,6 +1150,11 @@ m_extent = 0; m_completion = 0; + while (!m_server.m_model->isReady() && !m_server.m_exiting) { + sleep(1); + } + if (m_server.m_exiting) return; + size_t start = m_server.m_model->getStartFrame(); size_t end = m_server.m_model->getEndFrame(); size_t remainingEnd = end;