LIST_ADDTAIL(&v->link, &clone_list);
}
+ if (tdm_debug_module & TDM_DEBUG_COMMIT)
+ TDM_INFO("-----------------------------------------");
+
_pthread_mutex_unlock(&private_display->lock);
LIST_FOR_EACH_ENTRY_SAFE(v, vv, &clone_list, link) {
if (tdm_debug_module & TDM_DEBUG_COMMIT)
free(v);
}
_pthread_mutex_lock(&private_display->lock);
+
+ if (tdm_debug_module & TDM_DEBUG_COMMIT)
+ TDM_INFO("-----------------------------------------...");
}
INTERN void
tdm_private_output *private_output = private_layer->private_output;
tdm_private_display *private_display = private_output->private_display;
- private_layer->committing = 0;
-
if (private_display->print_fps) {
double curr = tdm_helper_get_time();
private_layer->fps_count++;
private_display = private_output->private_display;
- private_output->waiting_vblank = 0;
+ private_output->layer_waiting_vblank = 0;
LIST_INITHEAD(&clone_list);
LIST_INITHEAD(&pending_clone_list);
LIST_FOR_EACH_ENTRY_SAFE(lm, lmm, &private_output->layer_commit_handler_list, link) {
LIST_DEL(&lm->link);
+ lm->private_layer->committing = 0;
LIST_ADDTAIL(&lm->link, &clone_list);
}
LIST_FOR_EACH_ENTRY_SAFE(lm, lmm, &private_output->pending_commit_handler_list, link) {
LIST_DEL(&lm->link);
+ lm->private_layer->committing = 0;
LIST_ADDTAIL(&lm->link, &pending_clone_list);
}
TDM_INFO("layer commit: output(%d) commit", private_output->pipe);
/* tdm_vblank APIs is for server. it should be called in unlock status*/
- _pthread_mutex_unlock(&private_display->lock);
- ret = tdm_vblank_wait(private_output->vblank, 0, 0, 1, _tdm_layer_cb_wait_vblank, private_output);
- _pthread_mutex_lock(&private_display->lock);
- TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, wait_failed);
- private_output->waiting_vblank = 1;
+ if (!private_output->layer_waiting_vblank) {
+ _pthread_mutex_unlock(&private_display->lock);
+ ret = tdm_vblank_wait(private_output->vblank, 0, 0, 1, _tdm_layer_cb_wait_vblank, private_output);
+ _pthread_mutex_lock(&private_display->lock);
+ TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, wait_failed);
+ private_output->layer_waiting_vblank = 1;
+ }
if (tdm_debug_module & TDM_DEBUG_COMMIT)
TDM_INFO("layer commit: output(%d) wait vblank", private_output->pipe);
private_output->vblank = tdm_vblank_create(private_display, private_output, NULL);
_pthread_mutex_lock(&private_display->lock);
TDM_GOTO_IF_FAIL(private_output->vblank != NULL, commit_failed);
-
- /* to call the frontend's internal vblank handlers before the extern vblank handlers */
- tdm_vblank_set_add_front(private_output->vblank, 1);
}
- if (!private_output->waiting_vblank) {
+ if (!private_output->layer_waiting_vblank) {
/* tdm_vblank APIs is for server. it should be called in unlock status*/
_pthread_mutex_unlock(&private_display->lock);
ret = tdm_vblank_wait(private_output->vblank, 0, 0, 1, _tdm_layer_cb_wait_vblank, private_output);
_pthread_mutex_lock(&private_display->lock);
TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed);
- private_output->waiting_vblank = 1;
+ private_output->layer_waiting_vblank = 1;
if (tdm_debug_module & TDM_DEBUG_COMMIT)
TDM_INFO("layer(%p) commit: wait vblank", private_layer);