X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=backends%2Fvirtual%2Ftdm_virtual_display.c;h=ea3f5af3a6d6c6b5c1d6871c28630ae23658d89d;hb=398989bae0addb8c17264d1bee02509fafcd101d;hp=3f9d9b54dcf53b1818b3ccee4d928db760542eec;hpb=12cfc64f966cc7ea84ac549a4fd8ec21f23285e9;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/backends/virtual/tdm_virtual_display.c b/backends/virtual/tdm_virtual_display.c index 3f9d9b5..ea3f5af 100644 --- a/backends/virtual/tdm_virtual_display.c +++ b/backends/virtual/tdm_virtual_display.c @@ -457,8 +457,28 @@ virtual_output_commit(tdm_output *output, int sync, void *user_data) 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)); @@ -495,6 +515,9 @@ virtual_output_commit(tdm_output *output, int sync, void *user_data) } } +done: + layer_data->display_buffer_changed = 0; + return TDM_ERROR_NONE; } @@ -582,7 +605,7 @@ virtual_output_set_status_handler(tdm_output *output, } 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; @@ -610,7 +633,7 @@ virtual_output_set_available_mode(tdm_voutput *voutput, const tdm_output_mode *m } 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; @@ -625,7 +648,7 @@ virtual_output_set_physical_size(tdm_voutput *voutput, unsigned int mmwidth, uns } 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; @@ -648,7 +671,7 @@ virtual_output_connect(tdm_voutput *voutput) } tdm_error -virtual_output_disconnect(tdm_voutput *voutput) +virtual_voutput_disconnect(tdm_voutput *voutput) { tdm_virtual_voutput_data *voutput_data = voutput; @@ -755,7 +778,7 @@ virtual_layer_unset_buffer(tdm_layer *layer) } 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; @@ -819,13 +842,8 @@ virtual_output_create(tdm_backend_data *bdata, const char *name, tdm_error *erro 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, @@ -860,7 +878,6 @@ virtual_output_create(tdm_backend_data *bdata, const char *name, tdm_error *erro 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); @@ -871,10 +888,10 @@ create_fail: } 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); @@ -926,12 +943,10 @@ virtual_output_destroy(tdm_voutput *voutput) } 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; @@ -943,12 +958,11 @@ virtual_output_get_output(tdm_voutput *voutput, tdm_error *error) } 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; @@ -956,7 +970,7 @@ virtual_output_set_commit_func(tdm_voutput *voutput, tdm_voutput_commit_handler } 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;