diff options
Diffstat (limited to 'src/compositor/compositor_api/qwaylandsurface_p.h')
-rw-r--r-- | src/compositor/compositor_api/qwaylandsurface_p.h | 27 |
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 |