xf86-video-intel: src/i830_driver.c

Zhenyu Wang zhen at kemper.freedesktop.org
Tue Mar 11 23:45:52 PDT 2008


 src/i830_driver.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit a8f4108bea0966406b0fcae8d062ae1cfb4afbb3
Author: Hong Liu <hong.liu at intel.com>
Date:   Wed Mar 12 21:55:56 2008 +0800

    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.

diff --git a/src/i830_driver.c b/src/i830_driver.c
index 4c28267..644a11c 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -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);


More information about the xorg-commit mailing list