summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandsurface_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/compositor_api/qwaylandsurface_p.h')
-rw-r--r--src/compositor/compositor_api/qwaylandsurface_p.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandsurface_p.h b/src/compositor/compositor_api/qwaylandsurface_p.h
index 1f3676bd9..de71b7fe3 100644
--- a/src/compositor/compositor_api/qwaylandsurface_p.h
+++ b/src/compositor/compositor_api/qwaylandsurface_p.h
@@ -112,6 +112,11 @@ public:
static void removeUninitializedSurface(QWaylandSurfacePrivate *surface);
static bool hasUninitializedSurface();
#endif
+
+ void initSubsurface(QWaylandSurface *parent, struct ::wl_client *client, int id, int version);
+ bool isSubsurface() const { return subsurface; }
+ QWaylandSurfacePrivate *parentSurface() const { return subsurface ? subsurface->parentSurface : nullptr; }
+
protected:
void surface_destroy_resource(Resource *resource) Q_DECL_OVERRIDE;
@@ -170,6 +175,28 @@ protected: //member variables
Qt::ScreenOrientation contentOrientation;
QWindow::Visibility visibility;
+ class Subsurface : public QtWaylandServer::wl_subsurface
+ {
+ public:
+ Subsurface(QWaylandSurfacePrivate *s) : surface(s) {}
+ QWaylandSurfacePrivate *surfaceFromResource();
+
+ protected:
+ void subsurface_set_position(wl_subsurface::Resource *resource, int32_t x, int32_t y);
+ void subsurface_place_above(wl_subsurface::Resource *resource, struct wl_resource *sibling);
+ void subsurface_place_below(wl_subsurface::Resource *resource, struct wl_resource *sibling);
+ void subsurface_set_sync(wl_subsurface::Resource *resource);
+ void subsurface_set_desync(wl_subsurface::Resource *resource);
+
+ private:
+ friend class QWaylandSurfacePrivate;
+ QWaylandSurfacePrivate *surface;
+ QWaylandSurfacePrivate *parentSurface;
+ QPoint position;
+ };
+
+ Subsurface *subsurface;
+
#ifndef QT_NO_DEBUG
static QList<QWaylandSurfacePrivate *> uninitializedSurfaces;
#endif