Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-48646

New Qt Wayland Compositor API

    XMLWordPrintable

Details

    • Task
    • Resolution: Done
    • P1: Critical
    • 5.8.0
    • None
    • QPA: Wayland
    • None

    Description

      Finish the work in the wip_compositor_api branch. Known issues:

      Input classes need API review.
      QTBUG-49750

      Popups need work.
      Should be possible to make it work out of the box for the QWaylandQuickShellSurfaceItem

      Buffer handling
      We have seen some odd buffering on the cursor surface in the Qml compositors. Basically the cursor doesn't release buffers. This is not a problem for ordinary surfaces.

      Destruction
      Generate destroy functions in QtWaylandScanner: When we destroy a QWaylandInputDevice we should remove the global.

      Transformations
      QWaylandQuickItem needs to transform the mouseEvents to the surface coordinate system when the item does not follow the size of the surface.

      Drag and drop
      wl_drag_source cancel needs to be sent for sources not longer valid. This is behavior which is not implemented in Weston, but defined in the protocol. If we don't do this, we leak sources, and it will fix state handling on the client side.

      Automatic socket name detection
      qtcompositor should use wl_display_add_socket_auto()

      Output
      Decide whether we keep refresh rate in Hz (and use qreal) or mHz (and use qint32) as does Wayland internally.
      Port old patch for modes, see QTBUG-49814.

      Logging
      Use logging categories in both client and server bits.
      Categories granularity: client (should fall under the qpa namespace), compositor, hardwareintegration, inputmethod

      Window properties
      The current implementation is ugly.
      We need type-safe properties.

      API review comments

      Comments from API review 2016-06-29

      • The extensions [ ... ] list property is not necessary: extensions should just auto-install on parent [DONE]
      • QWaylandView does not need to be visible to Qt Quick. QWaylandQuickItem should have a bufferLocked property [DONE]
      • QWaylandMouseTracker should use the upcoming mouse/touch handling API
      • Functions that send events should be named sendFooBarEvent()
      • Signals fired when requests are received from the client should be named fooBarRequested() (or fooBarRequestReceived???)
      • Avoid abbreviations like "shm"
      • Be consistent in grammatical form (adjective vs. verb, verb tenses) and capitalization
      • Properties that have setters must handle changing the value dynamically (if not possible: qWarning() and keep the old value)
      • Provide declarative APIs for Qt Quick instead of imperative APIs, if possible

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              tvete Paul Olav Tvete
              tvete Paul Olav Tvete
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes