tdm_private_output *private_output;
tdm_private_output_commit_handler *output_commit_handler = NULL;
tdm_private_layer *private_layer = NULL;
+ tdm_private_display *private_display;
tbm_surface_h buffer;
tdm_error ret = TDM_ERROR_NONE;
TDM_RETURN_VAL_IF_FAIL(output != NULL, TDM_ERROR_INVALID_PARAMETER);
private_output = (tdm_private_output*)output;
+ private_display = private_output->private_display;
if (!LIST_IS_EMPTY(&private_output->output_commit_handler_list)) {
/* support only 1 commit */
if (private_layer) break;
}
TDM_GOTO_IF_FAIL(private_layer, commit_failed);
- TDM_GOTO_IF_FAIL(private_layer->committed_buffer, commit_failed);
- buffer = private_layer->committed_buffer->buffer;
+ buffer = private_layer->commiting_buffer;
+ TDM_GOTO_IF_FAIL(buffer != NULL, commit_failed);
+ _pthread_mutex_unlock(&private_display->lock);
ret = tdm_output_send_buffer(private_output, buffer);
TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed);
ret = tdm_output_commit_buffer(private_output);
TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed);
+ _pthread_mutex_lock(&private_display->lock);
return ret;
if (private_layer) break;
}
+ private_layer->commiting_buffer = NULL;
+
LIST_FOR_EACH_ENTRY(output_commit_handler, &private_output->output_commit_handler_list, link) {
if (output_commit_handler) break;
}