sna/dri: Don't contribute missed frames to the target_msc

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2013-01-23 21:32:29 +00:00
parent 50b41cb485
commit 778dba90cf
1 changed files with 4 additions and 5 deletions

View File

@ -2082,18 +2082,17 @@ sna_dri_schedule_swap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
(uint32_t)*target_msc, (uint32_t)current_msc, (uint32_t)divisor));
if (divisor == 0 && current_msc >= *target_msc - 1) {
bool sync = current_msc < *target_msc;
if (can_exchange(sna, draw, front, back)) {
sna_dri_immediate_xchg(sna, draw, info,
current_msc < *target_msc);
sna_dri_immediate_xchg(sna, draw, info, sync);
} else if (can_blit(sna, draw, front, back)) {
sna_dri_immediate_blit(sna, draw, info,
current_msc < *target_msc);
sna_dri_immediate_blit(sna, draw, info, sync);
} else {
DRI2SwapComplete(client, draw, 0, 0, 0,
DRI2_BLIT_COMPLETE, func, data);
sna_dri_frame_event_info_free(sna, draw, info);
}
*target_msc = current_msc + 1;
*target_msc = current_msc + sync;
return TRUE;
}