diff options
author | Robert Bragg <robert@linux.intel.com> | 2012-01-09 19:11:43 +0000 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2012-03-01 11:41:51 +0000 |
commit | 862eebceb6f0a3faa407e953e69eeb9ccc133036 (patch) | |
tree | e4d3af9b4c644065105deb5ca58b4f697d69a43b | |
parent | c7e10024d86acdfbafbc3159fa479e03e71d425d (diff) | |
download | clutter-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.c | 30 |
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 |