return;
TDM_INFO("deinit");
- tdm_exynos_display_destroy_buffer_list(exynos_data);
tdm_exynos_display_destroy_output_list(exynos_data);
+ tdm_exynos_display_destroy_buffer_list(exynos_data);
tdm_exynos_display_deinit_event_handling(exynos_data);
if (exynos_data->drm_fd >= 0)
tdm_exynos_layer_data *l = NULL, *ll = NULL;
LIST_FOR_EACH_ENTRY_SAFE(l, ll, &o->layer_list, link) {
LIST_DEL(&l->link);
+ if (l->display_buffer)
+ tbm_surface_internal_unref(l->display_buffer->buffer);
free(l);
}
}
}
if (layer_data->display_buffer != display_buffer) {
+ if (layer_data->display_buffer)
+ tbm_surface_internal_unref(layer_data->display_buffer->buffer);
+
layer_data->display_buffer = display_buffer;
+ tbm_surface_internal_ref(layer_data->display_buffer->buffer);
layer_data->display_buffer_changed = 1;
}
TDM_DBG("layer[%p]zpos[%d]", layer, layer_data->zpos);
_tdm_exynos_display_layer_disable(layer);
+
+ if (layer_data->display_buffer)
+ tbm_surface_internal_unref(layer_data->display_buffer->buffer);
+
layer_data->display_buffer = NULL;
+ layer_data->display_buffer_changed = 1;
return TDM_ERROR_NONE;
}