File xf86-video-mga-g200se-swcursor.diff of Package xf86-video-mga

Index: src/mga_driver.c
===================================================================
--- src/mga_driver.c.orig
+++ src/mga_driver.c
@@ -1648,7 +1648,16 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
         if (!xf86IsPrimInitDone(pScrn->entityList[0])) { /* Is it the first initialisation? */
             /* First CRTC  */
             pMga->SecondCrtc = FALSE;
-            pMga->HWCursor = TRUE;
+            /* 
+             * Disable HWCursor to make the cursor visible on
+             * remote video redirection (bnc #431311)
+             */
+            if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) || 
+                (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+                pMga->HWCursor = FALSE;
+            } else {
+                pMga->HWCursor = TRUE;
+            }
             pMgaEnt->pScrn_1 = pScrn;
         } else if (pMga->DualHeadEnabled) {
             /* Second CRTC */
@@ -1679,7 +1688,16 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 #endif
     } else {                                              /* single-head mode */
         pMga->SecondCrtc = FALSE;
-        pMga->HWCursor = TRUE;
+        /* 
+         * Disable HWCursor to make the cursor visible on
+         * remote video redirection (bnc #431311)
+         */
+        if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) || 
+            (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+            pMga->HWCursor = FALSE;
+        } else {
+            pMga->HWCursor = TRUE;
+        }
 #ifdef MGADRI
         pMga->GetQuiescence = MGAGetQuiescence;
 #endif