Add cmake test for QtCompositor and disable cmake files for QtWaylandClient

Change-Id: Id6e2d46b55e521218a3c0f44cf9a4a2be5f0df7f
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Fix a few project warnings

Change-Id: I342b677f529994430125797f1b971f8723e1355a
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Fix creation of custom shells

The previous virtual method initShell() was not working because
it was called from QWaylandCompositor constructor.
Replace that with a mthod to create the default shell to be
manually called by the compositors if they so choose.

Change-Id: I35a1dc0edfaf4237ca47b532645ac0d95752311c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Remove deprecated method in brcm_egl plugin

QPlatformIntegrationPlugin::keys() was removed.
This fixes brcm_egl build.

Change-Id: I62af15a340a63794e6c6980ac6d72138d1cd60c8
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Give a name to the event handling thread

Change-Id: I5c6073bc1908e54bc5ae50d4b6b6044974f1ad60
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Fix build with nogl

Change-Id: I1a70cfdbd450c94759f81d4328d821843541c063
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
Do not send auto repeat key events to the clients

Change-Id: Icf1cd7211cb470115c9ce5e0ad5180dbb0ce28b9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Auto repeat only the keys which should be repeated

Change-Id: I283bf6cc2f6c338fc769d77dd84ae7acb08eb7be
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
MER: Add packaging.
MER: cmake unscrew

Change-Id: I92d57630933dacaed1e60805105adc0aae5aa2a2
MER: HACK: Don't use QWaylandInputContext

We want to use Maliit.

Change-Id: I10d50229a131feeb3c10d061aac5d805bb936849
Introduce QWaylandSurfaceInterface

Wayland is designed to be easily extensible with new protocol,
unfortunately it currently isn't possible with QtCompositor.
A QtWayland compositor has two ends: the Wayland end and the shell/wm
end, which may be implemented in QML. These two ends communicate mainly
through the QWaylandSurface and the QWaylandSurfaceView classes, but the
Wayland end is currently unable to hook into custom protocol extensions.
This is the purpose of the new QWaylandSurfaceInterface class, and of
QWaylandSurfaceOp and its subclasses: based on the QEvent model,
QWaylandSurfaceOp has only a type member, and its type specific subclasses
have additional data if needed. A custom protocol implementation, such as
xdg_surface or my_fancy_surface, will use a QWaylandSurfaceInterface subclass
which will call its specific protocol functions when it gets the relative
operation requests from the parent surface.
The QWaylandShellSurface class is now redundant so it is removed.
Add more API to change QWaylandSurface properties

The previous patch allows for QWaylandSurface to call into custom
protocol implementations, but the other way around is needed too.
Instead of adding many public setters to QWaylandSurface this
makes QWaylandSurfaceInterface the way to set them, through
protected functions. This avoids calling the setters from other code
paths, which would bring the server and client states of the same
surface out of sync.
Add a way to have out of source shell integrations

Some platforms (especially non-desktop ones) may use a custom
Wayland shell extension, more tailored to the form factor than
the generic and desktoppy wl_shell or xdg_shell. Instead of stuffing
N protocol implementations in the QPA plugin use a plugin architecture
to allow them to live out of tree.
When creating a shell surface the QT_WAYLAND_SHELL_INTEGRATION env
variable will be checked, and if it points to a valid plugin that
will be used to create the shell surface, falling back to wl_shell
or xdg_shell if no plugin is specified.