summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunghoon Park <jh9216.park@samsung.com>2017-10-10 17:46:45 +0900
committerSemun Lee <semun.lee@samsung.com>2017-10-18 07:51:21 +0000
commit458f5a8db9182016e7ff17142cba9b7580931ae8 (patch)
treeb1b48cf9f00f5f2dad899173d0a9a447625b2d4c
parentca3f5cc96a5e871afe04a164301e45e5880b808b (diff)
downloadscreen-connector-458f5a8db9182016e7ff17142cba9b7580931ae8.tar.gz
screen-connector-458f5a8db9182016e7ff17142cba9b7580931ae8.tar.bz2
screen-connector-458f5a8db9182016e7ff17142cba9b7580931ae8.zip
Fix tbm_surface memory leak
- When changed buff event comes in bind mode, it needs to unref tbm_surface from updated wl_buffer Change-Id: Id6d42e0aeb76f858d5a7cc5fb3c03d736d549c97 Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
-rw-r--r--screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c15
1 files changed, 13 insertions, 2 deletions
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 29e4552..ab2b953 100644
--- a/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c
+++ b/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c
@@ -968,9 +968,20 @@ static void __toolkit_update_cb(struct tizen_remote_surface *trs, uint32_t type,
if (toolkit_evas_h->blocked || toolkit_evas_h->bind_win_id > 0) {
if (tizen_remote_surface_get_version(trs)
>= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) {
- tizen_remote_surface_release(trs, tbm);
- g_hash_table_remove(__cur_buffer_table, tbm);
+ if (type == TIZEN_REMOTE_SURFACE_BUFFER_TYPE_TBM) {
+ if (g_hash_table_lookup(__cur_buffer_table, tbm) == NULL) {
+ tbm_surface = wl_buffer_get_user_data(tbm);
+ if (tbm_surface) {
+ LOGE("Skip update cb filter[%d] bind[%d]",
+ toolkit_evas_h->blocked, toolkit_evas_h->bind_win_id);
+ tbm_surface_internal_unref(tbm_surface);
+ }
+ tizen_remote_surface_release(trs, tbm);
+ wl_buffer_destroy(tbm);
+ }
+ }
}
+
close(img_file_fd); /* close passed fd */
return;
}