Revision control

++ // Copyright (C) 2021 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++
++ /*!
++ \title Multi Output
++ \example multi-output
++ \examplecategory {Embedded}
++ \brief Multi Output is an example that demonstrates a compositor with multiple outputs.
++ \ingroup qtwaylandcompositor-examples
++
++ \section1 Introduction
++
++ The Multi Output example demonstrates how to display the same clients on different
++ \l{WaylandOutput}{WaylandOutputs} with different types of composition. One output shows
++ the clients in a uniform grid, scaled to the same size. The other output is a normal
++ desktop-style interactive compositor window.
++
++ \image multi-output.jpg {Two compositor windows demonstrating multiple
++ outputs}
++
++ For an introduction to the basic principles of creating a \l{Qt Wayland Compositor} with Qt,
++ see the \l{Minimal QML}{Minimal QML example}.
++
++ \section1 Multiple Outputs
++
++ The example creates two different windows, one for each output. For the grid view, we connect to the
++ \l{WaylandCompositor::surfaceRequested}{surfaceRequested} signal. This signal is emitted for every
++ surface that the client creates. This allows the application to override the default response to the request
++ and create a custom \l{WaylandSurface}.
++
++ \snippet multi-output/qml/main.qml onSurfaceRequested
++
++ Upon receiving the signal, the example creates a \l WaylandQuickItem as a view of the surface.
++ This can be added to the Qt Quick scene like any other item. In the example, we add it to
++ a \l{GridView}.
++
++ For the desktop-style window, we use the features of the \l XdgShell extension.
++ When the surface has been created, the \l XdgShell emits a
++ \l{XdgShell::toplevelCreated}{toplevelCreated} signal.
++
++ \snippet multi-output/qml/main.qml xdgshell
++
++ We create a \l ShellSurfaceItem to add the \l XdgToplevel to the second output. This enables
++ desktop-style interaction with the surface.
++
++ When these steps are done, the client's contents are visible in both windows. The buffers
++ containing the client's contents are the same for both the outputs, but are visualized in two
++ different ways, and provide different ways for the user to interact with them.
++
++ \note In order to support multiple Wayland outputs in the same compositor, the
++ \l Qt::AA_ShareOpenGLContexts attribute must be set before the \l QGuiApplication
++ object is constructed.
++
++ \sa {Multi Screen}, {Overview Compositor}
++ */