diff options
-rw-r--r-- | sway/desktop/surface.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sway/desktop/surface.c b/sway/desktop/surface.c index 853c403d..35af2870 100644 --- a/sway/desktop/surface.c +++ b/sway/desktop/surface.c | |||
@@ -11,7 +11,9 @@ void handle_destroy(struct wl_listener *listener, void *data) { | |||
11 | surface->wlr_surface->data = NULL; | 11 | surface->wlr_surface->data = NULL; |
12 | wl_list_remove(&surface->destroy.link); | 12 | wl_list_remove(&surface->destroy.link); |
13 | 13 | ||
14 | wl_event_source_remove(surface->frame_done_timer); | 14 | if (surface->frame_done_timer) { |
15 | wl_event_source_remove(surface->frame_done_timer); | ||
16 | } | ||
15 | 17 | ||
16 | free(surface); | 18 | free(surface); |
17 | } | 19 | } |
@@ -38,4 +40,7 @@ void handle_compositor_new_surface(struct wl_listener *listener, void *data) { | |||
38 | 40 | ||
39 | surface->frame_done_timer = wl_event_loop_add_timer(server.wl_event_loop, | 41 | surface->frame_done_timer = wl_event_loop_add_timer(server.wl_event_loop, |
40 | surface_frame_done_timer_handler, surface); | 42 | surface_frame_done_timer_handler, surface); |
43 | if (!surface->frame_done_timer) { | ||
44 | wl_resource_post_no_memory(wlr_surface->resource); | ||
45 | } | ||
41 | } | 46 | } |