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 | |