Platform Wranglers Meeting Notes: Difference between revisions
Jump to navigation
Jump to search
(→2023) |
No edit summary |
||
Line 1: | Line 1: | ||
==2023== | ==2023== | ||
===Next=== | === Next === | ||
*Roundtable | *Roundtable | ||
Line 9: | Line 9: | ||
**Features on the horizon | **Features on the horizon | ||
*Topics | *Topics | ||
**Relative window stacking | **Relative window stacking | ||
===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 | |||
** Android | |||
*** Android 14 released | |||
**** Problems getting into CI | |||
*** QPA refactoring getting into shape | |||
*** Improvements to JNI APIs | |||
** 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 | |||
** WASM | |||
*** 64 bit mode getting traction and fixes | |||
*** Improvements to locale integration | |||
*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 | |||
** 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 | |||
===13. September 2023=== | ===13. September 2023=== |
Revision as of 10:39, 12 October 2023
2023
Next
- Roundtable
- New versions/changes in the underlying platform?
- Current focus areas
- Known problem areas
- Features on the horizon
- Topics
- Relative window stacking
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