Platform Wranglers Meeting Notes
Jump to navigation
Jump to search
2023
Next
- Roundtable
- New versions/changes in the underlying platform?
- Current focus areas
- Known problem areas
- Features on the horizon
- Topics
- Relative window stacking
16. November 2023
- Roundtable
- Windows
- Trying to get ARM VMs for our CI
- Windows 12 on the horizon, no details yet, but no likely major changes
- Finishing up Windows 11 style
- Improvements to high-DPI
- X11
- Gnome and KDE moving to Wayland
- WASM
- Updating to WebGL 2 (GLES 3)
- Android
- Android 14 in CI, now supported for 6.7
- Some issues with emulator in CI
- QPA refactoring making good progress
- Child window support in review
- JNI improvements by Volker merged
- macOS
- macOS 14 significant in CI now
- iOS
- iOS 17 issues due to libmobiledevice no longer being supported
- Wayland
- Discussion around behavior when window minimum size is larger than available size (tiling window manager e.g.)
- Killing app in response is not a good behavior
- Discussion around behavior when window minimum size is larger than available size (tiling window manager e.g.)
- Windows
- Topics
- Window states for child windows
- Always use NoWindowState
- Internal platform window handle changes
- Only on XCB, exposed as winId
- on macOS and Wayland, changes, but not exposed as winId
- Synchronous mouse/touch
- Many platforms already do this
- Window states for child windows
12. October 2023
- Roundtable
- X11
- Looking into a11y improvements
- Object creation and destruction not supported in Qt
- Needed for testing tools. Unclear if Squish needs it
- Object creation and destruction not supported in Qt
- Looking into a11y improvements
- Android
- Android 14 released
- Problems getting into CI
- QPA refactoring getting into shape
- Improvements to JNI APIs
- Android 14 released
- macOS
- Sonoma (macOS 14) released
- Problems with Xcode 15's new linker not providing default linker paths
- Breaks qmake in all Qt versions. Patch submitted.
- iOS
- iOS 17 released
- New protocol for device management (deploying, running)
- Breaks Qt Creator integration.
- Wayland
- New discussions about windows being able to absolutely position
- Clients want positioning, compositors don’t
- XDG session, tying window to tag/id for restoring
- Not clear if useful as cross platform API, but can be QWaylandWindow API
- Synchronizing window flushes during resizing
- Similar issues on other platforms
- Need to figure out which parts are Wayland quirks and which parts are Qt
- Window capturing is actually possible on Wayland via pipewire
- New discussions about windows being able to absolutely position
- WASM
- 64 bit mode getting traction and fixes
- Improvements to locale integration
- X11
- Topics
- Version support
- Android range of versions, testing min and max
- macOS, support 3-4 latest version, test full range in CI
- WASM, latest browser needed.
- Runtime check features between browsers
- EM SDK locked per Qt release
- Wayland
- Every protocol individually versioned
- Supporting both desktop compositors and embedded compositors
- Mutter, Plasma, Qt Compositor
- X11
- Rely on XCB
- Must verify that distros have any new XCB libraries we depend on
- Rely on XCB
- Application startup / lifecycle
- Event loop might already be running
- WASM
- iOS
- Plugins
- Need some kind of callback based API
- One for startup
- One for shutdown
- Should QApp be created automatically for the user?
- Can no longer create windows and other things on the stack
- If we move to a new paradigm it should replace the main one
- Ie the user shouldn’t need to provide both
- Requires updating of QtC templates, examples, etc
- Effort should be compared against fixing the main case for the platforms where this is an issue
- E.g. running main on secondary thread on WASM
- Event loop might already be running
- Version support
13. September 2023
- Introductions
- Tor Arne - macOS,iOS,QPA
- Morten - WASM
- Oliver - Windows
- Liang - X11
- Assam - Android
- David - Wayand
- Ways of working
- Monthly meeting
- Desktop/mobile platforms
- Roundtable
- iOS
- iOS 17 end of September
- Things mostly work as before
- Moving to FFMpeg for Qt Multimedia
- Technical debt in window management, modern iOS has more advanced window/screen management
- Exposing safe area margins properly as public Qt Quick API (anchors, etc)
- iOS 17 end of September
- macOS
- macOS Sonoma end of September
- No major changes, doing nightly builds, weeding out issues
- One regression in Xcode 15, causing build failures with qmake
- Key/text input, complex text, shortcut handling
- Modern window look, blurred/effect windows, etc
- macOS Sonoma end of September
- WASM
- Emscripten is the SDK
- Follows Chrome release model (4-6 weeks)
- No versions are “more stable” than others
- Upgrade close to feature freeze to get latest fixes
- 32-bit platform (one of our few)
- Has a no-thread build option
- Uses static linking
- WASM64 is coming, looking at that
- Dynamic linking is in the works
- Major challenge is web platform is async, but Qt expects synchronous APIs
- Complex text difficult
- Accessibility difficult
- Emscripten is the SDK
- X11
- Not much underlying changes on X11
- Ubuntu 22.04 in CI
- Updating RedHat and OpenSuse
- Increased requests for more XDG support
- Use XDG services more, file dialogs, drag and drop, etc
- Harald Sitter (?) knows about KDE drag and drop
- Not much underlying changes on X11
- Windows
- New OS updates every 6 months
- But usually no new major features
- CI updates, doesn’t change much
- Focus areas
- Finalising Windows 11 style for widgets
- Modern look of apps
- Window decorations
- Windows on ARM
- Problem areas
- Windows on ARM, hard to virtualise in CI
- New OS updates every 6 months
- Android
- Android 14 coming up
- Been tested in CI
- Some new permissions we need to deal with
- Storage permissions deprecated
- Bumped minimum from Android 6 to Android 8
- Focus areas
- Safe area margins for short edges
- Refactoring QPA plugin
- Modernize
- Remove layers
- Make more maintainable
- Generator for JNI APIs
- Making it easier to invoke Android APIs
- Android 14 coming up
- Wayland
- A set of generated wire protocols
- Some core protocols, fairly stable, can be expected everywhere (all compositors/servers)
- Standard body maintains additional extension protocols
- Some more essential, eg XDG shell
- Some more esoteric, for car manufacturers etc
- Some DEs use Wayland nowadays, but also with XWayland for X11 support
- Gnome
- Plasma (KDE), switching soon
- Deadline for Qt adopting a protocol is in practice when a big bistro adopts a DE version that has support for the protocol
- Focus areas
- Fractional scaling
- Support for clients outliving crashing compositors
- Support for minimised windows
- Problem areas
- Popups
- Windows don’t know their own screen positions
- Can not control screen positions
- Popups need to declare intent about where to be placed
- Possible solutions
- Turn window geometry into hints to Wayland
- Expose placement-intent-based API as public Qt API
- Qt Quick threaded render out of sync with window resize
- Needs graphics team attention
- QWindow setGeometry not emitting geometryChanged
- We wait until GeometryChangeEvent
- QWidget updates not going through QWindow::requestUpdate
- Popups
- A set of generated wire protocols
- iOS
- Topics
- Keyboard input and shortcut handling
- Investigated at https://bugreports.qt.io/browse/QTBUG-116873
- Custom window decorations
- Frameless windows on Windows not usable for the use-cases people have
- Need to figure out if it's a Windows bug fix, or a missing feature in QWindow
- Olli to write up summary in JIRA task
- Frameless windows on Windows not usable for the use-cases people have
- Keyboard input and shortcut handling