diff options
author | Junkyeong Kim <jk0430.kim@samsung.com> | 2018-02-21 20:08:10 +0900 |
---|---|---|
committer | Junkyeong Kim <jk0430.kim@samsung.com> | 2018-02-21 20:08:18 +0900 |
commit | 641f5b97e53e4d603c32adb93254ae69d852a9ba (patch) | |
tree | 34fc284ab1ac369b14d53ffc8236370cbecb885f | |
parent | 3cb618b08ce7434dc5f0fb5cfedb50efbd9f9c2d (diff) | |
download | libtdm-drm-641f5b97e53e4d603c32adb93254ae69d852a9ba.tar.gz libtdm-drm-641f5b97e53e4d603c32adb93254ae69d852a9ba.tar.bz2 libtdm-drm-641f5b97e53e4d603c32adb93254ae69d852a9ba.zip |
free allocated display buffers when deinit
Change-Id: I8bc68f7ef1f7fef62c7c3283698e3dd44f542392
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
-rw-r--r-- | src/tdm_drm.c | 2 | ||||
-rw-r--r-- | src/tdm_drm.h | 9 | ||||
-rw-r--r-- | src/tdm_drm_display.c | 11 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/tdm_drm.c b/src/tdm_drm.c index 102c7b8..9dd70f1 100644 --- a/src/tdm_drm.c +++ b/src/tdm_drm.c @@ -214,7 +214,7 @@ tdm_drm_deinit(tdm_backend_data *bdata) #ifdef HAVE_UDEV _tdm_drm_udev_deinit(drm_data); #endif - + tdm_drm_display_destroy_buffer_list(drm_data); tdm_drm_display_destroy_output_list(drm_data); if (drm_data->plane_res) diff --git a/src/tdm_drm.h b/src/tdm_drm.h index 9cd3b02..063d059 100644 --- a/src/tdm_drm.h +++ b/src/tdm_drm.h @@ -121,12 +121,13 @@ typedef struct _tdm_drm_data { struct list_head buffer_list; } tdm_drm_data; -uint32_t tdm_drm_format_to_drm_format(tbm_format format); -tbm_format tdm_drm_format_to_tbm_format(uint32_t format); +uint32_t tdm_drm_format_to_drm_format(tbm_format format); +tbm_format tdm_drm_format_to_tbm_format(uint32_t format); -void tdm_drm_display_update_output_status(tdm_drm_data *drm_data); +void tdm_drm_display_update_output_status(tdm_drm_data *drm_data); tdm_error tdm_drm_display_create_output_list(tdm_drm_data *drm_data); -void tdm_drm_display_destroy_output_list(tdm_drm_data *drm_data); +void tdm_drm_display_destroy_output_list(tdm_drm_data *drm_data); tdm_error tdm_drm_display_create_layer_list(tdm_drm_data *drm_data); +void tdm_drm_display_destroy_buffer_list(tdm_drm_data *drm_data); #endif /* _TDM_DRM_H_ */ diff --git a/src/tdm_drm_display.c b/src/tdm_drm_display.c index d9304eb..6978d05 100644 --- a/src/tdm_drm_display.c +++ b/src/tdm_drm_display.c @@ -738,6 +738,17 @@ tdm_drm_display_destroy_output_list(tdm_drm_data *drm_data) } void +tdm_drm_display_destroy_buffer_list(tdm_drm_data *drm_data) +{ + tdm_drm_display_buffer *b = NULL, *bb = NULL; + + LIST_FOR_EACH_ENTRY_SAFE(b, bb, &drm_data->buffer_list, link) { + tdm_buffer_remove_destroy_handler(b->buffer, _tdm_drm_display_cb_destroy_buffer, drm_data); + _tdm_drm_display_cb_destroy_buffer(b->buffer, drm_data); + } +} + +void tdm_drm_display_update_output_status(tdm_drm_data *drm_data) { tdm_drm_output_data *output_data = NULL; |