summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bragg <robert@linux.intel.com>2012-01-09 19:11:43 +0000
committerNeil Roberts <neil@linux.intel.com>2012-03-01 11:41:51 +0000
commit862eebceb6f0a3faa407e953e69eeb9ccc133036 (patch)
treee4d3af9b4c644065105deb5ca58b4f697d69a43b
parentc7e10024d86acdfbafbc3159fa479e03e71d425d (diff)
downloadclutter-862eebceb6f0a3faa407e953e69eeb9ccc133036.tar.gz
wayland-surface: Cleanup properly in _dispose
When disposing a ClutterWaylandSurface we now make sure to unref any pipeline we created and unref any surface buffer textures we created. Reviewed-by: Neil Roberts <neil@linux.intel.com> Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
-rw-r--r--clutter/wayland/clutter-wayland-surface.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/clutter/wayland/clutter-wayland-surface.c b/clutter/wayland/clutter-wayland-surface.c
index 667f11713..9a163cd4c 100644
--- a/clutter/wayland/clutter-wayland-surface.c
+++ b/clutter/wayland/clutter-wayland-surface.c
@@ -169,11 +169,28 @@ clutter_wayland_surface_init (ClutterWaylandSurface *self)
}
static void
+free_surface_buffers (ClutterWaylandSurface *self)
+{
+ ClutterWaylandSurfacePrivate *priv = self->priv;
+
+ if (priv->buffer)
+ {
+ cogl_object_unref (priv->buffer);
+ priv->buffer = NULL;
+ free_pipeline (self);
+ }
+}
+
+static void
clutter_wayland_surface_dispose (GObject *object)
{
ClutterWaylandSurface *self = CLUTTER_WAYLAND_SURFACE (object);
ClutterWaylandSurfacePrivate *priv = self->priv;
+ free_pipeline (self);
+ free_surface_buffers (self);
+ priv->surface = NULL;
+
G_OBJECT_CLASS (clutter_wayland_surface_parent_class)->dispose (object);
}
@@ -424,19 +441,6 @@ clutter_wayland_surface_new (struct wl_surface *surface)
return actor;
}
-static void
-free_surface_buffers (ClutterWaylandSurface *self)
-{
- ClutterWaylandSurfacePrivate *priv = self->priv;
-
- if (priv->buffer)
- {
- cogl_object_unref (priv->buffer);
- priv->buffer = NULL;
- free_pipeline (self);
- }
-}
-
/**
* clutter_wayland_surface_attach_buffer:
* @self: A #ClutterWaylandSurface actor