commit 08ad563
Michael Forney
·
2014-01-22 02:12:10 +0000 UTC
parent 268b338
Fix some memory leaks
6 files changed,
+11,
-1
+1,
-0
1@@ -735,6 +735,7 @@ static void update_screen(struct swc_screen_internal * base)
2 pixman_region32_translate(&damage, -geometry->x, -geometry->y);
3 pixman_region32_union(&screen->next_buffer->damage,
4 &screen->next_buffer->damage, &damage);
5+ pixman_region32_fini(&damage);
6
7 /* Don't repaint the screen if it is waiting for a page flip. */
8 if (compositor.pending_flips & swc_screen_mask(base))
+1,
-0
1@@ -206,6 +206,7 @@ bool swc_framebuffer_plane_initialize(struct swc_framebuffer_plane * plane,
2
3 void swc_framebuffer_plane_finalize(struct swc_framebuffer_plane * plane)
4 {
5+ wl_array_release(&plane->connectors);
6 drmModeCrtcPtr crtc = plane->original_crtc_state;
7 drmModeSetCrtc(swc.drm->fd, crtc->crtc_id, crtc->buffer_id,
8 crtc->x, crtc->y, NULL, 0, &crtc->mode);
+1,
-1
1@@ -51,7 +51,7 @@ void swc_screens_finalize()
2 struct swc_screen_internal * screen, * tmp;
3
4 wl_list_for_each_safe(screen, tmp, &swc.screens, link)
5- free(screen);
6+ swc_screen_destroy(screen);
7 }
8
9 struct swc_screen_internal * swc_screen_new(uint32_t crtc,
+2,
-0
1@@ -54,6 +54,7 @@ static void handle_buffer_destroy(struct wl_listener * listener, void * data)
2 = CONTAINER_OF(listener, typeof(*buffer), destroy_listener);
3
4 swc_buffer_finalize(&buffer->base);
5+ free(buffer);
6 }
7
8 static inline uint32_t format_shm_to_wld(uint32_t format)
9@@ -132,6 +133,7 @@ static void destroy_buffer(struct wl_resource * resource)
10 struct wayland_buffer * buffer = wl_resource_get_user_data(resource);
11
12 swc_buffer_finalize(&buffer->base);
13+ free(buffer);
14 }
15
16 struct swc_buffer * swc_wayland_buffer_new
+2,
-0
1@@ -139,6 +139,8 @@ void swc_window_finalize(struct swc_window * window)
2 swc_send_event(&window->event_signal, SWC_WINDOW_DESTROYED, NULL);
3 swc_compositor_remove_surface(INTERNAL(window)->surface);
4 INTERNAL(window)->surface->window = NULL;
5+ free(window->title);
6+ free(window->class);
7 }
8
9 void swc_window_set_title(struct swc_window * window,
+4,
-0
1@@ -68,6 +68,8 @@ static void update_name(struct xwl_window * xwl_window)
2
3 swc_window_set_title(&xwl_window->window.base,
4 wm_name_reply.strings, wm_name_reply.strings_len);
5+
6+ xcb_ewmh_get_utf8_strings_reply_wipe(&wm_name_reply);
7 }
8
9 static struct xwl_window_entry * find_window(xcb_window_t id)
10@@ -154,6 +156,7 @@ static int connection_data(int fd, uint32_t mask, void * data)
11 property_notify((xcb_property_notify_event_t *) event);
12 }
13
14+ free(event);
15 ++count;
16 }
17
18@@ -343,6 +346,7 @@ void swc_xwm_manage_window(xcb_window_t id, struct swc_surface * surface)
19 geometry_cookie, NULL)))
20 {
21 swc_view_move(surface->view, geometry_reply->x, geometry_reply->y);
22+ free(geometry_reply);
23 }
24
25 if (entry->override_redirect)