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)