Fix Android Service thread getting stuck in service startup
This change allows services using QAndroidService to function properly. A service using a plain QCoreApplication is still affected. The original code uses postfix decrement, causing an off-by-one error in reference counting, which, in turn, fails to properly release a semaphore. Fix by using deref() instead, which is also more readable, and consistent with the use of ref() elsewhere in the code. Task-number: QTBUG-64728 Change-Id: I99b59307638d619506c594f86de6d7d202d755f2 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
parent
48d677365a
commit
e55c7974db
@ -592,7 +592,7 @@ void QtAndroidPrivate::setOnBindListener(QtAndroidPrivate::OnBindListener *liste
|
||||
{
|
||||
QMutexLocker lock(g_onBindListenerMutex);
|
||||
*g_onBindListener = listener;
|
||||
if (!(*g_serviceSetupLockers)--)
|
||||
if (!g_serviceSetupLockers->deref())
|
||||
g_waitForServiceSetupSemaphore->release();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user