From: Hyunho Kang Date: Thu, 16 Mar 2017 01:56:31 +0000 (+0900) Subject: Add tbm buffer destroy logic X-Git-Tag: accepted/tizen/common/20170323.154511~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d09ccf2a1b73ef116d700b1de5a0dbcbc901a89;p=platform%2Fcore%2Fappfw%2Fscreen-connector.git Add tbm buffer destroy logic tbm buffer should be handled by viewer side. If not, tbm_surface fd will be remained after widget is deleted. Change-Id: Ia6abc17c53af08c24d7d080378c121879e1a291d Signed-off-by: Hyunho Kang --- diff --git a/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c b/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c index 35b864b..da88b31 100644 --- a/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c +++ b/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include "screen_connector_toolkit.h" #include "screen_connector_toolkit_evas.h" @@ -415,6 +417,7 @@ static void __toolkit_update_cb(struct tizen_remote_surface *trs, uint32_t type, char format[] = "png"; char plug_id[256]; screen_connector_toolkit_evas_h toolkit_evas_h; + tbm_surface_h pre_tbm_surface; toolkit_evas_h = (screen_connector_toolkit_evas_h)data; if (toolkit_evas_h->img_tbm == NULL) { @@ -492,8 +495,12 @@ static void __toolkit_update_cb(struct tizen_remote_surface *trs, uint32_t type, } if (toolkit_evas_h->pre_buffer) { - if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) + if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) { tizen_remote_surface_release(trs, toolkit_evas_h->pre_buffer); + pre_tbm_surface = (tbm_surface_h)wl_buffer_get_user_data(toolkit_evas_h->pre_buffer); + tbm_surface_internal_unref(pre_tbm_surface); + wl_buffer_destroy(toolkit_evas_h->pre_buffer); + } } toolkit_evas_h->pre_buffer = tbm; diff --git a/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c b/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c index 175d03b..3f0eddc 100644 --- a/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c +++ b/screen_connector_watcher_evas/src/screen_connector_watcher_evas.c @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include "screen_connector_watcher.h" #include "screen_connector_watcher_evas.h" @@ -148,6 +150,7 @@ static void __watcher_update_cb(struct tizen_remote_surface *trs, uint32_t type, char format[] = "png"; screen_connector_watcher_evas_h watcher_evas_h = (screen_connector_watcher_evas_h)data; img_info_h info; + tbm_surface_h pre_tbm_surface; if (tbm == NULL && type == TIZEN_REMOTE_SURFACE_BUFFER_TYPE_TBM) { LOGE("TBM is null !! %d, %s, %s", TIZEN_REMOTE_SURFACE_BUFFER_TYPE_TBM, appid, instance_id); @@ -215,8 +218,12 @@ static void __watcher_update_cb(struct tizen_remote_surface *trs, uint32_t type, } if (info->pre_buffer) { - if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) + if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) { tizen_remote_surface_release(trs, info->pre_buffer); + pre_tbm_surface = (tbm_surface_h)wl_buffer_get_user_data(info->pre_buffer); + tbm_surface_internal_unref(pre_tbm_surface); + wl_buffer_destroy(info->pre_buffer); + } } info->pre_buffer = tbm; close(img_file_fd); /* close passed fd */