Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.10
Description
When the QQuickView status changes, that status change is propagated through JNI, to our assigned QtQmlStatusChangeListener interface. However, the call to that interface is then posted onto the Android thread, and the JNI call returns.
This leads to a timing issue where, if the Android UI thread is conveniently busy, the Qt event loop thread processes emitted QML signals before the user can register a listener for them.
Steps:
- Pull the tests from QTBUG-130768, but add the following code at the beginning of TestActivity::onStatusChanged, to simulate a busy Android UI thread causing a delayed call:
try { Thread.sleep(2500); } catch(Exception e) { e.printStackTrace(); }
- Run tests
Expected:
Tests pass
Result:
The first N tests will fail due to their signal listeners not being registered on the Java side yet, thus Java not receiving those signals.
Attachments
Issue Links
- resulted from
-
QTBUG-130768 QtSignalListener API CI tests
-
- In Progress
-
Gerrit Reviews
For Gerrit Dashboard: QTBUG-137025 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
646861,7 | Android: QQ4A: Fix synchronization issue with statusChanged signal | dev | qt/qtdeclarative | Status: NEW | +2 | 0 |