From 77c94d077b41439217c23c01a1a3015fcd6497d6 Mon Sep 17 00:00:00 2001
From: BogDan Vatra <bogdan@kdab.com>
Date: Tue, 6 Feb 2018 12:40:04 +0200
Subject: [PATCH] Delay QtAndroidPrivate::setOnBindListener call until the
 QAndroidService constructor exits

If we call QtAndroidPrivate::setOnBindListener before QAndroidService constructor exits the virtual table
is not set and m_service->onBind will call the wrong method.

Task-number: QTBUG-66222
Change-Id: I3d057e33dd36a317c5605d7eb5d6892827ad7b13
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
---
 src/androidextras/android/qandroidservice.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/androidextras/android/qandroidservice.cpp b/src/androidextras/android/qandroidservice.cpp
index 3a7626d..272c829 100644
--- a/src/androidextras/android/qandroidservice.cpp
+++ b/src/androidextras/android/qandroidservice.cpp
@@ -46,6 +46,7 @@
 #include <private/qjnihelpers_p.h>
 
 #include <QMutex>
+#include <QTimer>
 #include <QSet>
 
 QT_BEGIN_NAMESPACE
@@ -56,7 +57,7 @@ public:
     QAndroidServicePrivate(QAndroidService *service)
         : m_service(service)
     {
-        QtAndroidPrivate::setOnBindListener(this);
+        QTimer::singleShot(0,this, [this]{ QtAndroidPrivate::setOnBindListener(this);});
     }
 
     ~QAndroidServicePrivate()
-- 
GitLab