Index: libs/libmyth/mythcontext.cpp =================================================================== --- libs/libmyth/mythcontext.cpp (revision 13561) +++ libs/libmyth/mythcontext.cpp (working copy) @@ -284,7 +284,7 @@ DisplayRes *display_res; - QMutex *m_priv_mutex; + QMutex m_priv_mutex; queue m_priv_requests; QWaitCondition m_priv_queued; @@ -321,7 +321,6 @@ m_logenable(-1), m_logmaxcount(-1), m_logprintlevel(-1), screensaverEnabled(false), display_res(NULL), - m_priv_mutex(new QMutex(true)), useSettingsCache(false) { GetInstallPrefixPath( m_installprefix, m_installlibdir ); @@ -462,8 +461,6 @@ serverSock->DownRef(); if (eventSock) eventSock->DownRef(); - if (m_priv_mutex) - delete m_priv_mutex; if (screensaver) delete screensaver; } @@ -2874,7 +2871,7 @@ void MythContext::addPrivRequest(MythPrivRequest::Type t, void *data) { - QMutexLocker lockit(d->m_priv_mutex); + QMutexLocker lockit(&d->m_priv_mutex); d->m_priv_requests.push(MythPrivRequest(t, data)); d->m_priv_queued.wakeAll(); } @@ -2883,15 +2880,23 @@ { while (true) { - d->m_priv_queued.wait(); - if (!d->m_priv_requests.empty()) + d->m_priv_mutex.lock(); + if (!d->m_priv_requests.empty()) { + d->m_priv_mutex.unlock(); return; + } + d->m_priv_queued.wait(&d->m_priv_mutex); + if (!d->m_priv_requests.empty()) { + d->m_priv_mutex.unlock(); + return; + } + d->m_priv_mutex.unlock(); } } MythPrivRequest MythContext::popPrivRequest() { - QMutexLocker lockit(d->m_priv_mutex); + QMutexLocker lockit(&d->m_priv_mutex); MythPrivRequest ret_val(MythPrivRequest::PrivEnd, NULL); if (!d->m_priv_requests.empty()) { ret_val = d->m_priv_requests.front();