tdm_private_layer *l = NULL;
char *p = bufs;
int *remain = &len;
+ int n;
pipe = private_output->pipe;
zpos = private_layer->caps.zpos;
TDM_SNPRINTF(p, remain, "_%p", l->showing_buffer->buffer);
}
- snprintf(fname, sizeof(fname), "tdm_%d_lyr_%d%s", pipe, zpos, bufs);
+ n = snprintf(fname, sizeof(fname), "tdm_%d_lyr_%d%s", pipe, zpos, bufs);
+ if ((size_t)n >= sizeof(fname)) {
+ fname[sizeof(fname) - 1] = '\0';
+ }
tbm_surface_internal_dump_buffer(buffer, fname);
TDM_DBG("%s dump excute", fname);
_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);
+ if (ret != TDM_ERROR_NONE) {
+ if (TDM_OUTPUT_DPMS_VSYNC_IS_OFF(private_output->current_dpms_value)) {
+ /* dpms off : the allocated memory was free in tdm_output_commit_internal */
+ return ret;
+ }
+ goto commit_failed;
+
+ }
private_output->layer_waiting_vblank = 1;
if (tdm_debug_module & TDM_DEBUG_COMMIT)