From: Michel Dänzer <michel.daen...@amd.com> In preparation for the next change, which will modify it to a static function which needs to be in the new place. No functional change.
Signed-off-by: Michel Dänzer <michel.daen...@amd.com> --- src/radeon_dri2.c | 116 +++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index a0eecac..a3f0776 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -613,6 +613,64 @@ xf86CrtcPtr radeon_dri2_drawable_crtc(DrawablePtr pDraw, Bool consider_disabled) return NULL; } +void radeon_dri2_flip_event_handler(unsigned int frame, unsigned int tv_sec, + unsigned int tv_usec, void *event_data) +{ + DRI2FrameEventPtr flip = event_data; + DrawablePtr drawable; + ScreenPtr screen; + ScrnInfoPtr scrn; + int status; + PixmapPtr pixmap; + + status = dixLookupDrawable(&drawable, flip->drawable_id, serverClient, + M_ANY, DixWriteAccess); + if (status != Success) { + free(flip); + return; + } + if (!flip->crtc) { + free(flip); + return; + } + frame += radeon_get_interpolated_vblanks(flip->crtc); + + screen = drawable->pScreen; + scrn = xf86ScreenToScrn(screen); + + pixmap = screen->GetScreenPixmap(screen); + xf86DrvMsgVerb(scrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "%s:%d fevent[%p] width %d pitch %d (/4 %d)\n", + __func__, __LINE__, flip, pixmap->drawable.width, pixmap->devKind, pixmap->devKind/4); + + /* We assume our flips arrive in order, so we don't check the frame */ + switch (flip->type) { + case DRI2_SWAP: + /* Check for too small vblank count of pageflip completion, taking wraparound + * into account. This usually means some defective kms pageflip completion, + * causing wrong (msc, ust) return values and possible visual corruption. + */ + if ((frame < flip->frame) && (flip->frame - frame < 5)) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, + "%s: Pageflip completion event has impossible msc %d < target_msc %d\n", + __func__, frame, flip->frame); + /* All-Zero values signal failure of (msc, ust) timestamping to client. */ + frame = tv_sec = tv_usec = 0; + } + + DRI2SwapComplete(flip->client, drawable, frame, tv_sec, tv_usec, + DRI2_FLIP_COMPLETE, flip->event_complete, + flip->event_data); + break; + default: + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: unknown vblank event received\n", __func__); + /* Unknown type */ + break; + } + + free(flip); +} + static Bool radeon_dri2_schedule_flip(ScrnInfoPtr scrn, ClientPtr client, DrawablePtr draw, DRI2BufferPtr front, @@ -1223,64 +1281,6 @@ out_complete: return TRUE; } -void radeon_dri2_flip_event_handler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *event_data) -{ - DRI2FrameEventPtr flip = event_data; - DrawablePtr drawable; - ScreenPtr screen; - ScrnInfoPtr scrn; - int status; - PixmapPtr pixmap; - - status = dixLookupDrawable(&drawable, flip->drawable_id, serverClient, - M_ANY, DixWriteAccess); - if (status != Success) { - free(flip); - return; - } - if (!flip->crtc) { - free(flip); - return; - } - frame += radeon_get_interpolated_vblanks(flip->crtc); - - screen = drawable->pScreen; - scrn = xf86ScreenToScrn(screen); - - pixmap = screen->GetScreenPixmap(screen); - xf86DrvMsgVerb(scrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, - "%s:%d fevent[%p] width %d pitch %d (/4 %d)\n", - __func__, __LINE__, flip, pixmap->drawable.width, pixmap->devKind, pixmap->devKind/4); - - /* We assume our flips arrive in order, so we don't check the frame */ - switch (flip->type) { - case DRI2_SWAP: - /* Check for too small vblank count of pageflip completion, taking wraparound - * into account. This usually means some defective kms pageflip completion, - * causing wrong (msc, ust) return values and possible visual corruption. - */ - if ((frame < flip->frame) && (flip->frame - frame < 5)) { - xf86DrvMsg(scrn->scrnIndex, X_WARNING, - "%s: Pageflip completion event has impossible msc %d < target_msc %d\n", - __func__, frame, flip->frame); - /* All-Zero values signal failure of (msc, ust) timestamping to client. */ - frame = tv_sec = tv_usec = 0; - } - - DRI2SwapComplete(flip->client, drawable, frame, tv_sec, tv_usec, - DRI2_FLIP_COMPLETE, flip->event_complete, - flip->event_data); - break; - default: - xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: unknown vblank event received\n", __func__); - /* Unknown type */ - break; - } - - free(flip); -} - /* * ScheduleSwap is responsible for requesting a DRM vblank event for the * appropriate frame. -- 2.1.4 _______________________________________________ xorg-driver-ati mailing list xorg-driver-ati@lists.x.org http://lists.x.org/mailman/listinfo/xorg-driver-ati