st/xorg: Fix crash on resize with libkms
authorJakob Bornecrantz <jakob@vmware.com>
Mon, 25 Jan 2010 19:07:43 +0000 (20:07 +0100)
committerJakob Bornecrantz <jakob@vmware.com>
Mon, 25 Jan 2010 19:12:59 +0000 (20:12 +0100)
src/gallium/state_trackers/xorg/xorg_driver.c

index 0ff6c52915768d4421731c581e55242f8bca10df..e4ad789e9bccb2dbc26391b70ec638acb44fd1a3 100644 (file)
@@ -1066,12 +1066,22 @@ drv_bind_front_buffer_kms(ScrnInfoPtr pScrn)
        goto err_destroy;
 
     pScreen->ModifyPixmapHeader(rootPixmap,
-                               pScreen->width,
-                               pScreen->height,
+                               pScrn->virtualX,
+                               pScrn->virtualY,
                                pScreen->rootDepth,
                                pScrn->bitsPerPixel,
                                stride,
                                ptr);
+
+    /* This a hack to work around EnableDisableFBAccess setting the pointer
+     * the real fix would be to replace pScrn->EnableDisableFBAccess hook
+     * and set the rootPixmap->devPrivate.ptr to something valid before that.
+     *
+     * But in its infinit visdome something uses either this some times before
+     * that, so our hook doesn't get called before the crash happens.
+     */
+    pScrn->pixmapPrivate.ptr = ptr;
+
     return TRUE;
 
 err_destroy: