summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandcompositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/compositor_api/qwaylandcompositor.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor.cpp14
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