diff options
author | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-12-09 14:38:30 +0100 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2016-02-04 12:08:58 +0000 |
commit | 933d69af3061e9fdfe9e9ca1ea61055aac2c0482 (patch) | |
tree | 0fccef825cf65421816d7a4104c01bd735b87495 /src/compositor/compositor_api/qwaylandcompositor.cpp | |
parent | 93ca929fb9caf34715012dec608afd42e6ccf1e5 (diff) |
Subsurface implementation, with C++ API
This adds support for subsurfaces to QWaylandCompositor and
QWaylandSurface.
Task-number: QTBUG-49809
Change-Id: I2fa9ee4dcd1f48a2a28dab536f9cd6edc716e42b
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandcompositor.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylandcompositor.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/compositor/compositor_api/qwaylandcompositor.cpp b/src/compositor/compositor_api/qwaylandcompositor.cpp index 9aec337bd..5480b1cf1 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.cpp +++ b/src/compositor/compositor_api/qwaylandcompositor.cpp @@ -158,6 +158,7 @@ void QWaylandCompositorPrivate::init() socket_name = arguments.at(socketArg + 1).toLocal8Bit(); wl_compositor::init(display, 3); + wl_subcompositor::init(display, 1); data_device_manager = new QtWayland::DataDeviceManager(q); @@ -270,7 +271,7 @@ void QWaylandCompositorPrivate::addPolishObject(QObject *object) */ -void QWaylandCompositorPrivate::compositor_create_surface(Resource *resource, uint32_t id) +void QWaylandCompositorPrivate::compositor_create_surface(wl_compositor::Resource *resource, uint32_t id) { Q_Q(QWaylandCompositor); QWaylandClient *client = QWaylandClient::fromWlClient(q, resource->client()); @@ -292,11 +293,20 @@ void QWaylandCompositorPrivate::compositor_create_surface(Resource *resource, ui emit q->surfaceCreated(surface); } -void QWaylandCompositorPrivate::compositor_create_region(Resource *resource, uint32_t id) +void QWaylandCompositorPrivate::compositor_create_region(wl_compositor::Resource *resource, uint32_t id) { new QtWayland::Region(resource->client(), id); } +void QWaylandCompositorPrivate::subcompositor_get_subsurface(wl_subcompositor::Resource *resource, uint32_t id, wl_resource *surface, wl_resource *parent) +{ + Q_Q(QWaylandCompositor); + QWaylandSurface *childSurface = QWaylandSurface::fromResource(surface); + QWaylandSurface *parentSurface = QWaylandSurface::fromResource(parent); + QWaylandSurfacePrivate::get(childSurface)->initSubsurface(parentSurface, resource->client(), id, 1); + emit q->subsurfaceChanged(childSurface, parentSurface); +} + /*! \internal Used to create a fallback QWaylandSurface when no surface was |