diff --git a/mythtv/libs/libmythdb/mythsystem.cpp b/mythtv/libs/libmythdb/mythsystem.cpp
index 994ef93..1b99057 100644
a
|
b
|
|
44 | 44 | |
45 | 45 | #ifndef USING_MINGW |
46 | 46 | typedef struct { |
47 | | QMutex mutex; |
| 47 | QSemaphore ready; |
48 | 48 | uint result; |
49 | 49 | time_t timeout; |
50 | 50 | bool background; |
… |
… |
void MythSystemReaper::run(void) |
107 | 107 | kill(pid, SIGTERM); |
108 | 108 | usleep(500); |
109 | 109 | kill(pid, SIGKILL); |
110 | | pidData->mutex.unlock(); |
| 110 | pidData->ready.release(); |
111 | 111 | } |
112 | 112 | count = m_pidMap.size(); |
113 | 113 | m_mapLock.unlock(); |
… |
… |
void MythSystemReaper::run(void) |
167 | 167 | |
168 | 168 | if( pidData->background ) |
169 | 169 | delete pidData; |
170 | | else |
171 | | pidData->mutex.unlock(); |
| 170 | else |
| 171 | pidData->ready.release(); |
172 | 172 | } |
173 | 173 | } |
174 | 174 | |
… |
… |
uint MythSystemReaper::waitPid( pid_t pid, time_t timeout, bool background, |
185 | 185 | |
186 | 186 | pidData->background = background; |
187 | 187 | |
188 | | pidData->mutex.lock(); |
189 | 188 | m_mapLock.lock(); |
190 | 189 | m_pidMap.insert( pid, pidData ); |
191 | 190 | m_mapLock.unlock(); |
192 | 191 | |
193 | 192 | if( !background ) { |
194 | 193 | /* Now we wait for the thread to see the SIGCHLD */ |
195 | | while( !pidData->mutex.tryLock(100) ) |
| 194 | while( !pidData->ready.tryAcquire(1,100) ) |
196 | 195 | if (processEvents) |
197 | 196 | qApp->processEvents(); |
198 | 197 | |