Signed-off-by: Matthieu Herrb <[email protected]>
---
 src/neo.h        |  1 +
 src/neo_driver.c | 40 +++++++++++++++++++++++++++++++++++++++-
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/src/neo.h b/src/neo.h
index 6812e7a..7b386d4 100644
--- a/src/neo.h
+++ b/src/neo.h
@@ -261,6 +261,7 @@ typedef struct neoRec
     vbeInfoPtr          pVbe;
     unsigned char * ShadowPtr;
     int ShadowPitch;
+    CreateScreenResourcesProcPtr CreateScreenResources;
     RefreshAreaFuncPtr refreshArea;
     void       (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
     int rotate;
diff --git a/src/neo_driver.c b/src/neo_driver.c
index a17b925..7e60f3e 100644
--- a/src/neo_driver.c
+++ b/src/neo_driver.c
@@ -1401,6 +1401,44 @@ NEOLoadPalette(
    } 
 }
 
+static Bool
+NEOCreateScreenResources(ScreenPtr pScreen)
+{
+       ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+       NEOPtr pNeo = NEOPTR(pScrn);
+       PixmapPtr pPixmap;
+       Bool ret;
+
+       pScreen->CreateScreenResources = pNeo->CreateScreenResources;
+       ret = pScreen->CreateScreenResources(pScreen);
+       pScreen->CreateScreenResources = NEOCreateScreenResources;
+
+       if (!ret)
+               return FALSE;
+
+       pPixmap = pScreen->GetScreenPixmap(pScreen);
+
+       if (!shadowAdd(pScreen, pPixmap, neoShadowUpdate,
+               NULL, 0, NULL)) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+static Bool
+NEOShadowInit(ScreenPtr pScreen)
+{
+       ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+       NEOPtr pNeo = NEOPTR(pScrn);
+
+       if (!shadowSetup(pScreen))
+               return FALSE;
+       pNeo->CreateScreenResources = pScreen->CreateScreenResources;
+       pScreen->CreateScreenResources = NEOCreateScreenResources;
+
+       return TRUE;
+}
+
 /* Mandatory */
 static Bool
 NEOScreenInit(SCREEN_INIT_ARGS_DECL)
@@ -1651,7 +1689,7 @@ NEOScreenInit(SCREEN_INIT_ARGS_DECL)
 #if 0
        ShadowFBInit(pScreen, nPtr->refreshArea);
 #else
-       shadowInit (pScreen, neoShadowUpdate, 0);
+       NEOShadowInit (pScreen);
 #endif
     }
     
-- 
1.8.3

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to