summaryrefslogtreecommitdiff
path: root/randr
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2008-01-03 17:04:54 +1030
committerPeter Hutterer <peter@cs.unisa.edu.au>2008-01-03 17:04:54 +1030
commit8da83836b60f7cdb75d08482f4311fa0e2ab4e1d (patch)
tree092efcfc39e3e293baaf04c4c84027ee453d3e13 /randr
parenteace88989c3b65d5c20e9f37ea9b23c7c8e19335 (diff)
parentae869fc7669764729e13fdd70149ed636753f2a3 (diff)
Merge branch 'master' into mpx
Conflicts: XTrap/xtrapddmi.c Xext/security.c Xext/xprint.c Xext/xtest.c Xext/xvdisp.c Xi/exevents.c Xi/grabdevb.c Xi/grabdevk.c Xi/opendev.c Xi/ungrdev.c Xi/ungrdevb.c Xi/ungrdevk.c dix/cursor.c dix/devices.c dix/dixutils.c dix/events.c dix/getevents.c dix/main.c dix/window.c hw/xfree86/ramdac/xf86Cursor.c include/dix.h include/input.h include/inputstr.h mi/midispcur.c mi/miinitext.c mi/misprite.c render/animcur.c xfixes/cursor.c xkb/xkbAccessX.c
Diffstat (limited to 'randr')
-rw-r--r--randr/randr.c16
-rw-r--r--randr/randrstr.h10
-rw-r--r--randr/rrcrtc.c10
-rw-r--r--randr/rrmode.c5
-rw-r--r--randr/rroutput.c5
5 files changed, 18 insertions, 28 deletions
diff --git a/randr/randr.c b/randr/randr.c
index 958f9c192..bc2b995d2 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -56,9 +56,9 @@ static int SProcRRDispatch (ClientPtr pClient);
int RREventBase;
int RRErrorBase;
RESTYPE RRClientType, RREventType; /* resource types for event masks */
-int RRClientPrivateIndex;
+DevPrivateKey RRClientPrivateKey = &RRClientPrivateKey;
-int rrPrivIndex = -1;
+DevPrivateKey rrPrivKey = &rrPrivKey;
static void
RRClientCallback (CallbackListPtr *list,
@@ -214,8 +214,6 @@ Bool RRInit (void)
return TRUE;
}
-static int RRScreenGeneration;
-
Bool RRScreenInit(ScreenPtr pScreen)
{
rrScrPrivPtr pScrPriv;
@@ -223,13 +221,6 @@ Bool RRScreenInit(ScreenPtr pScreen)
if (!RRInit ())
return FALSE;
- if (RRScreenGeneration != serverGeneration)
- {
- if ((rrPrivIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- RRScreenGeneration = serverGeneration;
- }
-
pScrPriv = (rrScrPrivPtr) xcalloc (1, sizeof (rrScrPrivRec));
if (!pScrPriv)
return FALSE;
@@ -333,8 +324,7 @@ RRExtensionInit (void)
if (RRNScreens == 0) return;
- RRClientPrivateIndex = AllocateClientPrivateIndex ();
- if (!AllocateClientPrivate (RRClientPrivateIndex,
+ if (!dixRequestPrivate(RRClientPrivateKey,
sizeof (RRClientRec) +
screenInfo.numScreens * sizeof (RRTimesRec)))
return;
diff --git a/randr/randrstr.h b/randr/randrstr.h
index bd19fe9d0..e8358bc0c 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -262,11 +262,11 @@ typedef struct _rrScrPriv {
#endif
} rrScrPrivRec, *rrScrPrivPtr;
-extern int rrPrivIndex;
+extern DevPrivateKey rrPrivKey;
-#define rrGetScrPriv(pScr) ((rrScrPrivPtr) (pScr)->devPrivates[rrPrivIndex].ptr)
+#define rrGetScrPriv(pScr) ((rrScrPrivPtr)dixLookupPrivate(&(pScr)->devPrivates, rrPrivKey))
#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
-#define SetRRScreen(s,p) ((s)->devPrivates[rrPrivIndex].ptr = (pointer) (p))
+#define SetRRScreen(s,p) dixSetPrivate(&(s)->devPrivates, rrPrivKey, p)
/*
* each window has a list of clients requesting
@@ -298,7 +298,7 @@ typedef struct _RRClient {
} RRClientRec, *RRClientPtr;
extern RESTYPE RRClientType, RREventType; /* resource types for event masks */
-extern int RRClientPrivateIndex;
+extern DevPrivateKey RRClientPrivateKey;
extern RESTYPE RRCrtcType, RRModeType, RROutputType;
#define LookupOutput(client,id,a) ((RROutputPtr) \
@@ -311,7 +311,7 @@ extern RESTYPE RRCrtcType, RRModeType, RROutputType;
(SecurityLookupIDByType (client, id, \
RRModeType, a)))
-#define GetRRClient(pClient) ((RRClientPtr) (pClient)->devPrivates[RRClientPrivateIndex].ptr)
+#define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey))
#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
/* Initialize the extension */
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index db5007e28..7c22437a9 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -22,6 +22,7 @@
#include "randrstr.h"
#include "swaprep.h"
+#include "registry.h"
RESTYPE RRCrtcType;
@@ -72,7 +73,7 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate)
return FALSE;
pScrPriv->crtcs = crtcs;
- crtc = xalloc (sizeof (RRCrtcRec));
+ crtc = xcalloc (1, sizeof (RRCrtcRec));
if (!crtc)
return NULL;
crtc->id = FakeClientID (0);
@@ -150,7 +151,8 @@ RRCrtcNotify (RRCrtcPtr crtc,
break;
if (i == numOutputs)
{
- crtc->outputs[j]->crtc = NULL;
+ if (crtc->outputs[j]->crtc == crtc)
+ crtc->outputs[j]->crtc = NULL;
RROutputChanged (crtc->outputs[j], FALSE);
RRCrtcChanged (crtc, FALSE);
}
@@ -500,9 +502,7 @@ RRCrtcInit (void)
RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource);
if (!RRCrtcType)
return FALSE;
-#ifdef XResExtension
- RegisterResourceName (RRCrtcType, "CRTC");
-#endif
+ RegisterResourceName (RRCrtcType, "CRTC");
return TRUE;
}
diff --git a/randr/rrmode.c b/randr/rrmode.c
index 11175810c..d5072084a 100644
--- a/randr/rrmode.c
+++ b/randr/rrmode.c
@@ -21,6 +21,7 @@
*/
#include "randrstr.h"
+#include "registry.h"
RESTYPE RRModeType;
@@ -165,6 +166,8 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret)
int num_screen_modes = 0;
screen_modes = xalloc ((num_modes ? num_modes : 1) * sizeof (RRModePtr));
+ if (!screen_modes)
+ return NULL;
/*
* Add modes from all outputs
@@ -266,9 +269,7 @@ RRModeInit (void)
RRModeType = CreateNewResourceType (RRModeDestroyResource);
if (!RRModeType)
return FALSE;
-#ifdef XResExtension
RegisterResourceName (RRModeType, "MODE");
-#endif
return TRUE;
}
diff --git a/randr/rroutput.c b/randr/rroutput.c
index c1e971ddc..1ecde31a2 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -21,6 +21,7 @@
*/
#include "randrstr.h"
+#include "registry.h"
RESTYPE RROutputType;
@@ -420,9 +421,7 @@ RROutputInit (void)
RROutputType = CreateNewResourceType (RROutputDestroyResource);
if (!RROutputType)
return FALSE;
-#ifdef XResExtension
- RegisterResourceName (RROutputType, "OUTPUT");
-#endif
+ RegisterResourceName (RROutputType, "OUTPUT");
return TRUE;
}