summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2012-02-15 13:28:10 +0100
committerAndy Nichols <andy.nichols@nokia.com>2012-02-15 13:35:31 +0100
commitffe7fbfbb5208937394361dabfbf705e3bb2f8fd (patch)
treebc2ebe4b2356fd3fc4dccb57f36dcc19555b83eb /src
parent16c9a5b3eee986750dd7009f3e7795fb2ea58ba8 (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')
-rw-r--r--src/compositor/compositor_api/waylandcompositor.cpp5
-rw-r--r--src/compositor/compositor_api/waylandcompositor.h1
-rw-r--r--src/compositor/wayland_wrapper/wlcompositor.cpp1
-rw-r--r--src/compositor/wayland_wrapper/wlsurface.cpp2
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;
}