output_data->status_user_data);
}
+ layer_data = output_data->primary_layer;
+
+ if (layer_data->display_buffer == NULL && layer_data->display_buffer_changed == 1) {
+ event_data = calloc(1, sizeof(tdm_virtual_event_data));
+ if (!event_data) {
+ TDM_ERR("alloc failed");
+ return TDM_ERROR_OUT_OF_MEMORY;
+ }
+
+ event_data->type = TDM_VIRTUAL_EVENT_TYPE_COMMIT;
+ event_data->output_data = output_data;
+ event_data->user_data = user_data;
+
+ ret = _tdm_virtual_display_wait_vblank(output_data, 3, event_data);
+ if (ret != TDM_ERROR_NONE) {
+ free(event_data);
+ return ret;
+ }
+ goto done;
+ }
+
if (voutput_data->vcommit_func) {
- layer_data = output_data->primary_layer;
if (layer_data->display_buffer_changed) {
output_data->commit_user_data = user_data;
event_data = calloc(1, sizeof(tdm_virtual_event_data));
}
}
+done:
+ layer_data->display_buffer_changed = 0;
+
return TDM_ERROR_NONE;
}
}
tdm_error
-virtual_output_set_available_mode(tdm_voutput *voutput, const tdm_output_mode *modes, int count)
+virtual_voutput_set_available_mode(tdm_voutput *voutput, const tdm_output_mode *modes, int count)
{
tdm_virtual_voutput_data *voutput_data = voutput;
tdm_virtual_output_data *output_data = NULL;
}
tdm_error
-virtual_output_set_physical_size(tdm_voutput *voutput, unsigned int mmwidth, unsigned int mmheight)
+virtual_voutput_set_physical_size(tdm_voutput *voutput, unsigned int mmwidth, unsigned int mmheight)
{
tdm_virtual_voutput_data *voutput_data = voutput;
}
tdm_error
-virtual_output_connect(tdm_voutput *voutput)
+virtual_voutput_connect(tdm_voutput *voutput)
{
tdm_virtual_voutput_data *voutput_data = voutput;
tdm_virtual_output_data *output_data = NULL;
}
tdm_error
-virtual_output_disconnect(tdm_voutput *voutput)
+virtual_voutput_disconnect(tdm_voutput *voutput)
{
tdm_virtual_voutput_data *voutput_data = voutput;
}
tdm_voutput *
-virtual_output_create(tdm_backend_data *bdata, const char *name, tdm_error *error)
+virtual_display_voutput_create(tdm_backend_data *bdata, const char *name, tdm_error *error)
{
tdm_virtual_data *virtual_data = bdata;
tdm_virtual_voutput_data *voutput_data = NULL;
output_data->connector_type = TDM_OUTPUT_TYPE_Unknown;
output_data->status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED;
- if (name) {
- snprintf(voutput_data->name, TDM_NAME_LEN, "%s", name);
- snprintf(output_data->name, TDM_NAME_LEN, "%s", name);
- } else {
- snprintf(voutput_data->name, TDM_NAME_LEN, "unknown");
- snprintf(output_data->name, TDM_NAME_LEN, "%s", name);
- }
+ snprintf(voutput_data->name, TDM_NAME_LEN, "%s", name);
+ snprintf(output_data->name, TDM_NAME_LEN, "%s", name);
output_data->timer = tdm_event_loop_add_timer_handler(virtual_data->dpy,
_tdm_virtual_display_cb_timeout,
return voutput_data;
create_fail:
- if (layer_data) free(layer_data);
if (output_data) free(output_data);
if (voutput_data->output_modes) free(voutput_data->output_modes);
if (voutput_data) free(voutput_data);
}
tdm_error
-virtual_output_destroy(tdm_voutput *voutput)
+virtual_voutput_destroy(tdm_voutput *voutput)
{
tdm_virtual_data *virtual_data = NULL;
- tdm_virtual_voutput_data *vo, *voutput_data = voutput;
+ tdm_virtual_voutput_data *vo = NULL, *voutput_data = voutput;
int find = 0;
RETURN_VAL_IF_FAIL(voutput_data, TDM_ERROR_INVALID_PARAMETER);
}
tdm_output *
-virtual_output_get_output(tdm_voutput *voutput, tdm_error *error)
+virtual_voutput_get_output(tdm_voutput *voutput, tdm_error *error)
{
tdm_virtual_voutput_data *voutput_data = voutput;
- RETURN_VAL_IF_FAIL(voutput_data, NULL);
-
if (!voutput_data) {
if (error) *error = TDM_ERROR_INVALID_PARAMETER;
return NULL;
}
tdm_error
-virtual_output_set_commit_func(tdm_voutput *voutput, tdm_voutput_commit_handler commit_func)
+virtual_voutput_set_commit_func(tdm_voutput *voutput, tdm_voutput_commit_handler commit_func)
{
tdm_virtual_voutput_data *voutput_data = voutput;
RETURN_VAL_IF_FAIL(voutput_data, TDM_ERROR_INVALID_PARAMETER);
- RETURN_VAL_IF_FAIL(commit_func, TDM_ERROR_INVALID_PARAMETER);
voutput_data->vcommit_func = commit_func;
}
tdm_error
-virtual_output_commit_done(tdm_voutput *voutput)
+virtual_voutput_commit_done(tdm_voutput *voutput)
{
tdm_virtual_voutput_data *voutput_data = voutput;
tdm_virtual_output_data *output_data = NULL;