When drm_output is destroyed, we should free drm_mode to avoid
memoey leakage.

Signed-off-by: Xiong Zhang <[email protected]>
---
 src/compositor-drm.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index fbf6e49..9af8f8d 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -1111,6 +1111,7 @@ drm_output_destroy(struct weston_output *output_base)
        struct drm_compositor *c =
                (struct drm_compositor *) output->base.compositor;
        drmModeCrtcPtr origcrtc = output->original_crtc;
+       struct drm_mode *drm_mode, *next;
 
        if (output->page_flip_pending) {
                output->destroy_pending = 1;
@@ -1148,6 +1149,12 @@ drm_output_destroy(struct weston_output *output_base)
        weston_output_destroy(&output->base);
        wl_list_remove(&output->base.link);
 
+       wl_list_for_each_safe(drm_mode, next, &output->base.mode_list,
+                             base.link) {
+               wl_list_remove(&drm_mode->base.link);
+               free(drm_mode);
+       }
+
        free(output);
 }
 
-- 
1.8.3.2

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to