win_data.config[layer_index].dst.f_w, win_data.config[layer_index].dst.f_h);
memcpy(&layer_data->win_cfg, &win_data.config[layer_index], sizeof(struct decon_win_config));
}
- layer_data->enabled_flag = 1;
- /* free pending display buffer */
- if (layer_data->pending_free_display_buffer) {
- layer_data->pending_free_display_buffer = NULL;
- free(layer_data->pending_free_display_buffer);
- }
+ layer_data->enabled_flag = 1;
} else {
_tdm_exynos_display_layer_disable(layer_data);
}
TDM_ERR("no display_buffer");
return;
}
- LIST_DEL(&display_buffer->link);
- if (exynos_data->hwc_mode) {
- LIST_FOR_EACH_ENTRY(output_data, &exynos_data->output_list, link) {
- LIST_FOR_EACH_ENTRY(layer_data, &output_data->layer_list, link) {
- if (display_buffer == layer_data->display_buffer) {
- TDM_DBG("display buffer is pending to free!!! buffer:%p", buffer);
- layer_data->pending_free_display_buffer = display_buffer;
- return;
- }
- }
- }
- } else {
- LIST_FOR_EACH_ENTRY(output_data, &exynos_data->output_list, link) {
- LIST_FOR_EACH_ENTRY(layer_data, &output_data->layer_list, link) {
- if (display_buffer == layer_data->display_buffer) {
- _tdm_exynos_display_layer_disable(layer_data);
- layer_data->display_buffer = NULL;
- }
+ LIST_FOR_EACH_ENTRY(output_data, &exynos_data->output_list, link) {
+ LIST_FOR_EACH_ENTRY(layer_data, &output_data->layer_list, link) {
+ if (display_buffer == layer_data->display_buffer) {
+ _tdm_exynos_display_layer_disable(layer_data);
+ layer_data->display_buffer = NULL;
}
}
}
TDM_DBG("destroy buffer fd:%d", display_buffer->fds[0]);
+ LIST_DEL(&display_buffer->link);
free(display_buffer);
}