while showing the target buffer, increase ref count to prevent buffer destroy.
Change-Id: I2aa715d1649e16fa91b38767411349e59b8c3d6f
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
private_hwc = private_output->private_hwc;
LIST_FOR_EACH_ENTRY_SAFE(hw, hww, &private_hwc->hwc_window_list, link)
tdm_hwc_window_destroy_internal(hw);
+ if (private_hwc->display_target_buffer)
+ tbm_surface_internal_unref(private_hwc->display_target_buffer);
free(private_hwc);
} else {
LIST_FOR_EACH_ENTRY_SAFE(l, ll, &private_output->layer_list, link)
ret = func_hwc->hwc_set_client_target_buffer(private_hwc->hwc_backend, target_buffer, damage);
+ if (private_hwc->display_target_buffer) {
+ if (private_hwc->display_target_buffer != target_buffer) {
+ tbm_surface_internal_unref(private_hwc->display_target_buffer);
+ private_hwc->display_target_buffer = target_buffer;
+ if (target_buffer)
+ tbm_surface_internal_ref(private_hwc->display_target_buffer);
+ }
+ } else {
+ if (target_buffer) {
+ private_hwc->display_target_buffer = target_buffer;
+ tbm_surface_internal_ref(private_hwc->display_target_buffer);
+ }
+ }
+
_pthread_mutex_unlock(&private_display->lock);
return ret;
int regist_commit_cb;
tdm_hwc *hwc_backend;
+
+ tbm_surface_h display_target_buffer;
};
struct _tdm_private_hwc_window {