From: APTX Date: Thu, 31 Dec 2009 19:51:58 +0000 (+0100) Subject: Correctly determine if everything was read from the buffer. end() returned true in... X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=a315c97d3a017b4342e073468d6fc558975d211d;p=anidbudpclient.git Correctly determine if everything was read from the buffer. end() returned true in two cases: buffer full and empty. --- diff --git a/circularbuffer.h b/circularbuffer.h index 1be3bc0..4973e26 100644 --- a/circularbuffer.h +++ b/circularbuffer.h @@ -2,7 +2,6 @@ #define CIRCULARBUFFER_H #include - namespace AniDBUdpClient { namespace HashPrivate { @@ -25,9 +24,10 @@ public: return false; buffer[w] = data; m_end = last; - used.release(); - w++; + ++w; w %= SIZE; + used.release(); + return true; } @@ -36,15 +36,15 @@ public: if (!used.tryAcquire(1, timeout)) return false; *data = buffer[r]; - free.release(); - r++; + ++r; r %= SIZE; + free.release(); return true; } bool end() const { - return m_end && r == w; + return m_end && used.available() == 0; } bool reset() diff --git a/hashconsumer.cpp b/hashconsumer.cpp index 02a29bb..9fcaaf9 100644 --- a/hashconsumer.cpp +++ b/hashconsumer.cpp @@ -28,7 +28,6 @@ HashConsumer::~HashConsumer() void HashConsumer::hashFile(const QString &file) { QMutexLocker locker(&mutex); -qDebug() << "hashFile()"; fileSize = QFileInfo(file).size(); if (!isRunning()) @@ -53,7 +52,6 @@ qDebug() << "Thread consumer id is: " << QThread::currentThreadId(); while (!(buffer->end() || abort)) { -// qDebug() << "hash->while(" << buffer->end() << ")"; QByteArray data; while (!(buffer->get(&data) || abort)); @@ -63,8 +61,7 @@ qDebug() << "Thread consumer id is: " << QThread::currentThreadId(); read += data.size(); emit progress(read, totalSize); } - bool r = buffer->reset(); -qDebug() << "buffer reset" << r; + buffer->reset(); if (abort) return;