summaryrefslogtreecommitdiffstats
path: root/source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch')
-rw-r--r--source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch b/source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch
new file mode 100644
index 000000000..5e6f1d75d
--- /dev/null
+++ b/source/x/x11/patch/xf86-video-xgixp/0003-shadow-shadowInit-shadowAdd-Remove.patch
@@ -0,0 +1,79 @@
+From e5789dfd027424996711f366e036a933d1b98c3f Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 29 Jul 2014 09:37:18 -0400
+Subject: [PATCH 3/5] shadow: shadowInit -> shadowAdd/Remove
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+ src/xgi.h | 1 +
+ src/xgi_driver.c | 26 +++++++++++++++++++++++++-
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/src/xgi.h b/src/xgi.h
+index 8cbe77d..e122f1c 100644
+--- a/src/xgi.h
++++ b/src/xgi.h
+@@ -534,6 +534,7 @@ typedef struct {
+ RefreshAreaFuncPtr RefreshArea;
+ CloseScreenProcPtr CloseScreen;
+ ScreenBlockHandlerProcPtr BlockHandler;
++ CreateScreenResourcesProcPtr CreateScreenResources;
+ xf86PointerMovedProc *PointerMoved;
+
+ struct xgi_regs savedReg;
+diff --git a/src/xgi_driver.c b/src/xgi_driver.c
+index c98fcf7..637e360 100644
+--- a/src/xgi_driver.c
++++ b/src/xgi_driver.c
+@@ -1702,6 +1702,25 @@ Bool XGIFBManagerInit(ScreenPtr pScreen)
+ return ret;
+ }
+
++static Bool
++XGICreateScreenResources(ScreenPtr pScreen)
++{
++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
++ XGIPtr pXGI = XGIPTR(pScrn);
++ Bool ret;
++
++ pScreen->CreateScreenResources = pXGI->CreateScreenResources;
++ ret = pScreen->CreateScreenResources(pScreen);
++ pXGI->CreateScreenResources = pScreen->CreateScreenResources;
++ pScreen->CreateScreenResources = XGICreateScreenResources;
++
++ if (ret)
++ ret = shadowAdd(pScreen, pScreen->GetScreenPixmap(pScreen),
++ XGIShadowUpdate, NULL, 0, 0);
++
++ return ret;
++}
++
+ /* Called at the start of each server generation. */
+ Bool XGIScreenInit(SCREEN_INIT_ARGS_DECL)
+ {
+@@ -2011,7 +2030,10 @@ pScrn->pScreen = pScreen;
+ {
+ pXGI->RefreshArea = XGIRefreshArea;
+ }
+- shadowInit(pScreen, XGIShadowUpdate, 0);
++ if (!shadowSetup(pScreen))
++ return FALSE;
++ pXGI->CreateScreenResources = pScreen->CreateScreenResources;
++ pScreen->CreateScreenResources = XGICreateScreenResources;
+ }
+ XGIDebug(DBG_FUNCTION, "[DBG] Jong 06142006-After pXGI->isShadowFB\n");
+
+@@ -2272,8 +2294,10 @@ static Bool XGICloseScreen(CLOSE_SCREEN_ARGS_DECL)
+
+ if (pXGI->pShadow)
+ {
++ shadowRemove(pScreen, pScreen->GetScreenPixmap(pScreen));
+ free(pXGI->pShadow);
+ pXGI->pShadow = NULL;
++ pScreen->CreateScreenResources = pXGI->CreateScreenResources;
+ }
+
+ if (pXGI->pDgaModes)
+--
+2.3.5
+