diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2012-02-15 13:28:10 +0100 |
---|---|---|
committer | Andy Nichols <andy.nichols@nokia.com> | 2012-02-15 13:35:31 +0100 |
commit | ffe7fbfbb5208937394361dabfbf705e3bb2f8fd (patch) | |
tree | bc2ebe4b2356fd3fc4dccb57f36dcc19555b83eb /src | |
parent | 16c9a5b3eee986750dd7009f3e7795fb2ea58ba8 (diff) |
Expose in a virtual function that surfaces are being destroyed
Change-Id: I979e7d9ca7152d4db6c3e7adae8353935a05d6c5
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
Diffstat (limited to 'src')
4 files changed, 8 insertions, 1 deletions
diff --git a/src/compositor/compositor_api/waylandcompositor.cpp b/src/compositor/compositor_api/waylandcompositor.cpp index 9196a5741..4e1097c4e 100644 --- a/src/compositor/compositor_api/waylandcompositor.cpp +++ b/src/compositor/compositor_api/waylandcompositor.cpp @@ -109,6 +109,11 @@ QWindow * WaylandCompositor::window() const return m_toplevel_window; } +void WaylandCompositor::surfaceAboutToBeDestroyed(WaylandSurface *surface) +{ + Q_UNUSED(surface); +} + Wayland::Compositor * WaylandCompositor::handle() const { return m_compositor; diff --git a/src/compositor/compositor_api/waylandcompositor.h b/src/compositor/compositor_api/waylandcompositor.h index 220726590..8406298bc 100644 --- a/src/compositor/compositor_api/waylandcompositor.h +++ b/src/compositor/compositor_api/waylandcompositor.h @@ -72,6 +72,7 @@ public: QWindow *window()const; virtual void surfaceCreated(WaylandSurface *surface) = 0; + virtual void surfaceAboutToBeDestroyed(WaylandSurface *surface); Wayland::Compositor *handle() const; diff --git a/src/compositor/wayland_wrapper/wlcompositor.cpp b/src/compositor/wayland_wrapper/wlcompositor.cpp index 27378f19f..1e1765b11 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.cpp +++ b/src/compositor/wayland_wrapper/wlcompositor.cpp @@ -254,6 +254,7 @@ void Compositor::surfaceDestroyed(Surface *surface) m_dirty_surfaces.remove(surface); if (m_directRenderSurface == surface) setDirectRenderSurface(0); + waylandCompositor()->surfaceAboutToBeDestroyed(surface->waylandSurface()); } void Compositor::markSurfaceAsDirty(Wayland::Surface *surface) diff --git a/src/compositor/wayland_wrapper/wlsurface.cpp b/src/compositor/wayland_wrapper/wlsurface.cpp index 72cc45ad9..5d6584935 100644 --- a/src/compositor/wayland_wrapper/wlsurface.cpp +++ b/src/compositor/wayland_wrapper/wlsurface.cpp @@ -68,6 +68,7 @@ namespace Wayland { void destroy_surface(struct wl_resource *resource) { Surface *surface = wayland_cast<Surface *>((wl_surface *)resource); + surface->compositor()->surfaceDestroyed(surface); delete surface; } @@ -88,7 +89,6 @@ Surface::Surface(struct wl_client *client, uint32_t id, Compositor *compositor) Surface::~Surface() { - m_compositor->surfaceDestroyed(this); delete m_waylandSurface; } |