diff options
Diffstat (limited to 'x11-base/xorg-server/files/1.6.4-re-fix-DGA-removal.patch')
-rw-r--r-- | x11-base/xorg-server/files/1.6.4-re-fix-DGA-removal.patch | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/x11-base/xorg-server/files/1.6.4-re-fix-DGA-removal.patch b/x11-base/xorg-server/files/1.6.4-re-fix-DGA-removal.patch deleted file mode 100644 index 877be51f40ee..000000000000 --- a/x11-base/xorg-server/files/1.6.4-re-fix-DGA-removal.patch +++ /dev/null @@ -1,150 +0,0 @@ -From fc31f76b6ff735e4a4006c5454c4d496ee8b154a Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Wed, 30 Sep 2009 18:40:19 +0000 -Subject: Re-fix DGA removal. - -Removing DGA ended up breaking any drivers calling into the old -xf86DiDGAInit function as it tried to see if DGA was already enabled -and ended up crashing if the VT wasn't completely initialized. Oops. - -Also, if the driver initializes DGA itself, have the DiDGA -initialization overwrite that information as the DiDGA code will call -ReInit on mode detect. - -Signed-off-by: Keith Packard <keithp@keithp.com> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> -(cherry picked from commit db98b26ee145f70e732e2cf4a6ac3de77fdf4adc) ---- -diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c -index a06f285..3f7deba 100644 ---- a/hw/xfree86/common/xf86DGA.c -+++ b/hw/xfree86/common/xf86DGA.c -@@ -120,8 +120,22 @@ DGAInit( - - DGAScreenKey = &DGAScreenKeyIndex; - -- if(!(pScreenPriv = (DGAScreenPtr)xalloc(sizeof(DGAScreenRec)))) -- return FALSE; -+ pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen); -+ -+ if (!pScreenPriv) -+ { -+ if(!(pScreenPriv = (DGAScreenPtr)xalloc(sizeof(DGAScreenRec)))) -+ return FALSE; -+ dixSetPrivate(&pScreen->devPrivates, DGAScreenKey, pScreenPriv); -+ pScreenPriv->CloseScreen = pScreen->CloseScreen; -+ pScreen->CloseScreen = DGACloseScreen; -+ pScreenPriv->DestroyColormap = pScreen->DestroyColormap; -+ pScreen->DestroyColormap = DGADestroyColormap; -+ pScreenPriv->InstallColormap = pScreen->InstallColormap; -+ pScreen->InstallColormap = DGAInstallColormap; -+ pScreenPriv->UninstallColormap = pScreen->UninstallColormap; -+ pScreen->UninstallColormap = DGAUninstallColormap; -+ } - - pScreenPriv->pScrn = pScrn; - pScreenPriv->numModes = num; -@@ -146,17 +160,6 @@ DGAInit( - modes[i].flags &= ~DGA_PIXMAP_AVAILABLE; - #endif - -- dixSetPrivate(&pScreen->devPrivates, DGAScreenKey, pScreenPriv); -- pScreenPriv->CloseScreen = pScreen->CloseScreen; -- pScreen->CloseScreen = DGACloseScreen; -- pScreenPriv->DestroyColormap = pScreen->DestroyColormap; -- pScreen->DestroyColormap = DGADestroyColormap; -- pScreenPriv->InstallColormap = pScreen->InstallColormap; -- pScreen->InstallColormap = DGAInstallColormap; -- pScreenPriv->UninstallColormap = pScreen->UninstallColormap; -- pScreen->UninstallColormap = DGAUninstallColormap; -- -- - return TRUE; - } - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 899cea5..2627029 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -770,7 +770,7 @@ xf86CrtcScreenInit (ScreenPtr screen) - screen->CloseScreen = xf86CrtcCloseScreen; - - #ifdef XFreeXDGA -- xf86DiDGAInit(screen, 0); -+ _xf86_di_dga_init_internal(screen); - #endif - #ifdef RANDR_13_INTERFACE - return RANDR_INTERFACE_VERSION; -@@ -1887,7 +1887,7 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn) - scrn->currentMode = scrn->modes; - #ifdef XFreeXDGA - if (scrn->pScreen) -- xf86DiDGAReInit(scrn->pScreen); -+ _xf86_di_dga_reinit_internal(scrn->pScreen); - #endif - } - -diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h -index 0a596bc..4fe4150 100644 ---- a/hw/xfree86/modes/xf86Crtc.h -+++ b/hw/xfree86/modes/xf86Crtc.h -@@ -807,6 +807,10 @@ xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus); - Bool - xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address); - -+/* this is the real function, used only internally */ -+_X_INTERNAL Bool -+_xf86_di_dga_init_internal (ScreenPtr pScreen); -+ - /** - * Re-initialize dga for this screen (as when the set of modes changes) - */ -@@ -814,6 +818,10 @@ xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address); - Bool - xf86DiDGAReInit (ScreenPtr pScreen); - -+/* This is the real function, used only internally */ -+_X_INTERNAL Bool -+_xf86_di_dga_reinit_internal (ScreenPtr pScreen); -+ - /* - * Set the subpixel order reported for the screen using - * the information from the outputs -diff --git a/hw/xfree86/modes/xf86DiDGA.c b/hw/xfree86/modes/xf86DiDGA.c -index 3992c09..bc59535 100644 ---- a/hw/xfree86/modes/xf86DiDGA.c -+++ b/hw/xfree86/modes/xf86DiDGA.c -@@ -175,6 +175,12 @@ static DGAFunctionRec xf86_dga_funcs = { - _X_EXPORT Bool - xf86DiDGAReInit (ScreenPtr pScreen) - { -+ return TRUE; -+} -+ -+Bool -+_xf86_di_dga_reinit_internal (ScreenPtr pScreen) -+{ - ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; - xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); - -@@ -190,12 +196,15 @@ xf86DiDGAReInit (ScreenPtr pScreen) - _X_EXPORT Bool - xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address) - { -+ return TRUE; -+} -+ -+Bool -+_xf86_di_dga_init_internal (ScreenPtr pScreen) -+{ - ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; - xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); - -- if (DGAAvailable(pScreen->myNum)) -- return TRUE; -- - xf86_config->dga_flags = 0; - xf86_config->dga_address = 0; - xf86_config->dga_width = 0; --- -cgit v0.8.2 |