info->ref_count++;
}
-static void __cur_buffer_info_unref(struct tizen_remote_surface *trs, cur_buffer_info_h info)
+static bool __cur_buffer_info_unref(struct tizen_remote_surface *trs, cur_buffer_info_h info)
{
tbm_surface_h cur_tbm_surface;
cur_tbm_surface = (tbm_surface_h)wl_buffer_get_user_data(info->cur_buffer);
tbm_surface_internal_unref(cur_tbm_surface);
g_hash_table_remove(__cur_buffer_table, info->cur_buffer);
+ return true;
}
+
+ return false;
}
static void __destroy_cur_buffer(gpointer data)
if (!info)
return;
- if (info->cur_buffer)
- wl_buffer_destroy(info->cur_buffer);
-
free(info);
}
if (toolkit_evas_h->cur_buffer) {
if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) {
c_buf_info = g_hash_table_lookup(__cur_buffer_table, toolkit_evas_h->cur_buffer);
- if (c_buf_info != NULL)
- __cur_buffer_info_unref(trs, c_buf_info);
+ if (c_buf_info != NULL) {
+ struct wl_buffer *tmp_buffer = c_buf_info->cur_buffer;
+ if (__cur_buffer_info_unref(trs, c_buf_info)) {
+ if(tmp_buffer != NULL) {
+ if (tmp_buffer != tbm) {
+ wl_buffer_destroy(tmp_buffer);
+ } else {
+ LOGE("Same buffer %p", tmp_buffer);
+ }
+ }
+ }
+ }
}
}