meego-tablet-shell: Handle animation surface going away
This commit is contained in:
parent
1c5621840b
commit
132c65360e
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user