aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorVersus Void <versusvoid@gmail.com>2017-10-05 20:01:56 +0000
committerVersus Void <versusvoid@gmail.com>2017-10-05 20:01:56 +0000
commitc5df6ca900cb445b88ede7e0ea3bb3a9042b5b6f (patch)
treee9919a6c33e5827b53691331e79aa7a5a24524ab /backend
parentedadbc7c7f88670afdbabd05a6027c438415c3db (diff)
Fix memory leaks
Diffstat (limited to 'backend')
-rw-r--r--backend/drm/backend.c2
-rw-r--r--backend/drm/drm.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/backend/drm/backend.c b/backend/drm/backend.c
index 468fca6e..d7e2e616 100644
--- a/backend/drm/backend.c
+++ b/backend/drm/backend.c
@@ -34,8 +34,8 @@ static void wlr_drm_backend_destroy(struct wlr_backend *backend) {
wlr_output_destroy(&conn->output);
}
- wlr_drm_renderer_finish(&drm->renderer);
wlr_drm_resources_free(drm);
+ wlr_drm_renderer_finish(&drm->renderer);
wlr_session_close_file(drm->session, drm->fd);
wl_event_source_remove(drm->drm_event);
list_free(drm->outputs);
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index 1a5fea9f..fc376b54 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -169,6 +169,19 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) {
drmModeDestroyPropertyBlob(drm->fd, crtc->mode_id);
}
}
+ for (size_t i = 0; i < drm->num_planes; ++i) {
+ struct wlr_drm_plane *plane = &drm->planes[i];
+ if (plane->cursor_bo) {
+ gbm_bo_destroy(plane->cursor_bo);
+ }
+ if (plane->wlr_tex) {
+ wlr_texture_destroy(plane->wlr_tex);
+ }
+ if (plane->wlr_rend) {
+ wlr_renderer_destroy(plane->wlr_rend);
+ }
+ }
+
free(drm->crtcs);
free(drm->planes);
}