RETURN_VAL_IF_FAIL(layer_data, TDM_ERROR_INVALID_PARAMETER);
- if (!(layer_data->capabilities & TDM_LAYER_CAPABILITY_PRIMARY) && layer_data->display_buffer) {
+ if (layer_data->display_buffer &&
+ (!(layer_data->capabilities & TDM_LAYER_CAPABILITY_PRIMARY) || layer_data->display_buffer_force_unset)) {
+ layer_data->display_buffer_force_unset = 0;
tbm_surface_internal_unref(layer_data->display_buffer->buffer);
layer_data->display_buffer = NULL;
}
tdm_exynos_output_update_status(tdm_exynos_output_data *output_data,
tdm_output_conn_status status)
{
+ tdm_exynos_layer_data *layer_data = NULL;
+
RETURN_VAL_IF_FAIL(output_data, TDM_ERROR_INVALID_PARAMETER);
if (output_data->status == status)
output_data->status = status;
+ LIST_FOR_EACH_ENTRY(layer_data, &output_data->layer_list, link) {
+ if (status == TDM_OUTPUT_CONN_STATUS_DISCONNECTED) {
+ if (layer_data->display_buffer)
+ layer_data->display_buffer_force_unset = 1;
+ } else
+ layer_data->display_buffer_force_unset = 0;
+ }
+
if (output_data->status_func)
output_data->status_func(output_data, status,
output_data->status_user_data);