From 132c65360eae5c201f71723ebfe1b1f29d77699a Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 3 May 2011 12:41:03 -0400 Subject: meego-tablet-shell: Handle animation surface going away --- compositor/meego-tablet-shell.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/compositor/meego-tablet-shell.c b/compositor/meego-tablet-shell.c index e01cc67f..44e60edc 100644 --- a/compositor/meego-tablet-shell.c +++ b/compositor/meego-tablet-shell.c @@ -79,6 +79,7 @@ struct meego_tablet_zoom { struct wlsc_animation animation; struct wlsc_spring spring; struct wlsc_transform transform; + struct wl_listener listener; }; static int @@ -95,6 +96,18 @@ sigchld_handler(int signal_number, void *data) return 1; } +static void +handle_zoom_surface_destroy(struct wl_listener *listener, + struct wl_surface *surface, uint32_t time) +{ + struct meego_tablet_zoom *zoom = + container_of(listener, struct meego_tablet_zoom, listener); + + wl_list_remove(&zoom->animation.link); + fprintf(stderr, "animation surface gone\n"); + free(zoom); +} + static void meego_tablet_zoom_frame(struct wlsc_animation *animation, struct wlsc_output *output, uint32_t msecs) @@ -150,6 +163,10 @@ meego_tablet_zoom_run(struct meego_tablet_shell *shell, meego_tablet_zoom_frame(&zoom->animation, NULL, zoom->spring.timestamp); + zoom->listener.func = handle_zoom_surface_destroy; + wl_list_insert(surface->surface.destroy_listener_list.prev, + &zoom->listener.link); + wl_list_insert(shell->compositor->animation_list.prev, &zoom->animation.link); } -- cgit v1.2.3