summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/qwlsurface.cpp
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-03-25 14:49:25 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-29 10:46:48 +0200
commit96ab8abe0b0faea7f63f0477025fe0649e410362 (patch)
tree9c868346e0e27155b72ed9cc4bd7992c1d9fdddf /src/compositor/wayland_wrapper/qwlsurface.cpp
parentfc439e40e37f9c0b3108225f951fb19bb3abee80 (diff)
Let the ShellSurface send the mapped and unmapped signals.
A surface without any attached shell surface should never be mapped, so make the latter set the mapped state on the surface. Change-Id: If09bd9eebecd6e0a52f862cb866d85aec403c3a0 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/compositor/wayland_wrapper/qwlsurface.cpp')
-rw-r--r--src/compositor/wayland_wrapper/qwlsurface.cpp26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/compositor/wayland_wrapper/qwlsurface.cpp b/src/compositor/wayland_wrapper/qwlsurface.cpp
index 98d494ac8..5767bf20c 100644
--- a/src/compositor/wayland_wrapper/qwlsurface.cpp
+++ b/src/compositor/wayland_wrapper/qwlsurface.cpp
@@ -311,14 +311,6 @@ void Surface::setBackBuffer(SurfaceBuffer *buffer)
bool valid = m_buffer->waylandBufferHandle() != 0;
setSize(valid ? m_buffer->size() : QSize());
- if ((!m_subSurface || !m_subSurface->parent()) && !m_surfaceMapped) {
- m_surfaceMapped = true;
- emit m_waylandSurface->mapped();
- } else if (!valid && m_surfaceMapped) {
- m_surfaceMapped = false;
- emit m_waylandSurface->unmapped();
- }
-
m_damage = m_damage.intersected(QRect(QPoint(), m_size));
emit m_waylandSurface->damaged(m_damage);
} else {
@@ -331,6 +323,17 @@ void Surface::setBackBuffer(SurfaceBuffer *buffer)
m_damage = QRegion();
}
+void Surface::setMapped(bool mapped)
+{
+ if (!m_surfaceMapped && mapped) {
+ m_surfaceMapped = true;
+ emit m_waylandSurface->mapped();
+ } else if (!mapped && m_surfaceMapped) {
+ m_surfaceMapped = false;
+ emit m_waylandSurface->unmapped();
+ }
+}
+
SurfaceBuffer *Surface::createSurfaceBuffer(struct ::wl_resource *buffer)
{
SurfaceBuffer *newBuffer = 0;
@@ -407,16 +410,11 @@ void Surface::surface_commit(Resource *)
if (m_pending.buffer || m_pending.newlyAttached) {
setBackBuffer(m_pending.buffer);
- if (!m_buffer && m_surfaceMapped) {
- m_surfaceMapped = false;
- emit m_waylandSurface->unmapped();
- }
-
m_bufferRef = QWaylandBufferRef(m_buffer);
if (m_attacher)
m_attacher->attach(m_bufferRef);
- emit m_waylandSurface->configure();
+ emit m_waylandSurface->configure(m_bufferRef);
}
m_pending.buffer = 0;