summaryrefslogtreecommitdiff
path: root/client/decoder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/decoder.cc')
-rw-r--r--client/decoder.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/client/decoder.cc b/client/decoder.cc
index fd2464b..5c2cce5 100644
--- a/client/decoder.cc
+++ b/client/decoder.cc
@@ -42,7 +42,7 @@
Decoder::Decoder(): semaphore(1)
{
- frame = NULL;
+ frame = NULL;
running = true;
qApp->installEventFilter(this);
}
@@ -62,14 +62,25 @@ void Decoder::run()
#endif/* READ_DV_FROM_FILE*/
while(running) {
- frame = new Frame(reader.readFrame());
+ char *tmp = (char*)reader.readFrame();
+ mutex.lock();
+ if(frame) free(frame);
+ frame = tmp;
+ mutex.unlock();
}
semaphore.release(); // Unlock the shutdown process
}
-Frame *Decoder::getFrame()
+char *Decoder::getFrame()
{
- return frame;
+ char *tmp;
+
+ mutex.lock();
+ tmp = frame;
+ frame = NULL;
+ mutex.unlock();
+
+ return tmp;
}
bool Decoder::eventFilter(QObject *o, QEvent *e)