Comment out some asserts for now
[agianapa.git] / qt / sphere-orbit-camera-gui / workerthread.cpp
blob039baae4c909b16ce97522e5a8fcbe71fd92ba3d
1 #include <cstdlib>
2 #include <iostream>
3 #include <QDebug>
5 #include "workerthread.h"
7 WorkerThread::WorkerThread(QObject *parent)
8 : QThread(parent)
10 qDebug("WorkerThread::WorkerThread()");
12 // Initialize random generator here
13 srand(time(NULL));
15 m_file.setFileName("foo.dat");
16 m_file.open(QIODevice::ReadOnly);
17 in.setDevice(&m_file);
18 extractFileHeader();
20 abort = false;
23 WorkerThread::~WorkerThread()
25 qDebug("WorkerThread::~WorkerThread()");
27 mutex.lock();
28 abort = true;
29 condition.wakeOne();
30 mutex.unlock();
32 m_file.close();
34 wait();
37 void WorkerThread::run(void)
39 float r;
41 qDebug("WorkerThread::run()");
43 // Loop
44 while (!abort) {
45 mutex.lock();
46 if (m_data.size() >= 667) {
47 qDebug("BLOCKED");
48 condition.wait(&mutex);
49 mutex.unlock();
51 else {
52 in >> r;
53 m_data.enqueue(r);
54 mutex.unlock();
59 void WorkerThread::setFileName(QString fileName)
61 qDebug("WorkerThread::setFileName()");
63 // Close old file
64 m_file.close();
66 // Caution: discard all old data in QQueue
67 // Worst case scenario if you don't: frame read corruption
68 m_data.clear();
70 // Open new one
71 m_file.setFileName(fileName);
72 m_file.open(QIODevice::ReadOnly);
73 in.setDevice(&m_file);
74 extractFileHeader();
77 quint32 WorkerThread::getMagicVersion(void) const
79 qDebug("WorkerThread::getMagicVersion()");
81 return m_magicVersion;
84 quint32 WorkerThread::getProtocolVersion(void) const
86 qDebug("WorkerThread::getProtocolVersion()");
88 return m_protocolVersion;
91 quint32 WorkerThread::getNumOfRecords(void) const
93 qDebug("WorkerThread::getNumOfRecords()");
95 return m_numOfRecords;
98 void WorkerThread::extractFileHeader(void)
100 qDebug("WorkerThread::extractFileHeader()");
102 in >> m_magicVersion;
103 //Q_ASSERT(m_magicVersion == 0xA0B0C0D0);
105 in >> m_protocolVersion;
106 //Q_ASSERT(m_protocolVersion == 0x1);
108 in >> m_numOfRecords;
110 // qDebug() adds an extra space between items,
111 // plus a new line in the last one.
112 qDebug() << "Magic version =" << hex << m_magicVersion;
113 qDebug() << "Protocol version =" << m_protocolVersion;
114 qDebug() << "Number of records =" << m_numOfRecords;