{
E_Hwc_Windows_Comp_Info *comp_info = NULL;
+ if (!tbm_surface) return NULL;
+
tbm_surface_internal_get_user_data(tbm_surface, EHWS_BUFFER_COMP_INFO_KEY,
(void**)&comp_info);
e_hwc_presentation_callback_list_init(&comp_info->presentation_callbacks);
e_comp_wl_tizen_hwc_feedback_list_init(&comp_info->feedback_list);
- tbm_surface_internal_add_user_data(tbm_surface, EHWS_BUFFER_COMP_INFO_KEY,
- _e_hwc_windows_comp_info_cb_tbm_surface_destroy);
+ if (!tbm_surface_internal_add_user_data(tbm_surface, EHWS_BUFFER_COMP_INFO_KEY,
+ _e_hwc_windows_comp_info_cb_tbm_surface_destroy))
+ goto fail;
- tbm_surface_internal_set_user_data(tbm_surface, EHWS_BUFFER_COMP_INFO_KEY,
- comp_info);
+ if(!tbm_surface_internal_set_user_data(tbm_surface, EHWS_BUFFER_COMP_INFO_KEY,
+ comp_info))
+ goto fail;
return comp_info;
+
+fail:
+ if (comp_info)
+ free(comp_info);
+
+ return NULL;
}
static void
{
hwc_window = (E_Hwc_Window *)hwc->root_target_hwc_window;
- comp_info = _e_hwc_windows_comp_info_get(hwc_window->current.buffer.tsurface);
- if (comp_info)
+ if (hwc_window->current.buffer.tsurface)
{
- e_hwc_window_presentation_time_feedback_take((E_Hwc_Window *)target_hwc_window,
- &comp_info->presentation_container);
- e_hwc_window_presentation_callback_take((E_Hwc_Window *)target_hwc_window,
- &comp_info->presentation_callbacks);
+ comp_info = _e_hwc_windows_comp_info_get(hwc_window->current.buffer.tsurface);
+ if (comp_info)
+ {
+ e_hwc_window_presentation_time_feedback_take((E_Hwc_Window *)target_hwc_window,
+ &comp_info->presentation_container);
+ e_hwc_window_presentation_callback_take((E_Hwc_Window *)target_hwc_window,
+ &comp_info->presentation_callbacks);
+ }
}
e_hwc_window_queue_buffer_reference(&hwc_window->current.queue_buffer_ref, hwc_window->display.queue_buffer_ref.buffer);