Fix rotation mem with kernel memory manager in VT switch
Unbind and bind a DRM BO may change the buffer offset, thus crtc may reference a wrong rotated memory after a VT switch cycle. Destroying it here will cause its reallocation when entering VT.
This commit is contained in:
parent
5f27247187
commit
a8f4108bea
|
|
@ -3088,6 +3088,8 @@ I830LeaveVT(int scrnIndex, int flags)
|
|||
{
|
||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||
int o;
|
||||
|
||||
DPRINTF(PFX, "Leave VT\n");
|
||||
|
||||
|
|
@ -3115,6 +3117,17 @@ I830LeaveVT(int scrnIndex, int flags)
|
|||
}
|
||||
#endif
|
||||
|
||||
for (o = 0; o < config->num_crtc; o++) {
|
||||
xf86CrtcPtr crtc = config->crtc[o];
|
||||
|
||||
if (crtc->rotatedPixmap || crtc->rotatedData) {
|
||||
crtc->funcs->shadow_destroy(crtc, crtc->rotatedPixmap,
|
||||
crtc->rotatedData);
|
||||
crtc->rotatedPixmap = NULL;
|
||||
crtc->rotatedData = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
xf86_hide_cursors (pScrn);
|
||||
|
||||
RestoreHWState(pScrn);
|
||||
|
|
|
|||
Loading…
Reference in New Issue