free allocated display buffers when deinit 94/170694/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 21 Feb 2018 11:06:41 +0000 (20:06 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 21 Feb 2018 11:06:45 +0000 (20:06 +0900)
Change-Id: I487c14a4372f06562515b67a8488a3c8f98674d1
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/tdm_exynos.c
src/tdm_exynos_layer.c
src/tdm_exynos_layer.h

index 7213e50d5a45601e2b07e8366d47b7c62edf45e9..561574a1dfc6074271e5c18e05239eed10fdf154 100644 (file)
@@ -222,6 +222,7 @@ tdm_exynos_deinit(tdm_backend_data *bdata)
 
        drmRemoveUserHandler(exynos_data->drm_fd, _tdm_exynos_drm_user_handler);
 
+       tdm_exynos_layer_destroy_buffer_list(exynos_data);
        tdm_exynos_display_destroy_output_list(exynos_data);
 
        if (exynos_data->plane_res)
index 2d19a5503573eed9c7db857e9c5cfc7e56b3d877..14c39d97ee605fc2e030afa8a46bcbd8f825b0df 100644 (file)
@@ -62,6 +62,17 @@ _tdm_exynos_layer_cb_destroy_buffer(tbm_surface_h buffer, void *user_data)
        free(display_buffer);
 }
 
+void
+tdm_exynos_layer_destroy_buffer_list(tdm_exynos_data *exynos_data)
+{
+       tdm_exynos_display_buffer *b = NULL, *bb = NULL;
+
+       LIST_FOR_EACH_ENTRY_SAFE(b, bb, &exynos_data->buffer_list, link) {
+               tdm_buffer_remove_destroy_handler(b->buffer, _tdm_exynos_layer_cb_destroy_buffer, exynos_data);
+               _tdm_exynos_layer_cb_destroy_buffer(b->buffer, exynos_data);
+       }
+}
+
 tdm_error
 exynos_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps)
 {
index cad66b47a34eb5d400eb4aa502aaecc1cc3cff87..f01377bd4029d689610f286368dd8e06b60bb2f2 100644 (file)
@@ -9,5 +9,7 @@ tdm_exynos_layer_get_supported_format(tdm_layer *layer, const tbm_format **out_f
 tdm_error
 exynos_layer_get_available_properties(tdm_layer *layer, const tdm_prop **out_props,
                                                                          int *out_prop_count);
+void
+tdm_exynos_layer_destroy_buffer_list(tdm_exynos_data *exynos_data);
 
 #endif /* _TDM_EXYNOS_LAYER_H_ */