30 m_empty_queue(), m_buffer_count(0), m_buffer_size(0)
45 Q_ASSERT(!isRunning());
46 if (isRunning())
return;
54 Q_ASSERT(!isRunning());
55 if (isRunning())
return -EBUSY;
62 QByteArray buf(size, 0x00);
63 for (
unsigned int i = 0; i < count; i++)
108 bool interrupted =
false;
116 qWarning(
"RecordThread::run() -> NO EMPTY BUFFER FOUND !!!");
122 int len = buffer.size();
123 Q_ASSERT(buffer.size());
130 unsigned int offset = 0;
131 while (len && !interrupted && !
shouldStop()) {
136 if ((result < 0) && (result != -EAGAIN))
137 qWarning(
"RecordThread: read result = %d (%s)",
138 result, strerror(-result));
140 if (result == -EAGAIN) {
142 }
else if (result == -EBADF) {
146 }
else if (result == -EINTR) {
150 }
else if (result < 1) {
153 qWarning(
"RecordThread::run(): read returned %d", result);
157 len = buffer.size() - offset;
159 if (len < 0) len = 0;
165 if (interrupted && (result < 0)) {
177 if (
shouldStop() || (interrupted && (result > 0)))
180 if (result) emit
stopped(result);
unsigned int m_buffer_size
virtual int read(QByteArray &buffer, unsigned int offset)=0
QQueue< QByteArray > m_full_queue
Kwave::RecordDevice * m_device
int setBuffers(unsigned int count, unsigned int size)
virtual ~RecordThread() Q_DECL_OVERRIDE
unsigned int m_buffer_count
unsigned int queuedBuffers()
virtual int stop(unsigned int timeout=10000)
QQueue< QByteArray > m_empty_queue
void setRecordDevice(Kwave::RecordDevice *device)
void stopped(int errorcode)
virtual void run() Q_DECL_OVERRIDE
unsigned int remainingBuffers()