summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/wayland_wrapper/qwlextendedsurface.cpp')
-rw-r--r--src/compositor/wayland_wrapper/qwlextendedsurface.cpp26
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();
}
}