Details
-
Technical task
-
Resolution: Unresolved
-
P1: Critical
-
None
-
None
-
-
2025wk02s3FOQtforAndroid, 2025wk04s3FOQtforAndroid
-
7344d21c7 (dev), 2c40e9b91 (dev), 9ba94b1e6 (dev), d25064b04 (dev), 65c41c6be (dev)
Description
When changing the system UI visibility (hiding/showing status and navigation bars) there's a noticeable flicker and sizing artifacts throughout that transition, notably going from normal ↔ fullscreen or vice versa.
The issue seems to be related to wrong sizing times (too early or too late for the system ui animation) and wrong intermediate sizes.
The transitions can be seen as follows for normal to fullscreen:
Here it's for example noticeable that sometimes the size is smaller than the actual the size while the app's actual geometry is bigger and that cause the Qt content to be shifted up (top part is below the status bar that's being hidden).
and from fullscreen to normal:
There could as be issues or races between setting the screen's geometry and the newly available geometry and the window's geometry.
For reproduction use fullscreen-transition-flicker-bug.zip.
Places to look at:
- QAndroidPlatformWindow::updateSystemUiVisibility() and QtDisplayManager.setSystemUiVisibility()
- QtLayout.onMeasure() and QtLayout.onLayout()
- QtRootLayout.onSizeChanged()
- androidjnimain.cpp:setDisplayMetrics()
- QAndroidPlatformScreen::setAvailableGeometry()
Similar or duplicate tickets:
Outcome
This would be done when such system ui changes cause no flicker and no rendering artifacts.
Make sure this still works for https://github.com/qt/qtdoc/tree/6.9/examples/demos/windowembedding.
Attachments
Gerrit Reviews
For Gerrit Dashboard: QTBUG-132720 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
615256,12 | Android: separate setting screen size from setDisplayMetrics() | dev | qt/qtbase | Status: NEW | +2 | 0 |