#define CIRCULARBUFFER_H
#include <QSemaphore>
-
namespace AniDBUdpClient {
namespace HashPrivate {
return false;
buffer[w] = data;
m_end = last;
- used.release();
- w++;
+ ++w;
w %= SIZE;
+ used.release();
+
return true;
}
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()
void HashConsumer::hashFile(const QString &file)
{
QMutexLocker locker(&mutex);
-qDebug() << "hashFile()";
fileSize = QFileInfo(file).size();
if (!isRunning())
while (!(buffer->end() || abort))
{
-// qDebug() << "hash->while(" << buffer->end() << ")";
QByteArray data;
while (!(buffer->get(&data) || abort));
read += data.size();
emit progress(read, totalSize);
}
- bool r = buffer->reset();
-qDebug() << "buffer reset" << r;
+ buffer->reset();
if (abort)
return;