Platform Wranglers Meeting Notes: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
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
**QApplication without exec()
**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
    • 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

  • 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)
    • macOS
      • macOS Sonoma end of September
      • Key/text input, complex text, shortcut handling
      • Modern window look, blurred/effect windows, etc
    • 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
    • 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
    • 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
    • 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
    • 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
        • 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
  • Topics
    • Keyboard input and shortcut handling
    • 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