summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2007-06-25 10:51:38 +0200
committerMichel Dänzer <michel@tungstengraphics.com>2007-06-25 10:51:38 +0200
commitedb9ccf3ecb4e35a840aa13815979c5fbd73f32d (patch)
tree511da0864d21a01f81dad1c00609a511164ae769 /hw
parent4c601b904ee6fb01da3343ff9ef00d36f1341fcb (diff)
Make sure DRIScreenPrivIndex is -1 when no DRI screen private is allocated.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=11340 .
Diffstat (limited to 'hw')
-rw-r--r--hw/xfree86/dri/dri.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index dbc1690f0..2a53eae1a 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -312,12 +312,6 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
DRIEntPrivPtr pDRIEntPriv;
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- if (DRIGeneration != serverGeneration) {
- if ((DRIScreenPrivIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- DRIGeneration = serverGeneration;
- }
-
/* If the DRI extension is disabled, do not initialize the DRI */
if (noXFree86DRIExtension) {
DRIDrvMsg(pScreen->myNum, X_WARNING,
@@ -347,9 +341,16 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
pDRIEntPriv = DRI_ENT_PRIV(pScrn);
+ if (DRIGeneration != serverGeneration) {
+ if ((DRIScreenPrivIndex = AllocateScreenPrivateIndex()) < 0)
+ return FALSE;
+ DRIGeneration = serverGeneration;
+ }
+
pDRIPriv = (DRIScreenPrivPtr) xcalloc(1, sizeof(DRIScreenPrivRec));
if (!pDRIPriv) {
pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
+ DRIScreenPrivIndex = -1;
return FALSE;
}
@@ -623,7 +624,7 @@ DRICloseScreen(ScreenPtr pScreen)
DRIEntPrivPtr pDRIEntPriv = DRI_ENT_PRIV(pScrn);
Bool closeMaster;
- if (pDRIPriv && pDRIPriv->directRenderingSupport) {
+ if (pDRIPriv) {
pDRIInfo = pDRIPriv->pDriverInfo;
@@ -726,6 +727,7 @@ DRICloseScreen(ScreenPtr pScreen)
xfree(pDRIPriv);
pScreen->devPrivates[DRIScreenPrivIndex].ptr = NULL;
+ DRIScreenPrivIndex = -1;
}
}