summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-10-23 18:37:16 +0300
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-10-28 09:52:16 +0100
commit7882407bb6bab6c042fd20592a63a875b74eb581 (patch)
tree811ad63b66919641735117260db76ee442ad0812 /src/compositor/wayland_wrapper/qwlextendedsurface.cpp
parent806ada3e8b8d1ea8f29c839f22963417f7c34a90 (diff)
Be more careful when destroying wl_resourcesv5.4.0-rc1v5.4.0
The compositor must not destroy wl_resources when it wants to, else it breaks the contract with the client. Change-Id: Ic0d298072cdf0954d2504c04bff2bcc99733e621 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper/qwlextendedsurface.cpp')
-rw-r--r--src/compositor/wayland_wrapper/qwlextendedsurface.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
index ee68ed196..55878295d 100644
--- a/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlextendedsurface.cpp
@@ -72,7 +72,8 @@ ExtendedSurface::ExtendedSurface(struct wl_client *client, uint32_t id, int vers
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();
}
}