diff options
Diffstat (limited to 'src/compositor/wayland_wrapper/qwlextendedsurface.cpp')
-rw-r--r-- | src/compositor/wayland_wrapper/qwlextendedsurface.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp index a2ee34e36..55878295d 100644 --- a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp +++ b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE namespace QtWayland { SurfaceExtensionGlobal::SurfaceExtensionGlobal(Compositor *compositor) - : QtWaylandServer::qt_surface_extension(compositor->wl_display()) + : QtWaylandServer::qt_surface_extension(compositor->wl_display(), 1) { } @@ -57,12 +57,12 @@ void SurfaceExtensionGlobal::surface_extension_get_extended_surface(Resource *re struct wl_resource *surface_resource) { Surface *surface = Surface::fromResource(surface_resource); - new ExtendedSurface(resource->client(),id,surface); + new ExtendedSurface(resource->client(),id, wl_resource_get_version(resource->handle), surface); } -ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, Surface *surface) +ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, int version, Surface *surface) : QWaylandSurfaceInterface(surface->waylandSurface()) - , QtWaylandServer::qt_extended_surface(client,id) + , QtWaylandServer::qt_extended_surface(client, id, version) , m_surface(surface) , m_windowFlags(0) { @@ -72,7 +72,8 @@ ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, Surface ExtendedSurface::~ExtendedSurface() { - m_surface->setExtendedSurface(0); + if (m_surface) + m_surface->setExtendedSurface(0); } void ExtendedSurface::sendGenericProperty(const QString &name, const QVariant &variant) @@ -91,6 +92,11 @@ void ExtendedSurface::setVisibility(QWindow::Visibility visibility, bool updateC send_onscreen_visibility(visibility); } +void ExtendedSurface::setParentSurface(Surface *surface) +{ + m_surface = surface; +} + bool ExtendedSurface::runOperation(QWaylandSurfaceOp *op) { switch (op->type()) { @@ -141,7 +147,7 @@ void ExtendedSurface::extended_surface_set_content_orientation_mask(Resource *re Qt::ScreenOrientations oldMask = m_contentOrientationMask; m_contentOrientationMask = mask; - if (mask != oldMask) + if (m_surface && mask != oldMask) emit m_surface->waylandSurface()->orientationUpdateMaskChanged(); } @@ -168,7 +174,7 @@ void ExtendedSurface::extended_surface_set_window_flags(Resource *resource, int3 { Q_UNUSED(resource); QWaylandSurface::WindowFlags windowFlags(flags); - if (windowFlags== m_windowFlags) + if (m_surface || windowFlags == m_windowFlags) return; m_windowFlags = windowFlags; emit m_surface->waylandSurface()->windowFlagsChanged(windowFlags); @@ -181,12 +187,14 @@ void ExtendedSurface::extended_surface_destroy_resource(Resource *) void ExtendedSurface::extended_surface_raise(Resource *) { - emit m_surface->waylandSurface()->raiseRequested(); + if (m_surface) + emit m_surface->waylandSurface()->raiseRequested(); } void ExtendedSurface::extended_surface_lower(Resource *) { - emit m_surface->waylandSurface()->lowerRequested(); + if (m_surface) + emit m_surface->waylandSurface()->lowerRequested(); } } |