diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index 5fa17d7..b380ab4 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -1708,6 +1708,25 @@ sna_dri_immediate_blit(struct sna *sna, DBG(("%s: emitting immediate blit, throttling client\n", __FUNCTION__)); VG_CLEAR(vbl); + { + info->type = DRI2_SWAP; + info->bo = sna_dri_copy_to_front(sna, draw, NULL, + get_private(info->front)->bo, + get_private(info->back)->bo, + true); + + vbl.request.type = + DRM_VBLANK_RELATIVE | + DRM_VBLANK_NEXTONMISS | + DRM_VBLANK_EVENT | + pipe_select(info->pipe); + vbl.request.sequence = 0; + vbl.request.signal = (unsigned long)info; + if (sna_wait_vblank(sna, &vbl)) + sna_dri_frame_event_info_free(sna, draw, info); + return; + } + if ((sna->flags & SNA_NO_WAIT) == 0) { info->type = DRI2_SWAP_THROTTLE; if (sna_dri_window_get_chain((WindowPtr)draw) == info) {