From c03ab147da4522fd2d659506bd99ea600f9c5eb6 Mon Sep 17 00:00:00 2001
From: chris < @ rudorff com>
Date: Sun, 4 Jul 2010 07:03:06 +0200
Subject: [PATCH 7/8] fix pauseWaitMutex in RingBuffer
---
mythtv/libs/libmythtv/RingBuffer.cpp | 11 +++++------
mythtv/libs/libmythtv/RingBuffer.h | 1 +
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/mythtv/libs/libmythtv/RingBuffer.cpp b/mythtv/libs/libmythtv/RingBuffer.cpp
index 2d4ec30..b1c5719 100644
a
|
b
|
void RingBuffer::WaitForPause(void) |
880 | 880 | |
881 | 881 | if (!readaheadpaused) |
882 | 882 | { |
883 | | // Qt4 requires a QMutex as a parameter... |
884 | | // not sure if this is the best solution. Mutex Must be locked before wait. |
885 | | QMutex mutex; |
886 | | mutex.lock(); |
887 | | |
888 | | while (!pauseWait.wait(&mutex, 1000)) |
| 883 | pauseWaitMutex.lock(); |
| 884 | while (!pauseWait.wait(&pauseWaitMutex, 1000)) |
889 | 885 | VERBOSE(VB_IMPORTANT, |
890 | 886 | LOC + "Waited too long for ringbuffer pause.."); |
| 887 | pauseWaitMutex.unlock(); |
891 | 888 | } |
892 | 889 | } |
893 | 890 | |
… |
… |
void RingBuffer::ReadAheadThread(void) |
936 | 933 | if (pausereadthread || writemode) |
937 | 934 | { |
938 | 935 | readaheadpaused = true; |
| 936 | pauseWaitMutex.lock(); |
939 | 937 | pauseWait.wakeAll(); |
| 938 | pauseWaitMutex.unlock(); |
940 | 939 | usleep(5000); |
941 | 940 | totfree = ReadBufFree(); |
942 | 941 | continue; |
diff --git a/mythtv/libs/libmythtv/RingBuffer.h b/mythtv/libs/libmythtv/RingBuffer.h
index 1102bcd..6b7607d 100644
a
|
b
|
class MPUBLIC RingBuffer |
162 | 162 | int readblocksize; |
163 | 163 | |
164 | 164 | QWaitCondition pauseWait; |
| 165 | QMutex pauseWaitMutex; |
165 | 166 | |
166 | 167 | int wanttoread; |
167 | 168 | QWaitCondition availWait; |