QtWaylandDev

From Qt Wiki
Revision as of 17:32, 14 January 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

QtWayland Development thoughts

Before making an official release of QtWayland, it needs an API review. Use this page to comment on things that could/should be done.

Things to do

  • PIMPLize all public compositor classes so we can make a step toward BC releases

APIs to add

  • ping/pong public API (shell_surface::ping)

The compositor should be able to check if a client stops responding. Considerations:

  • Control how often compositor sends ping
  • Make ping() invokable from the compositor API
  • Add a pong[ed]() signal when the client pongs
  • Add a lastPong property that holds the timestamp
  • Add a convenience signal when last pong goes over a certain threshold
  • Better QML Property API

The generic property API is annoying to use, especially from QML. plfiorini has already started a fix for this: https://codereview.qt.io/#change,52123

  • Would it make more sense for the generic properties just to use QWindow instead? Then you could access any QProperty of QWindow.
  • How would the QML attached/grouped property look? QQmlPropertyMap or even a private QML support class should be used to make this as pretty as possible

APIs to remove

  • QWaylandSurfaceItem::clientRenderingEnabled

Move all rendering-related details to the surface interface, not the item – after all, the surface can back more than one item; the item should not dictate things that can mess up other users of the surface. Also, this API was eclipsed by changes that mapped directly do the QWindow::Visibility API, so stopping client rendering can be done by setting the visibility to Hidden. This doesn’t necessarily equate to the original use case though, which was to force a QExposeEvent of 0×0 on the client (hence stopping damage + new frames to reach the compositor). Hiding the window client-side may have unacceptable side-effects, so consider how this can be improved.