diff options
author | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2014-03-25 14:49:25 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-29 10:46:48 +0200 |
commit | 96ab8abe0b0faea7f63f0477025fe0649e410362 (patch) | |
tree | 9c868346e0e27155b72ed9cc4bd7992c1d9fdddf /src/compositor/wayland_wrapper/qwlsurface.cpp | |
parent | fc439e40e37f9c0b3108225f951fb19bb3abee80 (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.cpp | 26 |
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; |