Commit e440ea76 authored by Mike Gabriel's avatar Mike Gabriel

randr extension: Convert to Xorg coding style.

The reformatting has been achieved by applying x-indent.sh to all .c and .h files in Xserver/randr/.
parent 7f7c96c7
...@@ -67,13 +67,13 @@ typedef struct { ...@@ -67,13 +67,13 @@ typedef struct {
#define sz_xPanoramiXQueryVersionReply 32 #define sz_xPanoramiXQueryVersionReply 32
typedef struct _PanoramiXGetState { typedef struct _PanoramiXGetState {
CARD8 reqType; /* always PanoramiXReqCode */ CARD8 reqType; /* always PanoramiXReqCode */
CARD8 panoramiXReqType; /* always X_PanoramiXGetState */ CARD8 panoramiXReqType; /* always X_PanoramiXGetState */
CARD16 length B16; CARD16 length B16;
CARD32 window B32; CARD32 window B32;
} xPanoramiXGetStateReq; } xPanoramiXGetStateReq;
#define sz_xPanoramiXGetStateReq 8 #define sz_xPanoramiXGetStateReq 8
typedef struct { typedef struct {
...@@ -97,6 +97,7 @@ typedef struct _PanoramiXGetScreenCount { ...@@ -97,6 +97,7 @@ typedef struct _PanoramiXGetScreenCount {
CARD16 length B16; CARD16 length B16;
CARD32 window B32; CARD32 window B32;
} xPanoramiXGetScreenCountReq; } xPanoramiXGetScreenCountReq;
#define sz_xPanoramiXGetScreenCountReq 8 #define sz_xPanoramiXGetScreenCountReq 8
typedef struct { typedef struct {
...@@ -111,6 +112,7 @@ typedef struct { ...@@ -111,6 +112,7 @@ typedef struct {
CARD32 pad4 B32; /* unused */ CARD32 pad4 B32; /* unused */
CARD32 pad5 B32; /* unused */ CARD32 pad5 B32; /* unused */
} xPanoramiXGetScreenCountReply; } xPanoramiXGetScreenCountReply;
#define sz_panoramiXGetScreenCountReply 32 #define sz_panoramiXGetScreenCountReply 32
typedef struct _PanoramiXGetScreenSize { typedef struct _PanoramiXGetScreenSize {
...@@ -120,6 +122,7 @@ typedef struct _PanoramiXGetScreenSize { ...@@ -120,6 +122,7 @@ typedef struct _PanoramiXGetScreenSize {
CARD32 window B32; CARD32 window B32;
CARD32 screen B32; CARD32 screen B32;
} xPanoramiXGetScreenSizeReq; } xPanoramiXGetScreenSizeReq;
#define sz_xPanoramiXGetScreenSizeReq 12 #define sz_xPanoramiXGetScreenSizeReq 12
typedef struct { typedef struct {
...@@ -134,6 +137,7 @@ typedef struct { ...@@ -134,6 +137,7 @@ typedef struct {
CARD32 pad2 B32; /* unused */ CARD32 pad2 B32; /* unused */
CARD32 pad3 B32; /* unused */ CARD32 pad3 B32; /* unused */
} xPanoramiXGetScreenSizeReply; } xPanoramiXGetScreenSizeReply;
#define sz_panoramiXGetScreenSizeReply 32 #define sz_panoramiXGetScreenSizeReply 32
/************ Alternate protocol ******************/ /************ Alternate protocol ******************/
...@@ -143,6 +147,7 @@ typedef struct { ...@@ -143,6 +147,7 @@ typedef struct {
CARD8 panoramiXReqType; CARD8 panoramiXReqType;
CARD16 length B16; CARD16 length B16;
} xXineramaIsActiveReq; } xXineramaIsActiveReq;
#define sz_xXineramaIsActiveReq 4 #define sz_xXineramaIsActiveReq 4
typedef struct { typedef struct {
...@@ -157,14 +162,15 @@ typedef struct { ...@@ -157,14 +162,15 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xXineramaIsActiveReply; } xXineramaIsActiveReply;
#define sz_XineramaIsActiveReply 32
#define sz_XineramaIsActiveReply 32
typedef struct { typedef struct {
CARD8 reqType; CARD8 reqType;
CARD8 panoramiXReqType; CARD8 panoramiXReqType;
CARD16 length B16; CARD16 length B16;
} xXineramaQueryScreensReq; } xXineramaQueryScreensReq;
#define sz_xXineramaQueryScreensReq 4 #define sz_xXineramaQueryScreensReq 4
typedef struct { typedef struct {
...@@ -179,6 +185,7 @@ typedef struct { ...@@ -179,6 +185,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xXineramaQueryScreensReply; } xXineramaQueryScreensReply;
#define sz_XineramaQueryScreensReply 32 #define sz_XineramaQueryScreensReply 32
typedef struct { typedef struct {
...@@ -187,6 +194,7 @@ typedef struct { ...@@ -187,6 +194,7 @@ typedef struct {
CARD16 width B16; CARD16 width B16;
CARD16 height B16; CARD16 height B16;
} xXineramaScreenInfo; } xXineramaScreenInfo;
#define sz_XineramaScreenInfo 8 #define sz_XineramaScreenInfo 8
#endif #endif
...@@ -67,8 +67,8 @@ static int RRNScreens; ...@@ -67,8 +67,8 @@ static int RRNScreens;
real->mem = priv->mem; \ real->mem = priv->mem; \
} }
static int ProcRRDispatch (ClientPtr pClient); static int ProcRRDispatch(ClientPtr pClient);
static int SProcRRDispatch (ClientPtr pClient); static int SProcRRDispatch(ClientPtr pClient);
int RREventBase; int RREventBase;
int RRErrorBase; int RRErrorBase;
...@@ -83,25 +83,23 @@ int rrPrivIndex = -1; ...@@ -83,25 +83,23 @@ int rrPrivIndex = -1;
#endif #endif
static void static void
RRClientCallback (CallbackListPtr *list, RRClientCallback(CallbackListPtr *list, void *closure, void *data)
void * closure,
void * data)
{ {
NewClientInfoRec *clientinfo = (NewClientInfoRec *) data; NewClientInfoRec *clientinfo = (NewClientInfoRec *) data;
ClientPtr pClient = clientinfo->client; ClientPtr pClient = clientinfo->client;
rrClientPriv(pClient); rrClientPriv(pClient);
RRTimesPtr pTimes = (RRTimesPtr) (pRRClient + 1); RRTimesPtr pTimes = (RRTimesPtr) (pRRClient + 1);
int i; int i;
pRRClient->major_version = 0; pRRClient->major_version = 0;
pRRClient->minor_version = 0; pRRClient->minor_version = 0;
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++) {
{
ScreenPtr pScreen = screenInfo.screens[i]; ScreenPtr pScreen = screenInfo.screens[i];
rrScrPriv(pScreen); rrScrPriv(pScreen);
if (pScrPriv) if (pScrPriv) {
{
pTimes[i].setTime = pScrPriv->lastSetTime; pTimes[i].setTime = pScrPriv->lastSetTime;
pTimes[i].configTime = pScrPriv->lastConfigTime; pTimes[i].configTime = pScrPriv->lastConfigTime;
} }
...@@ -109,32 +107,32 @@ RRClientCallback (CallbackListPtr *list, ...@@ -109,32 +107,32 @@ RRClientCallback (CallbackListPtr *list,
} }
static void static void
RRResetProc (ExtensionEntry *extEntry) RRResetProc(ExtensionEntry * extEntry)
{ {
} }
static Bool static Bool
RRCloseScreen (int i, ScreenPtr pScreen) RRCloseScreen(int i, ScreenPtr pScreen)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
int j; int j;
unwrap (pScrPriv, pScreen, CloseScreen); unwrap(pScrPriv, pScreen, CloseScreen);
for (j = pScrPriv->numCrtcs - 1; j >= 0; j--) for (j = pScrPriv->numCrtcs - 1; j >= 0; j--)
RRCrtcDestroy (pScrPriv->crtcs[j]); RRCrtcDestroy(pScrPriv->crtcs[j]);
for (j = pScrPriv->numOutputs - 1; j >= 0; j--) for (j = pScrPriv->numOutputs - 1; j >= 0; j--)
RROutputDestroy (pScrPriv->outputs[j]); RROutputDestroy(pScrPriv->outputs[j]);
xfree (pScrPriv->crtcs); xfree(pScrPriv->crtcs);
xfree (pScrPriv->outputs); xfree(pScrPriv->outputs);
xfree (pScrPriv); xfree(pScrPriv);
RRNScreens -= 1; /* ok, one fewer screen with RandR running */ RRNScreens -= 1; /* ok, one fewer screen with RandR running */
return (*pScreen->CloseScreen) (i, pScreen); return (*pScreen->CloseScreen) (i, pScreen);
} }
static void static void
SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from, SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent * from,
xRRScreenChangeNotifyEvent *to) xRRScreenChangeNotifyEvent * to)
{ {
to->type = from->type; to->type = from->type;
to->rotation = from->rotation; to->rotation = from->rotation;
...@@ -152,8 +150,8 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from, ...@@ -152,8 +150,8 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from,
} }
static void static void
SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from, SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent * from,
xRRCrtcChangeNotifyEvent *to) xRRCrtcChangeNotifyEvent * to)
{ {
to->type = from->type; to->type = from->type;
to->subCode = from->subCode; to->subCode = from->subCode;
...@@ -171,8 +169,8 @@ SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from, ...@@ -171,8 +169,8 @@ SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from,
} }
static void static void
SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from, SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent * from,
xRROutputChangeNotifyEvent *to) xRROutputChangeNotifyEvent * to)
{ {
to->type = from->type; to->type = from->type;
to->subCode = from->subCode; to->subCode = from->subCode;
...@@ -187,8 +185,8 @@ SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from, ...@@ -187,8 +185,8 @@ SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from,
} }
static void static void
SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from, SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent * from,
xRROutputPropertyNotifyEvent *to) xRROutputPropertyNotifyEvent * to)
{ {
to->type = from->type; to->type = from->type;
to->subCode = from->subCode; to->subCode = from->subCode;
...@@ -200,20 +198,19 @@ SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from, ...@@ -200,20 +198,19 @@ SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from,
} }
static void static void
SRRNotifyEvent (xEvent *from, SRRNotifyEvent(xEvent *from, xEvent *to)
xEvent *to)
{ {
switch (from->u.u.detail) { switch (from->u.u.detail) {
case RRNotify_CrtcChange: case RRNotify_CrtcChange:
SRRCrtcChangeNotifyEvent ((xRRCrtcChangeNotifyEvent *) from, SRRCrtcChangeNotifyEvent((xRRCrtcChangeNotifyEvent *) from,
(xRRCrtcChangeNotifyEvent *) to); (xRRCrtcChangeNotifyEvent *) to);
break; break;
case RRNotify_OutputChange: case RRNotify_OutputChange:
SRROutputChangeNotifyEvent ((xRROutputChangeNotifyEvent *) from, SRROutputChangeNotifyEvent((xRROutputChangeNotifyEvent *) from,
(xRROutputChangeNotifyEvent *) to); (xRROutputChangeNotifyEvent *) to);
break; break;
case RRNotify_OutputProperty: case RRNotify_OutputProperty:
SRROutputPropertyNotifyEvent ((xRROutputPropertyNotifyEvent *) from, SRROutputPropertyNotifyEvent((xRROutputPropertyNotifyEvent *) from,
(xRROutputPropertyNotifyEvent *) to); (xRROutputPropertyNotifyEvent *) to);
break; break;
default: default:
...@@ -223,33 +220,34 @@ SRRNotifyEvent (xEvent *from, ...@@ -223,33 +220,34 @@ SRRNotifyEvent (xEvent *from,
static int RRGeneration; static int RRGeneration;
Bool RRInit (void) Bool
RRInit(void)
{ {
if (RRGeneration != serverGeneration) if (RRGeneration != serverGeneration) {
{ #ifdef NXAGENT_SERVER
#ifdef NXAGENT_SERVER
if ((rrPrivIndex = AllocateScreenPrivateIndex()) < 0) if ((rrPrivIndex = AllocateScreenPrivateIndex()) < 0)
return FALSE; return FALSE;
#endif #endif
if (!RRModeInit ()) if (!RRModeInit())
return FALSE; return FALSE;
if (!RRCrtcInit ()) if (!RRCrtcInit())
return FALSE; return FALSE;
if (!RROutputInit ()) if (!RROutputInit())
return FALSE; return FALSE;
RRGeneration = serverGeneration; RRGeneration = serverGeneration;
} }
return TRUE; return TRUE;
} }
Bool RRScreenInit(ScreenPtr pScreen) Bool
RRScreenInit(ScreenPtr pScreen)
{ {
rrScrPrivPtr pScrPriv; rrScrPrivPtr pScrPriv;
if (!RRInit ()) if (!RRInit())
return FALSE; return FALSE;
pScrPriv = (rrScrPrivPtr) xcalloc (1, sizeof (rrScrPrivRec)); pScrPriv = (rrScrPrivPtr) xcalloc(1, sizeof(rrScrPrivRec));
if (!pScrPriv) if (!pScrPriv)
return FALSE; return FALSE;
...@@ -291,7 +289,7 @@ Bool RRScreenInit(ScreenPtr pScreen) ...@@ -291,7 +289,7 @@ Bool RRScreenInit(ScreenPtr pScreen)
pScrPriv->lastSetTime = currentTime; pScrPriv->lastSetTime = currentTime;
pScrPriv->lastConfigTime = currentTime; pScrPriv->lastConfigTime = currentTime;
wrap (pScrPriv, pScreen, CloseScreen, RRCloseScreen); wrap(pScrPriv, pScreen, CloseScreen, RRCloseScreen);
pScrPriv->numOutputs = 0; pScrPriv->numOutputs = 0;
pScrPriv->outputs = NULL; pScrPriv->outputs = NULL;
...@@ -302,9 +300,8 @@ Bool RRScreenInit(ScreenPtr pScreen) ...@@ -302,9 +300,8 @@ Bool RRScreenInit(ScreenPtr pScreen)
return TRUE; return TRUE;
} }
/*ARGSUSED*/ /*ARGSUSED*/ static int
static int RRFreeClient(void *data, XID id)
RRFreeClient (void * data, XID id)
{ {
RREventPtr pRREvent; RREventPtr pRREvent;
WindowPtr pWin; WindowPtr pWin;
...@@ -315,56 +312,55 @@ RRFreeClient (void * data, XID id) ...@@ -315,56 +312,55 @@ RRFreeClient (void * data, XID id)
pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, RREventType); pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, RREventType);
if (pHead) { if (pHead) {
pPrev = 0; pPrev = 0;
for (pCur = *pHead; pCur && pCur != pRREvent; pCur=pCur->next) for (pCur = *pHead; pCur && pCur != pRREvent; pCur = pCur->next)
pPrev = pCur; pPrev = pCur;
if (pCur) if (pCur) {
{
if (pPrev) if (pPrev)
pPrev->next = pRREvent->next; pPrev->next = pRREvent->next;
else else
*pHead = pRREvent->next; *pHead = pRREvent->next;
} }
} }
xfree ((void *) pRREvent); xfree((void *) pRREvent);
return 1; return 1;
} }
/*ARGSUSED*/ /*ARGSUSED*/ static int
static int RRFreeEvents(void *data, XID id)
RRFreeEvents (void * data, XID id)
{ {
RREventPtr *pHead, pCur, pNext; RREventPtr *pHead, pCur, pNext;
pHead = (RREventPtr *) data; pHead = (RREventPtr *) data;
for (pCur = *pHead; pCur; pCur = pNext) { for (pCur = *pHead; pCur; pCur = pNext) {
pNext = pCur->next; pNext = pCur->next;
FreeResource (pCur->clientResource, RRClientType); FreeResource(pCur->clientResource, RRClientType);
xfree ((void *) pCur); xfree((void *) pCur);
} }
xfree ((void *) pHead); xfree((void *) pHead);
return 1; return 1;
} }
void void
RRExtensionInit (void) RRExtensionInit(void)
{ {
ExtensionEntry *extEntry; ExtensionEntry *extEntry;
if (RRNScreens == 0) return; if (RRNScreens == 0)
return;
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
if (!dixRequestPrivate(RRClientPrivateKey, if (!dixRequestPrivate(RRClientPrivateKey,
sizeof (RRClientRec) + sizeof(RRClientRec) +
screenInfo.numScreens * sizeof (RRTimesRec))) screenInfo.numScreens * sizeof(RRTimesRec)))
return; return;
#else #else
RRClientPrivateIndex = AllocateClientPrivateIndex (); RRClientPrivateIndex = AllocateClientPrivateIndex();
if (!AllocateClientPrivate (RRClientPrivateIndex, if (!AllocateClientPrivate(RRClientPrivateIndex,
sizeof (RRClientRec) + sizeof(RRClientRec) +
screenInfo.numScreens * sizeof (RRTimesRec))) screenInfo.numScreens * sizeof(RRTimesRec)))
return; return;
#endif #endif
if (!AddCallback (&ClientStateCallback, RRClientCallback, 0)) if (!AddCallback(&ClientStateCallback, RRClientCallback, 0))
return; return;
RRClientType = CreateNewResourceType(RRFreeClient); RRClientType = CreateNewResourceType(RRFreeClient);
...@@ -373,7 +369,7 @@ RRExtensionInit (void) ...@@ -373,7 +369,7 @@ RRExtensionInit (void)
RREventType = CreateNewResourceType(RRFreeEvents); RREventType = CreateNewResourceType(RRFreeEvents);
if (!RREventType) if (!RREventType)
return; return;
extEntry = AddExtension (RANDR_NAME, RRNumberEvents, RRNumberErrors, extEntry = AddExtension(RANDR_NAME, RRNumberEvents, RRNumberErrors,
ProcRRDispatch, SProcRRDispatch, ProcRRDispatch, SProcRRDispatch,
RRResetProc, StandardMinorOpcode); RRResetProc, StandardMinorOpcode);
if (!extEntry) if (!extEntry)
...@@ -390,44 +386,42 @@ RRExtensionInit (void) ...@@ -390,44 +386,42 @@ RRExtensionInit (void)
} }
static int static int
TellChanged (WindowPtr pWin, void * value) TellChanged(WindowPtr pWin, void *value)
{ {
RREventPtr *pHead, pRREvent; RREventPtr *pHead, pRREvent;
ClientPtr client; ClientPtr client;
ScreenPtr pScreen = pWin->drawable.pScreen; ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen); rrScrPriv(pScreen);
int i; int i;
pHead = (RREventPtr *) LookupIDByType (pWin->drawable.id, RREventType); pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, RREventType);
if (!pHead) if (!pHead)
return WT_WALKCHILDREN; return WT_WALKCHILDREN;
for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) {
{
client = pRREvent->client; client = pRREvent->client;
if (client == serverClient || client->clientGone) if (client == serverClient || client->clientGone)
continue; continue;
if (pRREvent->mask & RRScreenChangeNotifyMask) if (pRREvent->mask & RRScreenChangeNotifyMask)
RRDeliverScreenEvent (client, pWin, pScreen); RRDeliverScreenEvent(client, pWin, pScreen);
if (pRREvent->mask & RRCrtcChangeNotifyMask) if (pRREvent->mask & RRCrtcChangeNotifyMask) {
{ for (i = 0; i < pScrPriv->numCrtcs; i++) {
for (i = 0; i < pScrPriv->numCrtcs; i++)
{
RRCrtcPtr crtc = pScrPriv->crtcs[i]; RRCrtcPtr crtc = pScrPriv->crtcs[i];
if (crtc->changed) if (crtc->changed)
RRDeliverCrtcEvent (client, pWin, crtc); RRDeliverCrtcEvent(client, pWin, crtc);
} }
} }
if (pRREvent->mask & RROutputChangeNotifyMask) if (pRREvent->mask & RROutputChangeNotifyMask) {
{ for (i = 0; i < pScrPriv->numOutputs; i++) {
for (i = 0; i < pScrPriv->numOutputs; i++)
{
RROutputPtr output = pScrPriv->outputs[i]; RROutputPtr output = pScrPriv->outputs[i];
if (output->changed) if (output->changed)
RRDeliverOutputEvent (client, pWin, output); RRDeliverOutputEvent(client, pWin, output);
} }
} }
} }
...@@ -438,30 +432,27 @@ TellChanged (WindowPtr pWin, void * value) ...@@ -438,30 +432,27 @@ TellChanged (WindowPtr pWin, void * value)
* Something changed; send events and adjust pointer position * Something changed; send events and adjust pointer position
*/ */
void void
RRTellChanged (ScreenPtr pScreen) RRTellChanged(ScreenPtr pScreen)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
int i; int i;
if (pScrPriv->changed) if (pScrPriv->changed) {
{ UpdateCurrentTime();
UpdateCurrentTime (); if (pScrPriv->configChanged) {
if (pScrPriv->configChanged)
{
pScrPriv->lastConfigTime = currentTime; pScrPriv->lastConfigTime = currentTime;
pScrPriv->configChanged = FALSE; pScrPriv->configChanged = FALSE;
} }
pScrPriv->changed = FALSE; pScrPriv->changed = FALSE;
WalkTree (pScreen, TellChanged, (void *) pScreen); WalkTree(pScreen, TellChanged, (void *) pScreen);
for (i = 0; i < pScrPriv->numOutputs; i++) for (i = 0; i < pScrPriv->numOutputs; i++)
pScrPriv->outputs[i]->changed = FALSE; pScrPriv->outputs[i]->changed = FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++)
pScrPriv->crtcs[i]->changed = FALSE; pScrPriv->crtcs[i]->changed = FALSE;
if (pScrPriv->layoutChanged) if (pScrPriv->layoutChanged) {
{
pScrPriv->layoutChanged = FALSE; pScrPriv->layoutChanged = FALSE;
RRPointerScreenConfigured (pScreen); RRPointerScreenConfigured(pScreen);
RRSendConfigNotify (pScreen); RRSendConfigNotify(pScreen);
} }
} }
} }
...@@ -471,17 +462,16 @@ RRTellChanged (ScreenPtr pScreen) ...@@ -471,17 +462,16 @@ RRTellChanged (ScreenPtr pScreen)
* Used in emulating 1.0 behaviour * Used in emulating 1.0 behaviour
*/ */
RROutputPtr RROutputPtr
RRFirstOutput (ScreenPtr pScreen) RRFirstOutput(ScreenPtr pScreen)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
RROutputPtr output; RROutputPtr output;
int i, j; int i, j;
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++) {
{
RRCrtcPtr crtc = pScrPriv->crtcs[i]; RRCrtcPtr crtc = pScrPriv->crtcs[i];
for (j = 0; j < pScrPriv->numOutputs; j++)
{ for (j = 0; j < pScrPriv->numOutputs; j++) {
output = pScrPriv->outputs[j]; output = pScrPriv->outputs[j];
if (output->crtc == crtc) if (output->crtc == crtc)
return output; return output;
...@@ -491,20 +481,21 @@ RRFirstOutput (ScreenPtr pScreen) ...@@ -491,20 +481,21 @@ RRFirstOutput (ScreenPtr pScreen)
} }
CARD16 CARD16
RRVerticalRefresh (xRRModeInfo *mode) RRVerticalRefresh(xRRModeInfo * mode)
{ {
CARD32 refresh; CARD32 refresh;
CARD32 dots = mode->hTotal * mode->vTotal; CARD32 dots = mode->hTotal * mode->vTotal;
if (!dots) if (!dots)
return 0; return 0;
refresh = (mode->dotClock + dots/2) / dots; refresh = (mode->dotClock + dots / 2) / dots;
if (refresh > 0xffff) if (refresh > 0xffff)
refresh = 0xffff; refresh = 0xffff;
return (CARD16) refresh; return (CARD16) refresh;
} }
static int static int
ProcRRDispatch (ClientPtr client) ProcRRDispatch(ClientPtr client)
{ {
REQUEST(xReq); REQUEST(xReq);
if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data]) if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data])
...@@ -513,11 +504,10 @@ ProcRRDispatch (ClientPtr client) ...@@ -513,11 +504,10 @@ ProcRRDispatch (ClientPtr client)
} }
static int static int
SProcRRDispatch (ClientPtr client) SProcRRDispatch(ClientPtr client)
{ {
REQUEST(xReq); REQUEST(xReq);
if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data]) if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data])
return BadRequest; return BadRequest;
return (*SProcRandrVector[stuff->data]) (client); return (*SProcRandrVector[stuff->data]) (client);
} }
...@@ -63,6 +63,7 @@ typedef struct { ...@@ -63,6 +63,7 @@ typedef struct {
CARD16 widthInMillimeters B16; CARD16 widthInMillimeters B16;
CARD16 heightInMillimeters B16; CARD16 heightInMillimeters B16;
} xScreenSizes; } xScreenSizes;
#define sz_xScreenSizes 8 #define sz_xScreenSizes 8
/* /*
...@@ -76,6 +77,7 @@ typedef struct { ...@@ -76,6 +77,7 @@ typedef struct {
CARD32 majorVersion B32; CARD32 majorVersion B32;
CARD32 minorVersion B32; CARD32 minorVersion B32;
} xRRQueryVersionReq; } xRRQueryVersionReq;
#define sz_xRRQueryVersionReq 12 #define sz_xRRQueryVersionReq 12
typedef struct { typedef struct {
...@@ -90,6 +92,7 @@ typedef struct { ...@@ -90,6 +92,7 @@ typedef struct {
CARD32 pad4 B32; CARD32 pad4 B32;
CARD32 pad5 B32; CARD32 pad5 B32;
} xRRQueryVersionReply; } xRRQueryVersionReply;
#define sz_xRRQueryVersionReply 32 #define sz_xRRQueryVersionReply 32
typedef struct { typedef struct {
...@@ -98,6 +101,7 @@ typedef struct { ...@@ -98,6 +101,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
Window window B32; Window window B32;
} xRRGetScreenInfoReq; } xRRGetScreenInfoReq;
#define sz_xRRGetScreenInfoReq 8 #define sz_xRRGetScreenInfoReq 8
/* /*
...@@ -106,7 +110,6 @@ typedef struct { ...@@ -106,7 +110,6 @@ typedef struct {
* the size information * the size information
*/ */
typedef struct { typedef struct {
BYTE type; /* X_Reply */ BYTE type; /* X_Reply */
BYTE setOfRotations; BYTE setOfRotations;
...@@ -122,6 +125,7 @@ typedef struct { ...@@ -122,6 +125,7 @@ typedef struct {
CARD16 nrateEnts B16; CARD16 nrateEnts B16;
CARD16 pad B16; CARD16 pad B16;
} xRRGetScreenInfoReply; } xRRGetScreenInfoReply;
#define sz_xRRGetScreenInfoReply 32 #define sz_xRRGetScreenInfoReply 32
typedef struct { typedef struct {
...@@ -134,6 +138,7 @@ typedef struct { ...@@ -134,6 +138,7 @@ typedef struct {
SizeID sizeID B16; SizeID sizeID B16;
Rotation rotation B16; Rotation rotation B16;
} xRR1_0SetScreenConfigReq; } xRR1_0SetScreenConfigReq;
#define sz_xRR1_0SetScreenConfigReq 20 #define sz_xRR1_0SetScreenConfigReq 20
typedef struct { typedef struct {
...@@ -148,6 +153,7 @@ typedef struct { ...@@ -148,6 +153,7 @@ typedef struct {
CARD16 rate B16; CARD16 rate B16;
CARD16 pad B16; CARD16 pad B16;
} xRRSetScreenConfigReq; } xRRSetScreenConfigReq;
#define sz_xRRSetScreenConfigReq 24 #define sz_xRRSetScreenConfigReq 24
typedef struct { typedef struct {
...@@ -163,6 +169,7 @@ typedef struct { ...@@ -163,6 +169,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xRRSetScreenConfigReply; } xRRSetScreenConfigReply;
#define sz_xRRSetScreenConfigReply 32 #define sz_xRRSetScreenConfigReply 32
typedef struct { typedef struct {
...@@ -173,6 +180,7 @@ typedef struct { ...@@ -173,6 +180,7 @@ typedef struct {
CARD16 enable B16; CARD16 enable B16;
CARD16 pad2 B16; CARD16 pad2 B16;
} xRRSelectInputReq; } xRRSelectInputReq;
#define sz_xRRSelectInputReq 12 #define sz_xRRSelectInputReq 12
/* /*
...@@ -194,6 +202,7 @@ typedef struct _xRRModeInfo { ...@@ -194,6 +202,7 @@ typedef struct _xRRModeInfo {
CARD16 nameLength B16; CARD16 nameLength B16;
RRModeFlags modeFlags B32; RRModeFlags modeFlags B32;
} xRRModeInfo; } xRRModeInfo;
#define sz_xRRModeInfo 32 #define sz_xRRModeInfo 32
typedef struct { typedef struct {
...@@ -202,6 +211,7 @@ typedef struct { ...@@ -202,6 +211,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
Window window B32; Window window B32;
} xRRGetScreenSizeRangeReq; } xRRGetScreenSizeRangeReq;
#define sz_xRRGetScreenSizeRangeReq 8 #define sz_xRRGetScreenSizeRangeReq 8
typedef struct { typedef struct {
...@@ -218,6 +228,7 @@ typedef struct { ...@@ -218,6 +228,7 @@ typedef struct {
CARD32 pad2 B32; CARD32 pad2 B32;
CARD32 pad3 B32; CARD32 pad3 B32;
} xRRGetScreenSizeRangeReply; } xRRGetScreenSizeRangeReply;
#define sz_xRRGetScreenSizeRangeReply 32 #define sz_xRRGetScreenSizeRangeReply 32
typedef struct { typedef struct {
...@@ -230,6 +241,7 @@ typedef struct { ...@@ -230,6 +241,7 @@ typedef struct {
CARD32 widthInMillimeters B32; CARD32 widthInMillimeters B32;
CARD32 heightInMillimeters B32; CARD32 heightInMillimeters B32;
} xRRSetScreenSizeReq; } xRRSetScreenSizeReq;
#define sz_xRRSetScreenSizeReq 20 #define sz_xRRSetScreenSizeReq 20
typedef struct { typedef struct {
...@@ -238,6 +250,7 @@ typedef struct { ...@@ -238,6 +250,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
Window window B32; Window window B32;
} xRRGetScreenResourcesReq; } xRRGetScreenResourcesReq;
#define sz_xRRGetScreenResourcesReq 8 #define sz_xRRGetScreenResourcesReq 8
typedef struct { typedef struct {
...@@ -254,6 +267,7 @@ typedef struct { ...@@ -254,6 +267,7 @@ typedef struct {
CARD32 pad1 B32; CARD32 pad1 B32;
CARD32 pad2 B32; CARD32 pad2 B32;
} xRRGetScreenResourcesReply; } xRRGetScreenResourcesReply;
#define sz_xRRGetScreenResourcesReply 32 #define sz_xRRGetScreenResourcesReply 32
typedef struct { typedef struct {
...@@ -263,6 +277,7 @@ typedef struct { ...@@ -263,6 +277,7 @@ typedef struct {
RROutput output B32; RROutput output B32;
Time configTimestamp B32; Time configTimestamp B32;
} xRRGetOutputInfoReq; } xRRGetOutputInfoReq;
#define sz_xRRGetOutputInfoReq 12 #define sz_xRRGetOutputInfoReq 12
typedef struct { typedef struct {
...@@ -282,6 +297,7 @@ typedef struct { ...@@ -282,6 +297,7 @@ typedef struct {
CARD16 nClones B16; CARD16 nClones B16;
CARD16 nameLength B16; CARD16 nameLength B16;
} xRRGetOutputInfoReply; } xRRGetOutputInfoReply;
#define sz_xRRGetOutputInfoReply 36 #define sz_xRRGetOutputInfoReply 36
typedef struct { typedef struct {
...@@ -290,6 +306,7 @@ typedef struct { ...@@ -290,6 +306,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
RROutput output B32; RROutput output B32;
} xRRListOutputPropertiesReq; } xRRListOutputPropertiesReq;
#define sz_xRRListOutputPropertiesReq 8 #define sz_xRRListOutputPropertiesReq 8
typedef struct { typedef struct {
...@@ -305,6 +322,7 @@ typedef struct { ...@@ -305,6 +322,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xRRListOutputPropertiesReply; } xRRListOutputPropertiesReply;
#define sz_xRRListOutputPropertiesReply 32 #define sz_xRRListOutputPropertiesReply 32
typedef struct { typedef struct {
...@@ -314,6 +332,7 @@ typedef struct { ...@@ -314,6 +332,7 @@ typedef struct {
RROutput output B32; RROutput output B32;
Atom property B32; Atom property B32;
} xRRQueryOutputPropertyReq; } xRRQueryOutputPropertyReq;
#define sz_xRRQueryOutputPropertyReq 12 #define sz_xRRQueryOutputPropertyReq 12
typedef struct { typedef struct {
...@@ -331,6 +350,7 @@ typedef struct { ...@@ -331,6 +350,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xRRQueryOutputPropertyReply; } xRRQueryOutputPropertyReply;
#define sz_xRRQueryOutputPropertyReply 32 #define sz_xRRQueryOutputPropertyReply 32
typedef struct { typedef struct {
...@@ -343,6 +363,7 @@ typedef struct { ...@@ -343,6 +363,7 @@ typedef struct {
BOOL range; BOOL range;
CARD16 pad B16; CARD16 pad B16;
} xRRConfigureOutputPropertyReq; } xRRConfigureOutputPropertyReq;
#define sz_xRRConfigureOutputPropertyReq 16 #define sz_xRRConfigureOutputPropertyReq 16
typedef struct { typedef struct {
...@@ -357,6 +378,7 @@ typedef struct { ...@@ -357,6 +378,7 @@ typedef struct {
CARD16 pad; CARD16 pad;
CARD32 nUnits B32; CARD32 nUnits B32;
} xRRChangeOutputPropertyReq; } xRRChangeOutputPropertyReq;
#define sz_xRRChangeOutputPropertyReq 24 #define sz_xRRChangeOutputPropertyReq 24
typedef struct { typedef struct {
...@@ -366,6 +388,7 @@ typedef struct { ...@@ -366,6 +388,7 @@ typedef struct {
RROutput output B32; RROutput output B32;
Atom property B32; Atom property B32;
} xRRDeleteOutputPropertyReq; } xRRDeleteOutputPropertyReq;
#define sz_xRRDeleteOutputPropertyReq 12 #define sz_xRRDeleteOutputPropertyReq 12
typedef struct { typedef struct {
...@@ -385,6 +408,7 @@ typedef struct { ...@@ -385,6 +408,7 @@ typedef struct {
BOOL pending; BOOL pending;
CARD16 pad1 B16; CARD16 pad1 B16;
} xRRGetOutputPropertyReq; } xRRGetOutputPropertyReq;
#define sz_xRRGetOutputPropertyReq 28 #define sz_xRRGetOutputPropertyReq 28
typedef struct { typedef struct {
...@@ -399,6 +423,7 @@ typedef struct { ...@@ -399,6 +423,7 @@ typedef struct {
CARD32 pad2 B32; CARD32 pad2 B32;
CARD32 pad3 B32; CARD32 pad3 B32;
} xRRGetOutputPropertyReply; } xRRGetOutputPropertyReply;
#define sz_xRRGetOutputPropertyReply 32 #define sz_xRRGetOutputPropertyReply 32
typedef struct { typedef struct {
...@@ -408,6 +433,7 @@ typedef struct { ...@@ -408,6 +433,7 @@ typedef struct {
Window window B32; Window window B32;
xRRModeInfo modeInfo; xRRModeInfo modeInfo;
} xRRCreateModeReq; } xRRCreateModeReq;
#define sz_xRRCreateModeReq 40 #define sz_xRRCreateModeReq 40
typedef struct { typedef struct {
...@@ -422,6 +448,7 @@ typedef struct { ...@@ -422,6 +448,7 @@ typedef struct {
CARD32 pad4 B32; CARD32 pad4 B32;
CARD32 pad5 B32; CARD32 pad5 B32;
} xRRCreateModeReply; } xRRCreateModeReply;
#define sz_xRRCreateModeReply 32 #define sz_xRRCreateModeReply 32
typedef struct { typedef struct {
...@@ -430,6 +457,7 @@ typedef struct { ...@@ -430,6 +457,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
RRMode mode B32; RRMode mode B32;
} xRRDestroyModeReq; } xRRDestroyModeReq;
#define sz_xRRDestroyModeReq 8 #define sz_xRRDestroyModeReq 8
typedef struct { typedef struct {
...@@ -439,6 +467,7 @@ typedef struct { ...@@ -439,6 +467,7 @@ typedef struct {
RROutput output B32; RROutput output B32;
RRMode mode B32; RRMode mode B32;
} xRRAddOutputModeReq; } xRRAddOutputModeReq;
#define sz_xRRAddOutputModeReq 12 #define sz_xRRAddOutputModeReq 12
typedef struct { typedef struct {
...@@ -448,6 +477,7 @@ typedef struct { ...@@ -448,6 +477,7 @@ typedef struct {
RROutput output B32; RROutput output B32;
RRMode mode B32; RRMode mode B32;
} xRRDeleteOutputModeReq; } xRRDeleteOutputModeReq;
#define sz_xRRDeleteOutputModeReq 12 #define sz_xRRDeleteOutputModeReq 12
typedef struct { typedef struct {
...@@ -457,6 +487,7 @@ typedef struct { ...@@ -457,6 +487,7 @@ typedef struct {
RRCrtc crtc B32; RRCrtc crtc B32;
Time configTimestamp B32; Time configTimestamp B32;
} xRRGetCrtcInfoReq; } xRRGetCrtcInfoReq;
#define sz_xRRGetCrtcInfoReq 12 #define sz_xRRGetCrtcInfoReq 12
typedef struct { typedef struct {
...@@ -475,6 +506,7 @@ typedef struct { ...@@ -475,6 +506,7 @@ typedef struct {
CARD16 nOutput B16; CARD16 nOutput B16;
CARD16 nPossibleOutput B16; CARD16 nPossibleOutput B16;
} xRRGetCrtcInfoReply; } xRRGetCrtcInfoReply;
#define sz_xRRGetCrtcInfoReply 32 #define sz_xRRGetCrtcInfoReply 32
typedef struct { typedef struct {
...@@ -490,6 +522,7 @@ typedef struct { ...@@ -490,6 +522,7 @@ typedef struct {
Rotation rotation B16; Rotation rotation B16;
CARD16 pad B16; CARD16 pad B16;
} xRRSetCrtcConfigReq; } xRRSetCrtcConfigReq;
#define sz_xRRSetCrtcConfigReq 28 #define sz_xRRSetCrtcConfigReq 28
typedef struct { typedef struct {
...@@ -504,6 +537,7 @@ typedef struct { ...@@ -504,6 +537,7 @@ typedef struct {
CARD32 pad4 B32; CARD32 pad4 B32;
CARD32 pad5 B32; CARD32 pad5 B32;
} xRRSetCrtcConfigReply; } xRRSetCrtcConfigReply;
#define sz_xRRSetCrtcConfigReply 32 #define sz_xRRSetCrtcConfigReply 32
typedef struct { typedef struct {
...@@ -512,6 +546,7 @@ typedef struct { ...@@ -512,6 +546,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
RRCrtc crtc B32; RRCrtc crtc B32;
} xRRGetCrtcGammaSizeReq; } xRRGetCrtcGammaSizeReq;
#define sz_xRRGetCrtcGammaSizeReq 8 #define sz_xRRGetCrtcGammaSizeReq 8
typedef struct { typedef struct {
...@@ -527,6 +562,7 @@ typedef struct { ...@@ -527,6 +562,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xRRGetCrtcGammaSizeReply; } xRRGetCrtcGammaSizeReply;
#define sz_xRRGetCrtcGammaSizeReply 32 #define sz_xRRGetCrtcGammaSizeReply 32
typedef struct { typedef struct {
...@@ -535,6 +571,7 @@ typedef struct { ...@@ -535,6 +571,7 @@ typedef struct {
CARD16 length B16; CARD16 length B16;
RRCrtc crtc B32; RRCrtc crtc B32;
} xRRGetCrtcGammaReq; } xRRGetCrtcGammaReq;
#define sz_xRRGetCrtcGammaReq 8 #define sz_xRRGetCrtcGammaReq 8
typedef struct { typedef struct {
...@@ -550,6 +587,7 @@ typedef struct { ...@@ -550,6 +587,7 @@ typedef struct {
CARD32 pad5 B32; CARD32 pad5 B32;
CARD32 pad6 B32; CARD32 pad6 B32;
} xRRGetCrtcGammaReply; } xRRGetCrtcGammaReply;
#define sz_xRRGetCrtcGammaReply 32 #define sz_xRRGetCrtcGammaReply 32
typedef struct { typedef struct {
...@@ -560,6 +598,7 @@ typedef struct { ...@@ -560,6 +598,7 @@ typedef struct {
CARD16 size B16; CARD16 size B16;
CARD16 pad1 B16; CARD16 pad1 B16;
} xRRSetCrtcGammaReq; } xRRSetCrtcGammaReq;
#define sz_xRRSetCrtcGammaReq 12 #define sz_xRRSetCrtcGammaReq 12
/* /*
...@@ -580,6 +619,7 @@ typedef struct { ...@@ -580,6 +619,7 @@ typedef struct {
CARD16 widthInMillimeters B16; CARD16 widthInMillimeters B16;
CARD16 heightInMillimeters B16; CARD16 heightInMillimeters B16;
} xRRScreenChangeNotifyEvent; } xRRScreenChangeNotifyEvent;
#define sz_xRRScreenChangeNotifyEvent 32 #define sz_xRRScreenChangeNotifyEvent 32
typedef struct { typedef struct {
...@@ -597,6 +637,7 @@ typedef struct { ...@@ -597,6 +637,7 @@ typedef struct {
CARD16 width B16; /* new size */ CARD16 width B16; /* new size */
CARD16 height B16; CARD16 height B16;
} xRRCrtcChangeNotifyEvent; } xRRCrtcChangeNotifyEvent;
#define sz_xRRCrtcChangeNotifyEvent 32 #define sz_xRRCrtcChangeNotifyEvent 32
typedef struct { typedef struct {
...@@ -613,6 +654,7 @@ typedef struct { ...@@ -613,6 +654,7 @@ typedef struct {
CARD8 connection; /* connection status */ CARD8 connection; /* connection status */
CARD8 subpixelOrder; /* subpixel order */ CARD8 subpixelOrder; /* subpixel order */
} xRROutputChangeNotifyEvent; } xRROutputChangeNotifyEvent;
#define sz_xRROutputChangeNotifyEvent 32 #define sz_xRROutputChangeNotifyEvent 32
typedef struct { typedef struct {
...@@ -629,6 +671,7 @@ typedef struct { ...@@ -629,6 +671,7 @@ typedef struct {
CARD32 pad3 B32; CARD32 pad3 B32;
CARD32 pad4 B32; CARD32 pad4 B32;
} xRROutputPropertyNotifyEvent; } xRROutputPropertyNotifyEvent;
#define sz_xRROutputPropertyNotifyEvent 32 #define sz_xRROutputPropertyNotifyEvent 32
#undef RRModeFlags #undef RRModeFlags
......
...@@ -66,8 +66,8 @@ typedef XID RRCrtc; ...@@ -66,8 +66,8 @@ typedef XID RRCrtc;
extern int RREventBase, RRErrorBase; extern int RREventBase, RRErrorBase;
extern int (*ProcRandrVector[RRNumberRequests])(ClientPtr); extern int (*ProcRandrVector[RRNumberRequests]) (ClientPtr);
extern int (*SProcRandrVector[RRNumberRequests])(ClientPtr); extern int (*SProcRandrVector[RRNumberRequests]) (ClientPtr);
/* /*
* Modeline for a monitor. Name follows directly after this struct * Modeline for a monitor. Name follows directly after this struct
...@@ -151,8 +151,7 @@ struct _rrOutput { ...@@ -151,8 +151,7 @@ struct _rrOutput {
typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen, typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
CARD16 width, CARD16 width,
CARD16 height, CARD16 height,
CARD32 mmWidth, CARD32 mmWidth, CARD32 mmHeight);
CARD32 mmHeight);
typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen, typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
RRCrtcPtr crtc, RRCrtcPtr crtc,
...@@ -160,11 +159,9 @@ typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen, ...@@ -160,11 +159,9 @@ typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
int x, int x,
int y, int y,
Rotation rotation, Rotation rotation,
int numOutputs, int numOutputs, RROutputPtr * outputs);
RROutputPtr *outputs);
typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen, typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen, RRCrtcPtr crtc);
RRCrtcPtr crtc);
typedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen, typedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen,
RROutputPtr output, RROutputPtr output,
...@@ -175,13 +172,12 @@ typedef Bool (*RROutputValidateModeProcPtr) (ScreenPtr pScreen, ...@@ -175,13 +172,12 @@ typedef Bool (*RROutputValidateModeProcPtr) (ScreenPtr pScreen,
RROutputPtr output, RROutputPtr output,
RRModePtr mode); RRModePtr mode);
typedef void (*RRModeDestroyProcPtr) (ScreenPtr pScreen, typedef void (*RRModeDestroyProcPtr) (ScreenPtr pScreen, RRModePtr mode);
RRModePtr mode);
#endif #endif
typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations); typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation * rotations);
typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen); typedef Bool (*RRCloseScreenProcPtr) (int i, ScreenPtr pscreen);
/* These are for 1.0 compatibility */ /* These are for 1.0 compatibility */
...@@ -202,12 +198,10 @@ typedef struct _rrScreenSize { ...@@ -202,12 +198,10 @@ typedef struct _rrScreenSize {
typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen, typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
Rotation rotation, Rotation rotation,
int rate, int rate, RRScreenSizePtr pSize);
RRScreenSizePtr pSize);
#endif #endif
typedef struct _rrScrPriv { typedef struct _rrScrPriv {
/* /*
* 'public' part of the structure; DDXen fill this in * 'public' part of the structure; DDXen fill this in
...@@ -317,6 +311,7 @@ typedef struct _RRClient { ...@@ -317,6 +311,7 @@ typedef struct _RRClient {
} RRClientRec, *RRClientPtr; } RRClientRec, *RRClientPtr;
extern RESTYPE RRClientType, RREventType; /* resource types for event masks */ extern RESTYPE RRClientType, RREventType; /* resource types for event masks */
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
extern DevPrivateKey RRClientPrivateKey; extern DevPrivateKey RRClientPrivateKey;
#else #else
...@@ -352,18 +347,17 @@ extern RESTYPE RRCrtcType, RRModeType, RROutputType; ...@@ -352,18 +347,17 @@ extern RESTYPE RRCrtcType, RRModeType, RROutputType;
/* Initialize the extension */ /* Initialize the extension */
void void
RRExtensionInit (void); RRExtensionInit(void);
#ifdef RANDR_12_INTERFACE #ifdef RANDR_12_INTERFACE
/* /*
* Set the range of sizes for the screen * Set the range of sizes for the screen
*/ */
void void
RRScreenSetSizeRange (ScreenPtr pScreen,
RRScreenSetSizeRange(ScreenPtr pScreen,
CARD16 minWidth, CARD16 minWidth,
CARD16 minHeight, CARD16 minHeight, CARD16 maxWidth, CARD16 maxHeight);
CARD16 maxWidth,
CARD16 maxHeight);
#endif #endif
/* rrscreen.c */ /* rrscreen.c */
...@@ -373,108 +367,99 @@ RRScreenSetSizeRange (ScreenPtr pScreen, ...@@ -373,108 +367,99 @@ RRScreenSetSizeRange (ScreenPtr pScreen,
* the size of the screen * the size of the screen
*/ */
void void
RRScreenSizeNotify (ScreenPtr pScreen); RRScreenSizeNotify(ScreenPtr pScreen);
/* /*
* Request that the screen be resized * Request that the screen be resized
*/ */
Bool Bool
RRScreenSizeSet (ScreenPtr pScreen,
CARD16 width, RRScreenSizeSet(ScreenPtr pScreen,
CARD16 height, CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight);
CARD32 mmWidth,
CARD32 mmHeight);
/* /*
* Send ConfigureNotify event to root window when 'something' happens * Send ConfigureNotify event to root window when 'something' happens
*/ */
void void
RRSendConfigNotify (ScreenPtr pScreen); RRSendConfigNotify(ScreenPtr pScreen);
/* /*
* screen dispatch * screen dispatch
*/ */
int int
ProcRRGetScreenSizeRange (ClientPtr client); ProcRRGetScreenSizeRange(ClientPtr client);
int int
ProcRRSetScreenSize (ClientPtr client); ProcRRSetScreenSize(ClientPtr client);
int int
ProcRRGetScreenResources (ClientPtr client); ProcRRGetScreenResources(ClientPtr client);
int int
ProcRRSetScreenConfig (ClientPtr client); ProcRRSetScreenConfig(ClientPtr client);
int int
ProcRRGetScreenInfo (ClientPtr client); ProcRRGetScreenInfo(ClientPtr client);
/* /*
* Deliver a ScreenNotify event * Deliver a ScreenNotify event
*/ */
void void
RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen); RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
/* mirandr.c */ /* mirandr.c */
Bool Bool
miRandRInit (ScreenPtr pScreen); miRandRInit(ScreenPtr pScreen);
Bool Bool
miRRGetInfo (ScreenPtr pScreen, Rotation *rotations); miRRGetInfo(ScreenPtr pScreen, Rotation * rotations);
Bool Bool
miRRGetScreenInfo (ScreenPtr pScreen); miRRGetScreenInfo(ScreenPtr pScreen);
Bool Bool
miRRCrtcSet (ScreenPtr pScreen,
miRRCrtcSet(ScreenPtr pScreen,
RRCrtcPtr crtc, RRCrtcPtr crtc,
RRModePtr mode, RRModePtr mode,
int x, int x,
int y, int y, Rotation rotation, int numOutput, RROutputPtr * outputs);
Rotation rotation,
int numOutput,
RROutputPtr *outputs);
Bool Bool
miRROutputSetProperty (ScreenPtr pScreen,
miRROutputSetProperty(ScreenPtr pScreen,
RROutputPtr output, RROutputPtr output,
Atom property, Atom property, RRPropertyValuePtr value);
RRPropertyValuePtr value);
Bool Bool
miRROutputValidateMode (ScreenPtr pScreen, miRROutputValidateMode(ScreenPtr pScreen, RROutputPtr output, RRModePtr mode);
RROutputPtr output,
RRModePtr mode);
void void
miRRModeDestroy (ScreenPtr pScreen, miRRModeDestroy(ScreenPtr pScreen, RRModePtr mode);
RRModePtr mode);
/* randr.c */ /* randr.c */
/* /*
* Send all pending events * Send all pending events
*/ */
void void
RRTellChanged (ScreenPtr pScreen); RRTellChanged(ScreenPtr pScreen);
/* /*
* Poll the driver for changed information * Poll the driver for changed information
*/ */
Bool Bool
RRGetInfo (ScreenPtr pScreen); RRGetInfo(ScreenPtr pScreen);
Bool RRInit (void); Bool RRInit(void);
Bool RRScreenInit(ScreenPtr pScreen); Bool RRScreenInit(ScreenPtr pScreen);
RROutputPtr RROutputPtr RRFirstOutput(ScreenPtr pScreen);
RRFirstOutput (ScreenPtr pScreen);
Rotation Rotation RRGetRotation(ScreenPtr pScreen);
RRGetRotation (ScreenPtr pScreen);
CARD16 CARD16
RRVerticalRefresh (xRRModeInfo *mode); RRVerticalRefresh(xRRModeInfo * mode);
#ifdef RANDR_10_INTERFACE #ifdef RANDR_10_INTERFACE
/* /*
...@@ -487,36 +472,28 @@ RRVerticalRefresh (xRRModeInfo *mode); ...@@ -487,36 +472,28 @@ RRVerticalRefresh (xRRModeInfo *mode);
*/ */
RRScreenSizePtr RRScreenSizePtr
RRRegisterSize (ScreenPtr pScreen, RRRegisterSize(ScreenPtr pScreen,
short width, short width, short height, short mmWidth, short mmHeight);
short height,
short mmWidth,
short mmHeight);
Bool RRRegisterRate (ScreenPtr pScreen, Bool RRRegisterRate(ScreenPtr pScreen, RRScreenSizePtr pSize, int rate);
RRScreenSizePtr pSize,
int rate);
/* /*
* Finally, set the current configuration of the screen * Finally, set the current configuration of the screen
*/ */
void void
RRSetCurrentConfig (ScreenPtr pScreen,
Rotation rotation,
int rate,
RRScreenSizePtr pSize);
Bool RRScreenInit (ScreenPtr pScreen); RRSetCurrentConfig(ScreenPtr pScreen,
Rotation rotation, int rate, RRScreenSizePtr pSize);
Bool RRScreenInit(ScreenPtr pScreen);
Rotation Rotation RRGetRotation(ScreenPtr pScreen);
RRGetRotation (ScreenPtr pScreen);
int int
RRSetScreenConfig (ScreenPtr pScreen,
Rotation rotation, RRSetScreenConfig(ScreenPtr pScreen,
int rate, Rotation rotation, int rate, RRScreenSizePtr pSize);
RRScreenSizePtr pSize);
#endif #endif
...@@ -527,57 +504,49 @@ RRSetScreenConfig (ScreenPtr pScreen, ...@@ -527,57 +504,49 @@ RRSetScreenConfig (ScreenPtr pScreen,
* some position or size element changed * some position or size element changed
*/ */
void void
RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged); RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged);
/* /*
* Create a CRTC * Create a CRTC
*/ */
RRCrtcPtr RRCrtcPtr RRCrtcCreate(ScreenPtr pScreen, void *devPrivate);
RRCrtcCreate (ScreenPtr pScreen, void *devPrivate);
/* /*
* Set the allowed rotations on a CRTC * Set the allowed rotations on a CRTC
*/ */
void void
RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations); RRCrtcSetRotations(RRCrtcPtr crtc, Rotation rotations);
/* /*
* Notify the extension that the Crtc has been reconfigured, * Notify the extension that the Crtc has been reconfigured,
* the driver calls this whenever it has updated the mode * the driver calls this whenever it has updated the mode
*/ */
Bool Bool
RRCrtcNotify (RRCrtcPtr crtc,
RRCrtcNotify(RRCrtcPtr crtc,
RRModePtr mode, RRModePtr mode,
int x, int x,
int y, int y, Rotation rotation, int numOutputs, RROutputPtr * outputs);
Rotation rotation,
int numOutputs,
RROutputPtr *outputs);
void void
RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc); RRDeliverCrtcEvent(ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc);
/* /*
* Request that the Crtc be reconfigured * Request that the Crtc be reconfigured
*/ */
Bool Bool
RRCrtcSet (RRCrtcPtr crtc,
RRCrtcSet(RRCrtcPtr crtc,
RRModePtr mode, RRModePtr mode,
int x, int x,
int y, int y, Rotation rotation, int numOutput, RROutputPtr * outputs);
Rotation rotation,
int numOutput,
RROutputPtr *outputs);
/* /*
* Request that the Crtc gamma be changed * Request that the Crtc gamma be changed
*/ */
Bool Bool
RRCrtcGammaSet (RRCrtcPtr crtc, RRCrtcGammaSet(RRCrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue);
CARD16 *red,
CARD16 *green,
CARD16 *blue);
/* /*
* Notify the extension that the Crtc gamma has been changed * Notify the extension that the Crtc gamma has been changed
...@@ -586,15 +555,14 @@ RRCrtcGammaSet (RRCrtcPtr crtc, ...@@ -586,15 +555,14 @@ RRCrtcGammaSet (RRCrtcPtr crtc,
*/ */
Bool Bool
RRCrtcGammaNotify (RRCrtcPtr crtc); RRCrtcGammaNotify(RRCrtcPtr crtc);
/* /*
* Set the size of the gamma table at server startup time * Set the size of the gamma table at server startup time
*/ */
Bool Bool
RRCrtcGammaSetSize (RRCrtcPtr crtc, RRCrtcGammaSetSize(RRCrtcPtr crtc, int size);
int size);
/* /*
* Return the area of the frame buffer scanned out by the crtc, * Return the area of the frame buffer scanned out by the crtc,
...@@ -602,85 +570,82 @@ RRCrtcGammaSetSize (RRCrtcPtr crtc, ...@@ -602,85 +570,82 @@ RRCrtcGammaSetSize (RRCrtcPtr crtc,
*/ */
void void
RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height); RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height);
/* /*
* Destroy a Crtc at shutdown * Destroy a Crtc at shutdown
*/ */
void void
RRCrtcDestroy (RRCrtcPtr crtc); RRCrtcDestroy(RRCrtcPtr crtc);
/* /*
* Initialize crtc type * Initialize crtc type
*/ */
Bool Bool
RRCrtcInit (void); RRCrtcInit(void);
/* /*
* Crtc dispatch * Crtc dispatch
*/ */
int int
ProcRRGetCrtcInfo (ClientPtr client); ProcRRGetCrtcInfo(ClientPtr client);
int int
ProcRRSetCrtcConfig (ClientPtr client); ProcRRSetCrtcConfig(ClientPtr client);
int int
ProcRRGetCrtcGammaSize (ClientPtr client); ProcRRGetCrtcGammaSize(ClientPtr client);
int int
ProcRRGetCrtcGamma (ClientPtr client); ProcRRGetCrtcGamma(ClientPtr client);
int int
ProcRRSetCrtcGamma (ClientPtr client); ProcRRSetCrtcGamma(ClientPtr client);
/* rrdispatch.c */ /* rrdispatch.c */
Bool Bool
RRClientKnowsRates (ClientPtr pClient); RRClientKnowsRates(ClientPtr pClient);
/* rrmode.c */ /* rrmode.c */
/* /*
* Find, and if necessary, create a mode * Find, and if necessary, create a mode
*/ */
RRModePtr RRModePtr RRModeGet(xRRModeInfo * modeInfo, const char *name);
RRModeGet (xRRModeInfo *modeInfo,
const char *name);
void void
RRModePruneUnused (ScreenPtr pScreen); RRModePruneUnused(ScreenPtr pScreen);
/* /*
* Destroy a mode. * Destroy a mode.
*/ */
void void
RRModeDestroy (RRModePtr mode); RRModeDestroy(RRModePtr mode);
/* /*
* Return a list of modes that are valid for some output in pScreen * Return a list of modes that are valid for some output in pScreen
*/ */
RRModePtr * RRModePtr *RRModesForScreen(ScreenPtr pScreen, int *num_ret);
RRModesForScreen (ScreenPtr pScreen, int *num_ret);
/* /*
* Initialize mode type * Initialize mode type
*/ */
Bool Bool
RRModeInit (void); RRModeInit(void);
int int
ProcRRCreateMode (ClientPtr client); ProcRRCreateMode(ClientPtr client);
int int
ProcRRDestroyMode (ClientPtr client); ProcRRDestroyMode(ClientPtr client);
int int
ProcRRAddOutputMode (ClientPtr client); ProcRRAddOutputMode(ClientPtr client);
int int
ProcRRDeleteOutputMode (ClientPtr client); ProcRRDeleteOutputMode(ClientPtr client);
/* rroutput.c */ /* rroutput.c */
...@@ -691,127 +656,115 @@ ProcRRDeleteOutputMode (ClientPtr client); ...@@ -691,127 +656,115 @@ ProcRRDeleteOutputMode (ClientPtr client);
* (which crtc is in use) * (which crtc is in use)
*/ */
void void
RROutputChanged (RROutputPtr output, Bool configChanged); RROutputChanged(RROutputPtr output, Bool configChanged);
/* /*
* Create an output * Create an output
*/ */
RROutputPtr RROutputPtr
RROutputCreate (ScreenPtr pScreen, RROutputCreate(ScreenPtr pScreen,
const char *name, const char *name, int nameLength, void *devPrivate);
int nameLength,
void *devPrivate);
/* /*
* Notify extension that output parameters have been changed * Notify extension that output parameters have been changed
*/ */
Bool Bool
RROutputSetClones (RROutputPtr output, RROutputSetClones(RROutputPtr output, RROutputPtr * clones, int numClones);
RROutputPtr *clones,
int numClones);
Bool Bool
RROutputSetModes (RROutputPtr output,
RRModePtr *modes, RROutputSetModes(RROutputPtr output,
int numModes, RRModePtr * modes, int numModes, int numPreferred);
int numPreferred);
int int
RROutputAddUserMode (RROutputPtr output, RROutputAddUserMode(RROutputPtr output, RRModePtr mode);
RRModePtr mode);
int int
RROutputDeleteUserMode (RROutputPtr output, RROutputDeleteUserMode(RROutputPtr output, RRModePtr mode);
RRModePtr mode);
Bool Bool
RROutputSetCrtcs (RROutputPtr output, RROutputSetCrtcs(RROutputPtr output, RRCrtcPtr * crtcs, int numCrtcs);
RRCrtcPtr *crtcs,
int numCrtcs);
Bool Bool
RROutputSetConnection (RROutputPtr output, RROutputSetConnection(RROutputPtr output, CARD8 connection);
CARD8 connection);
Bool Bool
RROutputSetSubpixelOrder (RROutputPtr output, RROutputSetSubpixelOrder(RROutputPtr output, int subpixelOrder);
int subpixelOrder);
Bool Bool
RROutputSetPhysicalSize (RROutputPtr output, RROutputSetPhysicalSize(RROutputPtr output, int mmWidth, int mmHeight);
int mmWidth,
int mmHeight);
void void
RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output); RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output);
void void
RROutputDestroy (RROutputPtr output); RROutputDestroy(RROutputPtr output);
int int
ProcRRGetOutputInfo (ClientPtr client); ProcRRGetOutputInfo(ClientPtr client);
/* /*
* Initialize output type * Initialize output type
*/ */
Bool Bool
RROutputInit (void); RROutputInit(void);
/* rrpointer.c */ /* rrpointer.c */
void void
RRPointerMoved (ScreenPtr pScreen, int x, int y); RRPointerMoved(ScreenPtr pScreen, int x, int y);
void void
RRPointerScreenConfigured (ScreenPtr pScreen); RRPointerScreenConfigured(ScreenPtr pScreen);
/* rrproperty.c */ /* rrproperty.c */
void void
RRDeleteAllOutputProperties (RROutputPtr output); RRDeleteAllOutputProperties(RROutputPtr output);
RRPropertyValuePtr RRPropertyValuePtr
RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending); RRGetOutputProperty(RROutputPtr output, Atom property, Bool pending);
RRPropertyPtr RRPropertyPtr RRQueryOutputProperty(RROutputPtr output, Atom property);
RRQueryOutputProperty (RROutputPtr output, Atom property);
void void
RRDeleteOutputProperty (RROutputPtr output, Atom property); RRDeleteOutputProperty(RROutputPtr output, Atom property);
Bool Bool
RRPostPendingProperties (RROutputPtr output); RRPostPendingProperties(RROutputPtr output);
int int
RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
int format, int mode, unsigned long len, int format, int mode, unsigned long len,
void * value, Bool sendevent, Bool pending); void *value, Bool sendevent, Bool pending);
int int
RRConfigureOutputProperty (RROutputPtr output, Atom property,
RRConfigureOutputProperty(RROutputPtr output, Atom property,
Bool pending, Bool range, Bool immutable, Bool pending, Bool range, Bool immutable,
int num_values, INT32 *values); int num_values, INT32 *values);
int int
ProcRRChangeOutputProperty (ClientPtr client); ProcRRChangeOutputProperty(ClientPtr client);
int int
ProcRRGetOutputProperty (ClientPtr client); ProcRRGetOutputProperty(ClientPtr client);
int int
ProcRRListOutputProperties (ClientPtr client); ProcRRListOutputProperties(ClientPtr client);
int int
ProcRRQueryOutputProperty (ClientPtr client); ProcRRQueryOutputProperty(ClientPtr client);
int int
ProcRRConfigureOutputProperty (ClientPtr client); ProcRRConfigureOutputProperty(ClientPtr client);
int int
ProcRRDeleteOutputProperty (ClientPtr client); ProcRRDeleteOutputProperty(ClientPtr client);
/* rrxinerama.c */ /* rrxinerama.c */
void void
RRXineramaExtensionInit(void); RRXineramaExtensionInit(void);
#endif /* _RANDRSTR_H_ */ #endif /* _RANDRSTR_H_ */
......
...@@ -29,7 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -29,7 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* not be a stack variable. * not be a stack variable.
*/ */
void RegisterResourceName(RESTYPE type, char *name); void RegisterResourceName(RESTYPE type, char *name);
void RegisterExtensionNames(ExtensionEntry *ext); void RegisterExtensionNames(ExtensionEntry * ext);
/* /*
* Lookup functions. The returned string must not be modified or freed. * Lookup functions. The returned string must not be modified or freed.
......
...@@ -47,13 +47,12 @@ RESTYPE RRCrtcType; ...@@ -47,13 +47,12 @@ RESTYPE RRCrtcType;
* Notify the CRTC of some change * Notify the CRTC of some change
*/ */
void void
RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged) RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
{ {
ScreenPtr pScreen = crtc->pScreen; ScreenPtr pScreen = crtc->pScreen;
crtc->changed = TRUE; crtc->changed = TRUE;
if (pScreen) if (pScreen) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
pScrPriv->changed = TRUE; pScrPriv->changed = TRUE;
...@@ -69,7 +68,7 @@ RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged) ...@@ -69,7 +68,7 @@ RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged)
* Create a CRTC * Create a CRTC
*/ */
RRCrtcPtr RRCrtcPtr
RRCrtcCreate (ScreenPtr pScreen, void *devPrivate) RRCrtcCreate(ScreenPtr pScreen, void *devPrivate)
{ {
RRCrtcPtr crtc; RRCrtcPtr crtc;
RRCrtcPtr *crtcs; RRCrtcPtr *crtcs;
...@@ -82,18 +81,18 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate) ...@@ -82,18 +81,18 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate)
/* make space for the crtc pointer */ /* make space for the crtc pointer */
if (pScrPriv->numCrtcs) if (pScrPriv->numCrtcs)
crtcs = xrealloc (pScrPriv->crtcs, crtcs = xrealloc(pScrPriv->crtcs,
(pScrPriv->numCrtcs + 1) * sizeof (RRCrtcPtr)); (pScrPriv->numCrtcs + 1) * sizeof(RRCrtcPtr));
else else
crtcs = xalloc (sizeof (RRCrtcPtr)); crtcs = xalloc(sizeof(RRCrtcPtr));
if (!crtcs) if (!crtcs)
return FALSE; return FALSE;
pScrPriv->crtcs = crtcs; pScrPriv->crtcs = crtcs;
crtc = xcalloc (1, sizeof (RRCrtcRec)); crtc = xcalloc(1, sizeof(RRCrtcRec));
if (!crtc) if (!crtc)
return NULL; return NULL;
crtc->id = FakeClientID (0); crtc->id = FakeClientID(0);
crtc->pScreen = pScreen; crtc->pScreen = pScreen;
crtc->mode = NULL; crtc->mode = NULL;
crtc->x = 0; crtc->x = 0;
...@@ -107,7 +106,7 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate) ...@@ -107,7 +106,7 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate)
crtc->changed = FALSE; crtc->changed = FALSE;
crtc->devPrivate = devPrivate; crtc->devPrivate = devPrivate;
if (!AddResource (crtc->id, RRCrtcType, (void *) crtc)) if (!AddResource(crtc->id, RRCrtcType, (void *) crtc))
return NULL; return NULL;
/* attach the screen and crtc together */ /* attach the screen and crtc together */
...@@ -121,7 +120,7 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate) ...@@ -121,7 +120,7 @@ RRCrtcCreate (ScreenPtr pScreen, void *devPrivate)
* Set the allowed rotations on a CRTC * Set the allowed rotations on a CRTC
*/ */
void void
RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations) RRCrtcSetRotations(RRCrtcPtr crtc, Rotation rotations)
{ {
crtc->rotations = rotations; crtc->rotations = rotations;
} }
...@@ -131,13 +130,10 @@ RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations) ...@@ -131,13 +130,10 @@ RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations)
* the driver calls this whenever it has updated the mode * the driver calls this whenever it has updated the mode
*/ */
Bool Bool
RRCrtcNotify (RRCrtcPtr crtc, RRCrtcNotify(RRCrtcPtr crtc,
RRModePtr mode, RRModePtr mode,
int x, int x,
int y, int y, Rotation rotation, int numOutputs, RROutputPtr * outputs)
Rotation rotation,
int numOutputs,
RROutputPtr *outputs)
{ {
int i, j; int i, j;
...@@ -145,56 +141,49 @@ RRCrtcNotify (RRCrtcPtr crtc, ...@@ -145,56 +141,49 @@ RRCrtcNotify (RRCrtcPtr crtc,
* Check to see if any of the new outputs were * Check to see if any of the new outputs were
* not in the old list and mark them as changed * not in the old list and mark them as changed
*/ */
for (i = 0; i < numOutputs; i++) for (i = 0; i < numOutputs; i++) {
{
for (j = 0; j < crtc->numOutputs; j++) for (j = 0; j < crtc->numOutputs; j++)
if (outputs[i] == crtc->outputs[j]) if (outputs[i] == crtc->outputs[j])
break; break;
if (j == crtc->numOutputs) if (j == crtc->numOutputs) {
{
outputs[i]->crtc = crtc; outputs[i]->crtc = crtc;
RROutputChanged (outputs[i], FALSE); RROutputChanged(outputs[i], FALSE);
RRCrtcChanged (crtc, FALSE); RRCrtcChanged(crtc, FALSE);
} }
} }
/* /*
* Check to see if any of the old outputs are * Check to see if any of the old outputs are
* not in the new list and mark them as changed * not in the new list and mark them as changed
*/ */
for (j = 0; j < crtc->numOutputs; j++) for (j = 0; j < crtc->numOutputs; j++) {
{
for (i = 0; i < numOutputs; i++) for (i = 0; i < numOutputs; i++)
if (outputs[i] == crtc->outputs[j]) if (outputs[i] == crtc->outputs[j])
break; break;
if (i == numOutputs) if (i == numOutputs) {
{
if (crtc->outputs[j]->crtc == crtc) if (crtc->outputs[j]->crtc == crtc)
crtc->outputs[j]->crtc = NULL; crtc->outputs[j]->crtc = NULL;
RROutputChanged (crtc->outputs[j], FALSE); RROutputChanged(crtc->outputs[j], FALSE);
RRCrtcChanged (crtc, FALSE); RRCrtcChanged(crtc, FALSE);
} }
} }
/* /*
* Reallocate the crtc output array if necessary * Reallocate the crtc output array if necessary
*/ */
if (numOutputs != crtc->numOutputs) if (numOutputs != crtc->numOutputs) {
{
RROutputPtr *newoutputs; RROutputPtr *newoutputs;
if (numOutputs) if (numOutputs) {
{
if (crtc->numOutputs) if (crtc->numOutputs)
newoutputs = xrealloc (crtc->outputs, newoutputs = xrealloc(crtc->outputs,
numOutputs * sizeof (RROutputPtr)); numOutputs * sizeof(RROutputPtr));
else else
newoutputs = xalloc (numOutputs * sizeof (RROutputPtr)); newoutputs = xalloc(numOutputs * sizeof(RROutputPtr));
if (!newoutputs) if (!newoutputs)
return FALSE; return FALSE;
} }
else else {
{
if (crtc->outputs) if (crtc->outputs)
xfree (crtc->outputs); xfree(crtc->outputs);
newoutputs = NULL; newoutputs = NULL;
} }
crtc->outputs = newoutputs; crtc->outputs = newoutputs;
...@@ -203,42 +192,39 @@ RRCrtcNotify (RRCrtcPtr crtc, ...@@ -203,42 +192,39 @@ RRCrtcNotify (RRCrtcPtr crtc,
/* /*
* Copy the new list of outputs into the crtc * Copy the new list of outputs into the crtc
*/ */
memcpy (crtc->outputs, outputs, numOutputs * sizeof (RROutputPtr)); memcpy(crtc->outputs, outputs, numOutputs * sizeof(RROutputPtr));
/* /*
* Update remaining crtc fields * Update remaining crtc fields
*/ */
if (mode != crtc->mode) if (mode != crtc->mode) {
{
if (crtc->mode) if (crtc->mode)
RRModeDestroy (crtc->mode); RRModeDestroy(crtc->mode);
crtc->mode = mode; crtc->mode = mode;
if (mode != NULL) if (mode != NULL)
mode->refcnt++; mode->refcnt++;
RRCrtcChanged (crtc, TRUE); RRCrtcChanged(crtc, TRUE);
} }
if (x != crtc->x) if (x != crtc->x) {
{
crtc->x = x; crtc->x = x;
RRCrtcChanged (crtc, TRUE); RRCrtcChanged(crtc, TRUE);
} }
if (y != crtc->y) if (y != crtc->y) {
{
crtc->y = y; crtc->y = y;
RRCrtcChanged (crtc, TRUE); RRCrtcChanged(crtc, TRUE);
} }
if (rotation != crtc->rotation) if (rotation != crtc->rotation) {
{
crtc->rotation = rotation; crtc->rotation = rotation;
RRCrtcChanged (crtc, TRUE); RRCrtcChanged(crtc, TRUE);
} }
return TRUE; return TRUE;
} }
void void
RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc) RRDeliverCrtcEvent(ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen; ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv (pScreen);
rrScrPriv(pScreen);
xRRCrtcChangeNotifyEvent ce; xRRCrtcChangeNotifyEvent ce;
RRModePtr mode = crtc->mode; RRModePtr mode = crtc->mode;
...@@ -249,35 +235,34 @@ RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc) ...@@ -249,35 +235,34 @@ RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc)
ce.window = pWin->drawable.id; ce.window = pWin->drawable.id;
ce.crtc = crtc->id; ce.crtc = crtc->id;
ce.rotation = crtc->rotation; ce.rotation = crtc->rotation;
if (mode) if (mode) {
{
ce.mode = mode->mode.id; ce.mode = mode->mode.id;
ce.x = crtc->x; ce.x = crtc->x;
ce.y = crtc->y; ce.y = crtc->y;
ce.width = mode->mode.width; ce.width = mode->mode.width;
ce.height = mode->mode.height; ce.height = mode->mode.height;
} }
else else {
{
ce.mode = None; ce.mode = None;
ce.x = 0; ce.x = 0;
ce.y = 0; ce.y = 0;
ce.width = 0; ce.width = 0;
ce.height = 0; ce.height = 0;
} }
WriteEventsToClient (client, 1, (xEvent *) &ce); WriteEventsToClient(client, 1, (xEvent *) &ce);
} }
static Bool static Bool
RRCrtcPendingProperties (RRCrtcPtr crtc) RRCrtcPendingProperties(RRCrtcPtr crtc)
{ {
ScreenPtr pScreen = crtc->pScreen; ScreenPtr pScreen = crtc->pScreen;
rrScrPriv(pScreen); rrScrPriv(pScreen);
int o; int o;
for (o = 0; o < pScrPriv->numOutputs; o++) for (o = 0; o < pScrPriv->numOutputs; o++) {
{
RROutputPtr output = pScrPriv->outputs[o]; RROutputPtr output = pScrPriv->outputs[o];
if (output->crtc == crtc && output->pendingProperties) if (output->crtc == crtc && output->pendingProperties)
return TRUE; return TRUE;
} }
...@@ -288,16 +273,14 @@ RRCrtcPendingProperties (RRCrtcPtr crtc) ...@@ -288,16 +273,14 @@ RRCrtcPendingProperties (RRCrtcPtr crtc)
* Request that the Crtc be reconfigured * Request that the Crtc be reconfigured
*/ */
Bool Bool
RRCrtcSet (RRCrtcPtr crtc, RRCrtcSet(RRCrtcPtr crtc,
RRModePtr mode, RRModePtr mode,
int x, int x,
int y, int y, Rotation rotation, int numOutputs, RROutputPtr * outputs)
Rotation rotation,
int numOutputs,
RROutputPtr *outputs)
{ {
ScreenPtr pScreen = crtc->pScreen; ScreenPtr pScreen = crtc->pScreen;
Bool ret = FALSE; Bool ret = FALSE;
rrScrPriv(pScreen); rrScrPriv(pScreen);
/* See if nothing changed */ /* See if nothing changed */
...@@ -306,16 +289,13 @@ RRCrtcSet (RRCrtcPtr crtc, ...@@ -306,16 +289,13 @@ RRCrtcSet (RRCrtcPtr crtc,
crtc->y == y && crtc->y == y &&
crtc->rotation == rotation && crtc->rotation == rotation &&
crtc->numOutputs == numOutputs && crtc->numOutputs == numOutputs &&
!memcmp (crtc->outputs, outputs, numOutputs * sizeof (RROutputPtr)) && !memcmp(crtc->outputs, outputs, numOutputs * sizeof(RROutputPtr)) &&
!RRCrtcPendingProperties (crtc)) !RRCrtcPendingProperties(crtc)) {
{
ret = TRUE; ret = TRUE;
} }
else else {
{
#if RANDR_12_INTERFACE #if RANDR_12_INTERFACE
if (pScrPriv->rrCrtcSet) if (pScrPriv->rrCrtcSet) {
{
ret = (*pScrPriv->rrCrtcSet) (pScreen, crtc, mode, x, y, ret = (*pScrPriv->rrCrtcSet) (pScreen, crtc, mode, x, y,
rotation, numOutputs, outputs); rotation, numOutputs, outputs);
} }
...@@ -323,53 +303,49 @@ RRCrtcSet (RRCrtcPtr crtc, ...@@ -323,53 +303,49 @@ RRCrtcSet (RRCrtcPtr crtc,
#endif #endif
{ {
#if RANDR_10_INTERFACE #if RANDR_10_INTERFACE
if (pScrPriv->rrSetConfig) if (pScrPriv->rrSetConfig) {
{
RRScreenSize size; RRScreenSize size;
RRScreenRate rate; RRScreenRate rate;
if (!mode) if (!mode) {
{ RRCrtcNotify(crtc, NULL, x, y, rotation, 0, NULL);
RRCrtcNotify (crtc, NULL, x, y, rotation, 0, NULL);
ret = TRUE; ret = TRUE;
} }
else else {
{
size.width = mode->mode.width; size.width = mode->mode.width;
size.height = mode->mode.height; size.height = mode->mode.height;
if (outputs[0]->mmWidth && outputs[0]->mmHeight) if (outputs[0]->mmWidth && outputs[0]->mmHeight) {
{
size.mmWidth = outputs[0]->mmWidth; size.mmWidth = outputs[0]->mmWidth;
size.mmHeight = outputs[0]->mmHeight; size.mmHeight = outputs[0]->mmHeight;
} }
else else {
{
size.mmWidth = pScreen->mmWidth; size.mmWidth = pScreen->mmWidth;
size.mmHeight = pScreen->mmHeight; size.mmHeight = pScreen->mmHeight;
} }
size.nRates = 1; size.nRates = 1;
rate.rate = RRVerticalRefresh (&mode->mode); rate.rate = RRVerticalRefresh(&mode->mode);
size.pRates = &rate; size.pRates = &rate;
ret = (*pScrPriv->rrSetConfig) (pScreen, rotation, rate.rate, &size); ret =
(*pScrPriv->rrSetConfig) (pScreen, rotation, rate.rate,
&size);
/* /*
* Old 1.0 interface tied screen size to mode size * Old 1.0 interface tied screen size to mode size
*/ */
if (ret) if (ret) {
{ RRCrtcNotify(crtc, mode, x, y, rotation, 1, outputs);
RRCrtcNotify (crtc, mode, x, y, rotation, 1, outputs); RRScreenSizeNotify(pScreen);
RRScreenSizeNotify (pScreen);
} }
} }
} }
#endif #endif
} }
if (ret) if (ret) {
{
int o; int o;
RRTellChanged (pScreen);
RRTellChanged(pScreen);
for (o = 0; o < numOutputs; o++) for (o = 0; o < numOutputs; o++)
RRPostPendingProperties (outputs[o]); RRPostPendingProperties(outputs[o]);
} }
} }
return ret; return ret;
...@@ -379,38 +355,35 @@ RRCrtcSet (RRCrtcPtr crtc, ...@@ -379,38 +355,35 @@ RRCrtcSet (RRCrtcPtr crtc,
* Destroy a Crtc at shutdown * Destroy a Crtc at shutdown
*/ */
void void
RRCrtcDestroy (RRCrtcPtr crtc) RRCrtcDestroy(RRCrtcPtr crtc)
{ {
FreeResource (crtc->id, 0); FreeResource(crtc->id, 0);
} }
static int static int
RRCrtcDestroyResource (void * value, XID pid) RRCrtcDestroyResource(void *value, XID pid)
{ {
RRCrtcPtr crtc = (RRCrtcPtr) value; RRCrtcPtr crtc = (RRCrtcPtr) value;
ScreenPtr pScreen = crtc->pScreen; ScreenPtr pScreen = crtc->pScreen;
if (pScreen) if (pScreen) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
int i; int i;
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++) {
{ if (pScrPriv->crtcs[i] == crtc) {
if (pScrPriv->crtcs[i] == crtc) memmove(pScrPriv->crtcs + i, pScrPriv->crtcs + i + 1,
{ (pScrPriv->numCrtcs - (i + 1)) * sizeof(RRCrtcPtr));
memmove (pScrPriv->crtcs + i, pScrPriv->crtcs + i + 1,
(pScrPriv->numCrtcs - (i + 1)) * sizeof (RRCrtcPtr));
--pScrPriv->numCrtcs; --pScrPriv->numCrtcs;
break; break;
} }
} }
} }
if (crtc->gammaRed) if (crtc->gammaRed)
xfree (crtc->gammaRed); xfree(crtc->gammaRed);
if (crtc->mode) if (crtc->mode)
RRModeDestroy (crtc->mode); RRModeDestroy(crtc->mode);
xfree (crtc); xfree(crtc);
return 1; return 1;
} }
...@@ -419,22 +392,19 @@ RRCrtcDestroyResource (void * value, XID pid) ...@@ -419,22 +392,19 @@ RRCrtcDestroyResource (void * value, XID pid)
*/ */
Bool Bool
RRCrtcGammaSet (RRCrtcPtr crtc, RRCrtcGammaSet(RRCrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue)
CARD16 *red,
CARD16 *green,
CARD16 *blue)
{ {
Bool ret = TRUE; Bool ret = TRUE;
#if RANDR_12_INTERFACE #if RANDR_12_INTERFACE
ScreenPtr pScreen = crtc->pScreen; ScreenPtr pScreen = crtc->pScreen;
#endif #endif
memcpy (crtc->gammaRed, red, crtc->gammaSize * sizeof (CARD16)); memcpy(crtc->gammaRed, red, crtc->gammaSize * sizeof(CARD16));
memcpy (crtc->gammaGreen, green, crtc->gammaSize * sizeof (CARD16)); memcpy(crtc->gammaGreen, green, crtc->gammaSize * sizeof(CARD16));
memcpy (crtc->gammaBlue, blue, crtc->gammaSize * sizeof (CARD16)); memcpy(crtc->gammaBlue, blue, crtc->gammaSize * sizeof(CARD16));
#if RANDR_12_INTERFACE #if RANDR_12_INTERFACE
if (pScreen) if (pScreen) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
if (pScrPriv->rrCrtcSetGamma) if (pScrPriv->rrCrtcSetGamma)
ret = (*pScrPriv->rrCrtcSetGamma) (pScreen, crtc); ret = (*pScrPriv->rrCrtcSetGamma) (pScreen, crtc);
...@@ -450,7 +420,7 @@ RRCrtcGammaSet (RRCrtcPtr crtc, ...@@ -450,7 +420,7 @@ RRCrtcGammaSet (RRCrtcPtr crtc,
*/ */
Bool Bool
RRCrtcGammaNotify (RRCrtcPtr crtc) RRCrtcGammaNotify(RRCrtcPtr crtc)
{ {
return TRUE; /* not much going on here */ return TRUE; /* not much going on here */
} }
...@@ -486,26 +456,24 @@ RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height) ...@@ -486,26 +456,24 @@ RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height)
*/ */
Bool Bool
RRCrtcGammaSetSize (RRCrtcPtr crtc, RRCrtcGammaSetSize(RRCrtcPtr crtc, int size)
int size)
{ {
CARD16 *gamma; CARD16 *gamma;
if (size == crtc->gammaSize) if (size == crtc->gammaSize)
return TRUE; return TRUE;
if (size) if (size) {
{ gamma = xalloc(size * 3 * sizeof(CARD16));
gamma = xalloc (size * 3 * sizeof (CARD16));
if (!gamma) if (!gamma)
return FALSE; return FALSE;
} }
else else
gamma = NULL; gamma = NULL;
if (crtc->gammaRed) if (crtc->gammaRed)
xfree (crtc->gammaRed); xfree(crtc->gammaRed);
crtc->gammaRed = gamma; crtc->gammaRed = gamma;
crtc->gammaGreen = gamma + size; crtc->gammaGreen = gamma + size;
crtc->gammaBlue = gamma + size*2; crtc->gammaBlue = gamma + size * 2;
crtc->gammaSize = size; crtc->gammaSize = size;
return TRUE; return TRUE;
} }
...@@ -514,17 +482,17 @@ RRCrtcGammaSetSize (RRCrtcPtr crtc, ...@@ -514,17 +482,17 @@ RRCrtcGammaSetSize (RRCrtcPtr crtc,
* Initialize crtc type * Initialize crtc type
*/ */
Bool Bool
RRCrtcInit (void) RRCrtcInit(void)
{ {
RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource); RRCrtcType = CreateNewResourceType(RRCrtcDestroyResource);
if (!RRCrtcType) if (!RRCrtcType)
return FALSE; return FALSE;
RegisterResourceName (RRCrtcType, "CRTC"); RegisterResourceName(RRCrtcType, "CRTC");
return TRUE; return TRUE;
} }
int int
ProcRRGetCrtcInfo (ClientPtr client) ProcRRGetCrtcInfo(ClientPtr client)
{ {
REQUEST(xRRGetCrtcInfoReq); REQUEST(xRRGetCrtcInfoReq);
xRRGetCrtcInfoReply rep; xRRGetCrtcInfoReply rep;
...@@ -560,7 +528,7 @@ ProcRRGetCrtcInfo (ClientPtr client) ...@@ -560,7 +528,7 @@ ProcRRGetCrtcInfo (ClientPtr client)
rep.timestamp = pScrPriv->lastSetTime.milliseconds; rep.timestamp = pScrPriv->lastSetTime.milliseconds;
rep.x = crtc->x; rep.x = crtc->x;
rep.y = crtc->y; rep.y = crtc->y;
RRCrtcGetScanoutSize (crtc, &width, &height); RRCrtcGetScanoutSize(crtc, &width, &height);
rep.width = width; rep.width = width;
rep.height = height; rep.height = height;
rep.mode = mode ? mode->mode.id : 0; rep.mode = mode ? mode->mode.id : 0;
...@@ -577,9 +545,8 @@ ProcRRGetCrtcInfo (ClientPtr client) ...@@ -577,9 +545,8 @@ ProcRRGetCrtcInfo (ClientPtr client)
rep.length = rep.nOutput + rep.nPossibleOutput; rep.length = rep.nOutput + rep.nPossibleOutput;
extraLen = rep.length << 2; extraLen = rep.length << 2;
if (extraLen) if (extraLen) {
{ extra = xalloc(extraLen);
extra = xalloc (extraLen);
if (!extra) if (!extra)
return BadAlloc; return BadAlloc;
} }
...@@ -589,20 +556,18 @@ ProcRRGetCrtcInfo (ClientPtr client) ...@@ -589,20 +556,18 @@ ProcRRGetCrtcInfo (ClientPtr client)
outputs = (RROutput *) extra; outputs = (RROutput *) extra;
possible = (RROutput *) (outputs + rep.nOutput); possible = (RROutput *) (outputs + rep.nOutput);
for (i = 0; i < crtc->numOutputs; i++) for (i = 0; i < crtc->numOutputs; i++) {
{
outputs[i] = crtc->outputs[i]->id; outputs[i] = crtc->outputs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&outputs[i], n); swapl(&outputs[i], n);
} }
k = 0; k = 0;
for (i = 0; i < pScrPriv->numOutputs; i++) for (i = 0; i < pScrPriv->numOutputs; i++)
for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++) for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++)
if (pScrPriv->outputs[i]->crtcs[j] == crtc) if (pScrPriv->outputs[i]->crtcs[j] == crtc) {
{
possible[k] = pScrPriv->outputs[i]->id; possible[k] = pScrPriv->outputs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&possible[k], n); swapl(&possible[k], n);
k++; k++;
} }
...@@ -620,18 +585,17 @@ ProcRRGetCrtcInfo (ClientPtr client) ...@@ -620,18 +585,17 @@ ProcRRGetCrtcInfo (ClientPtr client)
swaps(&rep.nOutput, n); swaps(&rep.nOutput, n);
swaps(&rep.nPossibleOutput, n); swaps(&rep.nPossibleOutput, n);
} }
WriteToClient(client, sizeof(xRRGetCrtcInfoReply), (char *)&rep); WriteToClient(client, sizeof(xRRGetCrtcInfoReply), (char *) &rep);
if (extraLen) if (extraLen) {
{ WriteToClient(client, extraLen, (char *) extra);
WriteToClient (client, extraLen, (char *) extra); xfree(extra);
xfree (extra);
} }
return client->noClientException; return client->noClientException;
} }
int int
ProcRRSetCrtcConfig (ClientPtr client) ProcRRSetCrtcConfig(ClientPtr client)
{ {
REQUEST(xRRSetCrtcConfigReq); REQUEST(xRRSetCrtcConfigReq);
xRRSetCrtcConfigReply rep; xRRSetCrtcConfigReply rep;
...@@ -647,34 +611,29 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -647,34 +611,29 @@ ProcRRSetCrtcConfig (ClientPtr client)
int i, j; int i, j;
REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq); REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq);
numOutputs = (stuff->length - (SIZEOF (xRRSetCrtcConfigReq) >> 2)); numOutputs = (stuff->length - (SIZEOF(xRRSetCrtcConfigReq) >> 2));
crtc = LookupIDByType (stuff->crtc, RRCrtcType); crtc = LookupIDByType(stuff->crtc, RRCrtcType);
if (!crtc) if (!crtc) {
{
client->errorValue = stuff->crtc; client->errorValue = stuff->crtc;
return RRErrorBase + BadRRCrtc; return RRErrorBase + BadRRCrtc;
} }
if (stuff->mode == None) if (stuff->mode == None) {
{
mode = NULL; mode = NULL;
if (numOutputs > 0) if (numOutputs > 0)
return BadMatch; return BadMatch;
} }
else else {
{ mode = LookupIDByType(stuff->mode, RRModeType);
mode = LookupIDByType (stuff->mode, RRModeType); if (!mode) {
if (!mode)
{
client->errorValue = stuff->mode; client->errorValue = stuff->mode;
return RRErrorBase + BadRRMode; return RRErrorBase + BadRRMode;
} }
if (numOutputs == 0) if (numOutputs == 0)
return BadMatch; return BadMatch;
} }
if (numOutputs) if (numOutputs) {
{ outputs = xalloc(numOutputs * sizeof(RROutputPtr));
outputs = xalloc (numOutputs * sizeof (RROutputPtr));
if (!outputs) if (!outputs)
return BadAlloc; return BadAlloc;
} }
...@@ -682,59 +641,51 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -682,59 +641,51 @@ ProcRRSetCrtcConfig (ClientPtr client)
outputs = NULL; outputs = NULL;
outputIds = (RROutput *) (stuff + 1); outputIds = (RROutput *) (stuff + 1);
for (i = 0; i < numOutputs; i++) for (i = 0; i < numOutputs; i++) {
{ outputs[i] = (RROutputPtr) LookupIDByType(outputIds[i], RROutputType);
outputs[i] = (RROutputPtr) LookupIDByType (outputIds[i], RROutputType); if (!outputs[i]) {
if (!outputs[i])
{
client->errorValue = outputIds[i]; client->errorValue = outputIds[i];
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
} }
/* validate crtc for this output */ /* validate crtc for this output */
for (j = 0; j < outputs[i]->numCrtcs; j++) for (j = 0; j < outputs[i]->numCrtcs; j++)
if (outputs[i]->crtcs[j] == crtc) if (outputs[i]->crtcs[j] == crtc)
break; break;
if (j == outputs[i]->numCrtcs) if (j == outputs[i]->numCrtcs) {
{
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadMatch; return BadMatch;
} }
/* validate mode for this output */ /* validate mode for this output */
for (j = 0; j < outputs[i]->numModes + outputs[i]->numUserModes; j++) for (j = 0; j < outputs[i]->numModes + outputs[i]->numUserModes; j++) {
{
RRModePtr m = (j < outputs[i]->numModes ? RRModePtr m = (j < outputs[i]->numModes ?
outputs[i]->modes[j] : outputs[i]->modes[j] :
outputs[i]->userModes[j - outputs[i]->numModes]); outputs[i]->userModes[j - outputs[i]->numModes]);
if (m == mode) if (m == mode)
break; break;
} }
if (j == outputs[i]->numModes + outputs[i]->numUserModes) if (j == outputs[i]->numModes + outputs[i]->numUserModes) {
{
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadMatch; return BadMatch;
} }
} }
/* validate clones */ /* validate clones */
for (i = 0; i < numOutputs; i++) for (i = 0; i < numOutputs; i++) {
{ for (j = 0; j < numOutputs; j++) {
for (j = 0; j < numOutputs; j++)
{
int k; int k;
if (i == j) if (i == j)
continue; continue;
for (k = 0; k < outputs[i]->numClones; k++) for (k = 0; k < outputs[i]->numClones; k++) {
{
if (outputs[i]->clones[k] == outputs[j]) if (outputs[i]->clones[k] == outputs[j])
break; break;
} }
if (k == outputs[i]->numClones) if (k == outputs[i]->numClones) {
{
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadMatch; return BadMatch;
} }
} }
...@@ -745,8 +696,7 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -745,8 +696,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
time = ClientTimeToServerTime(stuff->timestamp); time = ClientTimeToServerTime(stuff->timestamp);
if (!pScrPriv) if (!pScrPriv) {
{
time = currentTime; time = currentTime;
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
goto sendReply; goto sendReply;
...@@ -770,20 +720,18 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -770,20 +720,18 @@ ProcRRSetCrtcConfig (ClientPtr client)
*/ */
client->errorValue = stuff->rotation; client->errorValue = stuff->rotation;
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadValue; return BadValue;
} }
if (mode) if (mode) {
{ if ((~crtc->rotations) & rotation) {
if ((~crtc->rotations) & rotation)
{
/* /*
* requested rotation or reflection not supported by screen * requested rotation or reflection not supported by screen
*/ */
client->errorValue = stuff->rotation; client->errorValue = stuff->rotation;
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadMatch; return BadMatch;
} }
...@@ -793,29 +741,26 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -793,29 +741,26 @@ ProcRRSetCrtcConfig (ClientPtr client)
* for setting screen size. Else, assume the CrtcSet sets * for setting screen size. Else, assume the CrtcSet sets
* the size along with the mode * the size along with the mode
*/ */
if (pScrPriv->rrScreenSetSize) if (pScrPriv->rrScreenSetSize) {
{
int source_width = mode->mode.width; int source_width = mode->mode.width;
int source_height = mode->mode.height; int source_height = mode->mode.height;
if ((rotation & 0xf) == RR_Rotate_90 || (rotation & 0xf) == RR_Rotate_270) if ((rotation & 0xf) == RR_Rotate_90 ||
{ (rotation & 0xf) == RR_Rotate_270) {
source_width = mode->mode.height; source_width = mode->mode.height;
source_height = mode->mode.width; source_height = mode->mode.width;
} }
if (stuff->x + source_width > pScreen->width) if (stuff->x + source_width > pScreen->width) {
{
client->errorValue = stuff->x; client->errorValue = stuff->x;
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadValue; return BadValue;
} }
if (stuff->y + source_height > pScreen->height) if (stuff->y + source_height > pScreen->height) {
{
client->errorValue = stuff->y; client->errorValue = stuff->y;
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
return BadValue; return BadValue;
} }
} }
...@@ -826,24 +771,22 @@ ProcRRSetCrtcConfig (ClientPtr client) ...@@ -826,24 +771,22 @@ ProcRRSetCrtcConfig (ClientPtr client)
* Make sure the requested set-time is not older than * Make sure the requested set-time is not older than
* the last set-time * the last set-time
*/ */
if (CompareTimeStamps (time, pScrPriv->lastSetTime) < 0) if (CompareTimeStamps(time, pScrPriv->lastSetTime) < 0) {
{
rep.status = RRSetConfigInvalidTime; rep.status = RRSetConfigInvalidTime;
goto sendReply; goto sendReply;
} }
if (!RRCrtcSet (crtc, mode, stuff->x, stuff->y, if (!RRCrtcSet(crtc, mode, stuff->x, stuff->y,
rotation, numOutputs, outputs)) rotation, numOutputs, outputs)) {
{
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
goto sendReply; goto sendReply;
} }
rep.status = RRSetConfigSuccess; rep.status = RRSetConfigSuccess;
pScrPriv->lastSetTime = time; pScrPriv->lastSetTime = time;
sendReply: sendReply:
if (outputs) if (outputs)
xfree (outputs); xfree(outputs);
rep.type = X_Reply; rep.type = X_Reply;
/* rep.status has already been filled in */ /* rep.status has already been filled in */
...@@ -851,20 +794,20 @@ sendReply: ...@@ -851,20 +794,20 @@ sendReply:
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.newTimestamp = pScrPriv->lastSetTime.milliseconds; rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
if (client->swapped) if (client->swapped) {
{
int n; int n;
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.newTimestamp, n); swapl(&rep.newTimestamp, n);
} }
WriteToClient(client, sizeof(xRRSetCrtcConfigReply), (char *)&rep); WriteToClient(client, sizeof(xRRSetCrtcConfigReply), (char *) &rep);
return client->noClientException; return client->noClientException;
} }
int int
ProcRRGetCrtcGammaSize (ClientPtr client) ProcRRGetCrtcGammaSize(ClientPtr client)
{ {
REQUEST(xRRGetCrtcGammaSizeReq); REQUEST(xRRGetCrtcGammaSizeReq);
xRRGetCrtcGammaSizeReply reply; xRRGetCrtcGammaSizeReply reply;
...@@ -872,7 +815,7 @@ ProcRRGetCrtcGammaSize (ClientPtr client) ...@@ -872,7 +815,7 @@ ProcRRGetCrtcGammaSize (ClientPtr client)
int n; int n;
REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq); REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq);
crtc = LookupCrtc (client, stuff->crtc, DixReadAccess); crtc = LookupCrtc(client, stuff->crtc, DixReadAccess);
if (!crtc) if (!crtc)
return RRErrorBase + BadRRCrtc; return RRErrorBase + BadRRCrtc;
...@@ -881,16 +824,16 @@ ProcRRGetCrtcGammaSize (ClientPtr client) ...@@ -881,16 +824,16 @@ ProcRRGetCrtcGammaSize (ClientPtr client)
reply.length = 0; reply.length = 0;
reply.size = crtc->gammaSize; reply.size = crtc->gammaSize;
if (client->swapped) { if (client->swapped) {
swaps (&reply.sequenceNumber, n); swaps(&reply.sequenceNumber, n);
swapl (&reply.length, n); swapl(&reply.length, n);
swaps (&reply.size, n); swaps(&reply.size, n);
} }
WriteToClient (client, sizeof (xRRGetCrtcGammaSizeReply), (char *) &reply); WriteToClient(client, sizeof(xRRGetCrtcGammaSizeReply), (char *) &reply);
return client->noClientException; return client->noClientException;
} }
int int
ProcRRGetCrtcGamma (ClientPtr client) ProcRRGetCrtcGamma(ClientPtr client)
{ {
REQUEST(xRRGetCrtcGammaReq); REQUEST(xRRGetCrtcGammaReq);
xRRGetCrtcGammaReply reply; xRRGetCrtcGammaReply reply;
...@@ -900,7 +843,7 @@ ProcRRGetCrtcGamma (ClientPtr client) ...@@ -900,7 +843,7 @@ ProcRRGetCrtcGamma (ClientPtr client)
char *extra; char *extra;
REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq); REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq);
crtc = LookupCrtc (client, stuff->crtc, DixReadAccess); crtc = LookupCrtc(client, stuff->crtc, DixReadAccess);
if (!crtc) if (!crtc)
return RRErrorBase + BadRRCrtc; return RRErrorBase + BadRRCrtc;
...@@ -917,23 +860,22 @@ ProcRRGetCrtcGamma (ClientPtr client) ...@@ -917,23 +860,22 @@ ProcRRGetCrtcGamma (ClientPtr client)
reply.length = (len + 3) >> 2; reply.length = (len + 3) >> 2;
reply.size = crtc->gammaSize; reply.size = crtc->gammaSize;
if (client->swapped) { if (client->swapped) {
swaps (&reply.sequenceNumber, n); swaps(&reply.sequenceNumber, n);
swapl (&reply.length, n); swapl(&reply.length, n);
swaps (&reply.size, n); swaps(&reply.size, n);
} }
WriteToClient (client, sizeof (xRRGetCrtcGammaReply), (char *) &reply); WriteToClient(client, sizeof(xRRGetCrtcGammaReply), (char *) &reply);
if (crtc->gammaSize) if (crtc->gammaSize) {
{
memcpy(extra, crtc->gammaRed, len); memcpy(extra, crtc->gammaRed, len);
client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write; client->pSwapReplyFunc = (ReplySwapPtr) CopySwap16Write;
WriteSwappedDataToClient (client, len, extra); WriteSwappedDataToClient(client, len, extra);
xfree(extra); xfree(extra);
} }
return client->noClientException; return client->noClientException;
} }
int int
ProcRRSetCrtcGamma (ClientPtr client) ProcRRSetCrtcGamma(ClientPtr client)
{ {
REQUEST(xRRSetCrtcGammaReq); REQUEST(xRRSetCrtcGammaReq);
RRCrtcPtr crtc; RRCrtcPtr crtc;
...@@ -941,11 +883,11 @@ ProcRRSetCrtcGamma (ClientPtr client) ...@@ -941,11 +883,11 @@ ProcRRSetCrtcGamma (ClientPtr client)
CARD16 *red, *green, *blue; CARD16 *red, *green, *blue;
REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq); REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq);
crtc = LookupCrtc (client, stuff->crtc, DixWriteAccess); crtc = LookupCrtc(client, stuff->crtc, DixWriteAccess);
if (!crtc) if (!crtc)
return RRErrorBase + BadRRCrtc; return RRErrorBase + BadRRCrtc;
len = client->req_len - (sizeof (xRRSetCrtcGammaReq) >> 2); len = client->req_len - (sizeof(xRRSetCrtcGammaReq) >> 2);
if (len < (stuff->size * 3 + 1) >> 1) if (len < (stuff->size * 3 + 1) >> 1)
return BadLength; return BadLength;
...@@ -956,8 +898,7 @@ ProcRRSetCrtcGamma (ClientPtr client) ...@@ -956,8 +898,7 @@ ProcRRSetCrtcGamma (ClientPtr client)
green = red + crtc->gammaSize; green = red + crtc->gammaSize;
blue = green + crtc->gammaSize; blue = green + crtc->gammaSize;
RRCrtcGammaSet (crtc, red, green, blue); RRCrtcGammaSet(crtc, red, green, blue);
return Success; return Success;
} }
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#define SERVER_RANDR_MINOR 2 #define SERVER_RANDR_MINOR 2
Bool Bool
RRClientKnowsRates (ClientPtr pClient) RRClientKnowsRates(ClientPtr pClient)
{ {
rrClientPriv(pClient); rrClientPriv(pClient);
...@@ -35,10 +35,11 @@ RRClientKnowsRates (ClientPtr pClient) ...@@ -35,10 +35,11 @@ RRClientKnowsRates (ClientPtr pClient)
} }
static int static int
ProcRRQueryVersion (ClientPtr client) ProcRRQueryVersion(ClientPtr client)
{ {
xRRQueryVersionReply rep; xRRQueryVersionReply rep;
register int n; register int n;
REQUEST(xRRQueryVersionReq); REQUEST(xRRQueryVersionReq);
rrClientPriv(client); rrClientPriv(client);
...@@ -60,12 +61,12 @@ ProcRRQueryVersion (ClientPtr client) ...@@ -60,12 +61,12 @@ ProcRRQueryVersion (ClientPtr client)
swapl(&rep.majorVersion, n); swapl(&rep.majorVersion, n);
swapl(&rep.minorVersion, n); swapl(&rep.minorVersion, n);
} }
WriteToClient(client, sizeof(xRRQueryVersionReply), (char *)&rep); WriteToClient(client, sizeof(xRRQueryVersionReply), (char *) &rep);
return (client->noClientException); return (client->noClientException);
} }
static int static int
ProcRRSelectInput (ClientPtr client) ProcRRSelectInput(ClientPtr client)
{ {
REQUEST(xRRSelectInputReq); REQUEST(xRRSelectInputReq);
rrClientPriv(client); rrClientPriv(client);
...@@ -76,38 +77,35 @@ ProcRRSelectInput (ClientPtr client) ...@@ -76,38 +77,35 @@ ProcRRSelectInput (ClientPtr client)
int rc; int rc;
REQUEST_SIZE_MATCH(xRRSelectInputReq); REQUEST_SIZE_MATCH(xRRSelectInputReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityWriteAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityWriteAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
pHead = (RREventPtr *)SecurityLookupIDByType(client, pHead = (RREventPtr *) SecurityLookupIDByType(client,
pWin->drawable.id, RREventType, pWin->drawable.id,
DixWriteAccess); RREventType, DixWriteAccess);
if (stuff->enable & (RRScreenChangeNotifyMask| if (stuff->enable & (RRScreenChangeNotifyMask |
RRCrtcChangeNotifyMask| RRCrtcChangeNotifyMask | RROutputChangeNotifyMask)) {
RROutputChangeNotifyMask))
{
ScreenPtr pScreen = pWin->drawable.pScreen; ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv (pScreen);
rrScrPriv(pScreen);
pRREvent = NULL; pRREvent = NULL;
if (pHead) if (pHead) {
{
/* check for existing entry. */ /* check for existing entry. */
for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next)
if (pRREvent->client == client) if (pRREvent->client == client)
break; break;
} }
if (!pRREvent) if (!pRREvent) {
{
/* build the entry */ /* build the entry */
pRREvent = (RREventPtr) xalloc (sizeof (RREventRec)); pRREvent = (RREventPtr) xalloc(sizeof(RREventRec));
if (!pRREvent) if (!pRREvent)
return BadAlloc; return BadAlloc;
pRREvent->next = 0; pRREvent->next = 0;
...@@ -118,9 +116,9 @@ ProcRRSelectInput (ClientPtr client) ...@@ -118,9 +116,9 @@ ProcRRSelectInput (ClientPtr client)
* add a resource that will be deleted when * add a resource that will be deleted when
* the client goes away * the client goes away
*/ */
clientResource = FakeClientID (client->index); clientResource = FakeClientID(client->index);
pRREvent->clientResource = clientResource; pRREvent->clientResource = clientResource;
if (!AddResource (clientResource, RRClientType, (void *)pRREvent)) if (!AddResource(clientResource, RRClientType, (void *) pRREvent))
return BadAlloc; return BadAlloc;
/* /*
* create a resource to contain a pointer to the list * create a resource to contain a pointer to the list
...@@ -128,13 +126,12 @@ ProcRRSelectInput (ClientPtr client) ...@@ -128,13 +126,12 @@ ProcRRSelectInput (ClientPtr client)
* the list may be arbitrarily rearranged which cannot be * the list may be arbitrarily rearranged which cannot be
* done through the resource database. * done through the resource database.
*/ */
if (!pHead) if (!pHead) {
{ pHead = (RREventPtr *) xalloc(sizeof(RREventPtr));
pHead = (RREventPtr *) xalloc (sizeof (RREventPtr));
if (!pHead || if (!pHead ||
!AddResource (pWin->drawable.id, RREventType, (void *)pHead)) !AddResource(pWin->drawable.id, RREventType,
{ (void *) pHead)) {
FreeResource (clientResource, RT_NONE); FreeResource(clientResource, RT_NONE);
return BadAlloc; return BadAlloc;
} }
*pHead = 0; *pHead = 0;
...@@ -145,47 +142,44 @@ ProcRRSelectInput (ClientPtr client) ...@@ -145,47 +142,44 @@ ProcRRSelectInput (ClientPtr client)
/* /*
* Now see if the client needs an event * Now see if the client needs an event
*/ */
if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask)) if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask)) {
{
pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum]; pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum];
if (CompareTimeStamps (pTimes->setTime, if (CompareTimeStamps(pTimes->setTime,
pScrPriv->lastSetTime) != 0 || pScrPriv->lastSetTime) != 0 ||
CompareTimeStamps (pTimes->configTime, CompareTimeStamps(pTimes->configTime,
pScrPriv->lastConfigTime) != 0) pScrPriv->lastConfigTime) != 0) {
{ RRDeliverScreenEvent(client, pWin, pScreen);
RRDeliverScreenEvent (client, pWin, pScreen);
} }
} }
} }
else if (stuff->enable == 0) else if (stuff->enable == 0) {
{
/* delete the interest */ /* delete the interest */
if (pHead) { if (pHead) {
RREventPtr pNewRREvent = 0; RREventPtr pNewRREvent = 0;
for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) { for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) {
if (pRREvent->client == client) if (pRREvent->client == client)
break; break;
pNewRREvent = pRREvent; pNewRREvent = pRREvent;
} }
if (pRREvent) { if (pRREvent) {
FreeResource (pRREvent->clientResource, RRClientType); FreeResource(pRREvent->clientResource, RRClientType);
if (pNewRREvent) if (pNewRREvent)
pNewRREvent->next = pRREvent->next; pNewRREvent->next = pRREvent->next;
else else
*pHead = pRREvent->next; *pHead = pRREvent->next;
xfree (pRREvent); xfree(pRREvent);
} }
} }
} }
else else {
{
client->errorValue = stuff->enable; client->errorValue = stuff->enable;
return BadValue; return BadValue;
} }
return Success; return Success;
} }
int (*ProcRandrVector[RRNumberRequests])(ClientPtr) = { int (*ProcRandrVector[RRNumberRequests]) (ClientPtr) = {
ProcRRQueryVersion, /* 0 */ ProcRRQueryVersion, /* 0 */
/* we skip 1 to make old clients fail pretty immediately */ /* we skip 1 to make old clients fail pretty immediately */
NULL, /* 1 ProcRandrOldGetScreenInfo */ NULL, /* 1 ProcRandrOldGetScreenInfo */
...@@ -216,4 +210,3 @@ int (*ProcRandrVector[RRNumberRequests])(ClientPtr) = { ...@@ -216,4 +210,3 @@ int (*ProcRandrVector[RRNumberRequests])(ClientPtr) = {
ProcRRGetCrtcGamma, /* 23 */ ProcRRGetCrtcGamma, /* 23 */
ProcRRSetCrtcGamma, /* 24 */ ProcRRSetCrtcGamma, /* 24 */
}; };
...@@ -24,9 +24,10 @@ ...@@ -24,9 +24,10 @@
#ifdef RANDR_10_INTERFACE #ifdef RANDR_10_INTERFACE
static RRModePtr static RRModePtr
RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh) RROldModeAdd(RROutputPtr output, RRScreenSizePtr size, int refresh)
{ {
ScreenPtr pScreen = output->pScreen; ScreenPtr pScreen = output->pScreen;
rrScrPriv(pScreen); rrScrPriv(pScreen);
xRRModeInfo modeInfo; xRRModeInfo modeInfo;
char name[100]; char name[100];
...@@ -34,8 +35,8 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh) ...@@ -34,8 +35,8 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh)
int i; int i;
RRModePtr *modes; RRModePtr *modes;
memset (&modeInfo, '\0', sizeof (modeInfo)); memset(&modeInfo, '\0', sizeof(modeInfo));
sprintf (name, "%dx%d", size->width, size->height); sprintf(name, "%dx%d", size->width, size->height);
modeInfo.width = size->width; modeInfo.width = size->width;
modeInfo.height = size->height; modeInfo.height = size->height;
...@@ -43,26 +44,24 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh) ...@@ -43,26 +44,24 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh)
modeInfo.vTotal = size->height; modeInfo.vTotal = size->height;
modeInfo.dotClock = ((CARD32) size->width * (CARD32) size->height * modeInfo.dotClock = ((CARD32) size->width * (CARD32) size->height *
(CARD32) refresh); (CARD32) refresh);
modeInfo.nameLength = strlen (name); modeInfo.nameLength = strlen(name);
mode = RRModeGet (&modeInfo, name); mode = RRModeGet(&modeInfo, name);
if (!mode) if (!mode)
return NULL; return NULL;
for (i = 0; i < output->numModes; i++) for (i = 0; i < output->numModes; i++)
if (output->modes[i] == mode) if (output->modes[i] == mode) {
{ RRModeDestroy(mode);
RRModeDestroy (mode);
return mode; return mode;
} }
if (output->numModes) if (output->numModes)
modes = xrealloc (output->modes, modes = xrealloc(output->modes,
(output->numModes + 1) * sizeof (RRModePtr)); (output->numModes + 1) * sizeof(RRModePtr));
else else
modes = xalloc (sizeof (RRModePtr)); modes = xalloc(sizeof(RRModePtr));
if (!modes) if (!modes) {
{ RRModeDestroy(mode);
RRModeDestroy (mode); FreeResource(mode->mode.id, 0);
FreeResource (mode->mode.id, 0);
return NULL; return NULL;
} }
modes[output->numModes++] = mode; modes[output->numModes++] = mode;
...@@ -74,7 +73,7 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh) ...@@ -74,7 +73,7 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh)
} }
static void static void
RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) RRScanOldConfig(ScreenPtr pScreen, Rotation rotations)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
RROutputPtr output; RROutputPtr output;
...@@ -89,19 +88,17 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) ...@@ -89,19 +88,17 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
* First time through, create a crtc and output and hook * First time through, create a crtc and output and hook
* them together * them together
*/ */
if (pScrPriv->numOutputs == 0 && if (pScrPriv->numOutputs == 0 && pScrPriv->numCrtcs == 0) {
pScrPriv->numCrtcs == 0) crtc = RRCrtcCreate(pScreen, NULL);
{
crtc = RRCrtcCreate (pScreen, NULL);
if (!crtc) if (!crtc)
return; return;
output = RROutputCreate (pScreen, "default", 7, NULL); output = RROutputCreate(pScreen, "default", 7, NULL);
if (!output) if (!output)
return; return;
RROutputSetCrtcs (output, &crtc, 1); RROutputSetCrtcs(output, &crtc, 1);
RROutputSetConnection (output, RR_Connected); RROutputSetConnection(output, RR_Connected);
#ifdef RENDER #ifdef RENDER
RROutputSetSubpixelOrder (output, PictureGetSubpixelOrder (pScreen)); RROutputSetSubpixelOrder(output, PictureGetSubpixelOrder(pScreen));
#endif #endif
} }
...@@ -113,65 +110,60 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) ...@@ -113,65 +110,60 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
return; return;
/* check rotations */ /* check rotations */
if (rotations != crtc->rotations) if (rotations != crtc->rotations) {
{
crtc->rotations = rotations; crtc->rotations = rotations;
crtc->changed = TRUE; crtc->changed = TRUE;
pScrPriv->changed = TRUE; pScrPriv->changed = TRUE;
} }
/* regenerate mode list */ /* regenerate mode list */
for (i = 0; i < pScrPriv->nSizes; i++) for (i = 0; i < pScrPriv->nSizes; i++) {
{
RRScreenSizePtr size = &pScrPriv->pSizes[i]; RRScreenSizePtr size = &pScrPriv->pSizes[i];
int r; int r;
if (size->nRates) if (size->nRates) {
{ for (r = 0; r < size->nRates; r++) {
for (r = 0; r < size->nRates; r++) mode = RROldModeAdd(output, size, size->pRates[r].rate);
{
mode = RROldModeAdd (output, size, size->pRates[r].rate);
if (i == pScrPriv->size && if (i == pScrPriv->size &&
size->pRates[r].rate == pScrPriv->rate) size->pRates[r].rate == pScrPriv->rate) {
{
newMode = mode; newMode = mode;
} }
} }
xfree (size->pRates); xfree(size->pRates);
} }
else else {
{ mode = RROldModeAdd(output, size, 0);
mode = RROldModeAdd (output, size, 0);
if (i == pScrPriv->size) if (i == pScrPriv->size)
newMode = mode; newMode = mode;
} }
} }
if (pScrPriv->nSizes) if (pScrPriv->nSizes)
xfree (pScrPriv->pSizes); xfree(pScrPriv->pSizes);
pScrPriv->pSizes = NULL; pScrPriv->pSizes = NULL;
pScrPriv->nSizes = 0; pScrPriv->nSizes = 0;
/* find size bounds */ /* find size bounds */
for (i = 0; i < output->numModes + output->numUserModes; i++) for (i = 0; i < output->numModes + output->numUserModes; i++) {
{
mode = (i < output->numModes ? mode = (i < output->numModes ?
output->modes[i] : output->modes[i] : output->userModes[i - output->numModes]);
output->userModes[i-output->numModes]);
width = mode->mode.width; width = mode->mode.width;
height = mode->mode.height; height = mode->mode.height;
if (width < minWidth) minWidth = width; if (width < minWidth)
if (width > maxWidth) maxWidth = width; minWidth = width;
if (height < minHeight) minHeight = height; if (width > maxWidth)
if (height > maxHeight) maxHeight = height; maxWidth = width;
if (height < minHeight)
minHeight = height;
if (height > maxHeight)
maxHeight = height;
} }
RRScreenSetSizeRange (pScreen, minWidth, minHeight, maxWidth, maxHeight); RRScreenSetSizeRange(pScreen, minWidth, minHeight, maxWidth, maxHeight);
/* notice current mode */ /* notice current mode */
if (newMode) if (newMode)
RRCrtcNotify (crtc, newMode, 0, 0, pScrPriv->rotation, RRCrtcNotify(crtc, newMode, 0, 0, pScrPriv->rotation, 1, &output);
1, &output);
} }
#endif #endif
...@@ -179,9 +171,9 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) ...@@ -179,9 +171,9 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
* Poll the driver for changed information * Poll the driver for changed information
*/ */
Bool Bool
RRGetInfo (ScreenPtr pScreen) RRGetInfo(ScreenPtr pScreen)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
Rotation rotations; Rotation rotations;
int i; int i;
...@@ -199,9 +191,9 @@ RRGetInfo (ScreenPtr pScreen) ...@@ -199,9 +191,9 @@ RRGetInfo (ScreenPtr pScreen)
#if RANDR_10_INTERFACE #if RANDR_10_INTERFACE
if (pScrPriv->nSizes) if (pScrPriv->nSizes)
RRScanOldConfig (pScreen, rotations); RRScanOldConfig(pScreen, rotations);
#endif #endif
RRTellChanged (pScreen); RRTellChanged(pScreen);
return TRUE; return TRUE;
} }
...@@ -209,19 +201,16 @@ RRGetInfo (ScreenPtr pScreen) ...@@ -209,19 +201,16 @@ RRGetInfo (ScreenPtr pScreen)
* Register the range of sizes for the screen * Register the range of sizes for the screen
*/ */
void void
RRScreenSetSizeRange (ScreenPtr pScreen, RRScreenSetSizeRange(ScreenPtr pScreen,
CARD16 minWidth, CARD16 minWidth,
CARD16 minHeight, CARD16 minHeight, CARD16 maxWidth, CARD16 maxHeight)
CARD16 maxWidth,
CARD16 maxHeight)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
if (!pScrPriv) if (!pScrPriv)
return; return;
if (pScrPriv->minWidth == minWidth && pScrPriv->minHeight == minHeight && if (pScrPriv->minWidth == minWidth && pScrPriv->minHeight == minHeight &&
pScrPriv->maxWidth == maxWidth && pScrPriv->maxHeight == maxHeight) pScrPriv->maxWidth == maxWidth && pScrPriv->maxHeight == maxHeight) {
{
return; return;
} }
...@@ -235,8 +224,7 @@ RRScreenSetSizeRange (ScreenPtr pScreen, ...@@ -235,8 +224,7 @@ RRScreenSetSizeRange (ScreenPtr pScreen,
#ifdef RANDR_10_INTERFACE #ifdef RANDR_10_INTERFACE
static Bool static Bool
RRScreenSizeMatches (RRScreenSizePtr a, RRScreenSizeMatches(RRScreenSizePtr a, RRScreenSizePtr b)
RRScreenSizePtr b)
{ {
if (a->width != b->width) if (a->width != b->width)
return FALSE; return FALSE;
...@@ -250,13 +238,10 @@ RRScreenSizeMatches (RRScreenSizePtr a, ...@@ -250,13 +238,10 @@ RRScreenSizeMatches (RRScreenSizePtr a,
} }
RRScreenSizePtr RRScreenSizePtr
RRRegisterSize (ScreenPtr pScreen, RRRegisterSize(ScreenPtr pScreen,
short width, short width, short height, short mmWidth, short mmHeight)
short height,
short mmWidth,
short mmHeight)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
int i; int i;
RRScreenSize tmp; RRScreenSize tmp;
RRScreenSizePtr pNew; RRScreenSizePtr pNew;
...@@ -266,26 +251,25 @@ RRRegisterSize (ScreenPtr pScreen, ...@@ -266,26 +251,25 @@ RRRegisterSize (ScreenPtr pScreen,
tmp.id = 0; tmp.id = 0;
tmp.width = width; tmp.width = width;
tmp.height= height; tmp.height = height;
tmp.mmWidth = mmWidth; tmp.mmWidth = mmWidth;
tmp.mmHeight = mmHeight; tmp.mmHeight = mmHeight;
tmp.pRates = 0; tmp.pRates = 0;
tmp.nRates = 0; tmp.nRates = 0;
for (i = 0; i < pScrPriv->nSizes; i++) for (i = 0; i < pScrPriv->nSizes; i++)
if (RRScreenSizeMatches (&tmp, &pScrPriv->pSizes[i])) if (RRScreenSizeMatches(&tmp, &pScrPriv->pSizes[i]))
return &pScrPriv->pSizes[i]; return &pScrPriv->pSizes[i];
pNew = xrealloc (pScrPriv->pSizes, pNew = xrealloc(pScrPriv->pSizes,
(pScrPriv->nSizes + 1) * sizeof (RRScreenSize)); (pScrPriv->nSizes + 1) * sizeof(RRScreenSize));
if (!pNew) if (!pNew)
return 0; return 0;
pNew[pScrPriv->nSizes++] = tmp; pNew[pScrPriv->nSizes++] = tmp;
pScrPriv->pSizes = pNew; pScrPriv->pSizes = pNew;
return &pNew[pScrPriv->nSizes-1]; return &pNew[pScrPriv->nSizes - 1];
} }
Bool RRRegisterRate (ScreenPtr pScreen, Bool
RRScreenSizePtr pSize, RRRegisterRate(ScreenPtr pScreen, RRScreenSizePtr pSize, int rate)
int rate)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
int i; int i;
...@@ -298,8 +282,7 @@ Bool RRRegisterRate (ScreenPtr pScreen, ...@@ -298,8 +282,7 @@ Bool RRRegisterRate (ScreenPtr pScreen,
if (pSize->pRates[i].rate == rate) if (pSize->pRates[i].rate == rate)
return TRUE; return TRUE;
pNew = xrealloc (pSize->pRates, pNew = xrealloc(pSize->pRates, (pSize->nRates + 1) * sizeof(RRScreenRate));
(pSize->nRates + 1) * sizeof (RRScreenRate));
if (!pNew) if (!pNew)
return FALSE; return FALSE;
pRate = &pNew[pSize->nRates++]; pRate = &pNew[pSize->nRates++];
...@@ -311,7 +294,7 @@ Bool RRRegisterRate (ScreenPtr pScreen, ...@@ -311,7 +294,7 @@ Bool RRRegisterRate (ScreenPtr pScreen,
Rotation Rotation
RRGetRotation(ScreenPtr pScreen) RRGetRotation(ScreenPtr pScreen)
{ {
RROutputPtr output = RRFirstOutput (pScreen); RROutputPtr output = RRFirstOutput(pScreen);
if (!output) if (!output)
return RR_Rotate_0; return RR_Rotate_0;
...@@ -320,12 +303,10 @@ RRGetRotation(ScreenPtr pScreen) ...@@ -320,12 +303,10 @@ RRGetRotation(ScreenPtr pScreen)
} }
void void
RRSetCurrentConfig (ScreenPtr pScreen, RRSetCurrentConfig(ScreenPtr pScreen,
Rotation rotation, Rotation rotation, int rate, RRScreenSizePtr pSize)
int rate,
RRScreenSizePtr pSize)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
if (!pScrPriv) if (!pScrPriv)
return; return;
......
...@@ -43,20 +43,32 @@ ...@@ -43,20 +43,32 @@
RESTYPE RRModeType; RESTYPE RRModeType;
static Bool static Bool
RRModeEqual (xRRModeInfo *a, xRRModeInfo *b) RRModeEqual(xRRModeInfo * a, xRRModeInfo * b)
{ {
if (a->width != b->width) return FALSE; if (a->width != b->width)
if (a->height != b->height) return FALSE; return FALSE;
if (a->dotClock != b->dotClock) return FALSE; if (a->height != b->height)
if (a->hSyncStart != b->hSyncStart) return FALSE; return FALSE;
if (a->hSyncEnd != b->hSyncEnd) return FALSE; if (a->dotClock != b->dotClock)
if (a->hTotal != b->hTotal) return FALSE; return FALSE;
if (a->hSkew != b->hSkew) return FALSE; if (a->hSyncStart != b->hSyncStart)
if (a->vSyncStart != b->vSyncStart) return FALSE; return FALSE;
if (a->vSyncEnd != b->vSyncEnd) return FALSE; if (a->hSyncEnd != b->hSyncEnd)
if (a->vTotal != b->vTotal) return FALSE; return FALSE;
if (a->nameLength != b->nameLength) return FALSE; if (a->hTotal != b->hTotal)
if (a->modeFlags != b->modeFlags) return FALSE; return FALSE;
if (a->hSkew != b->hSkew)
return FALSE;
if (a->vSyncStart != b->vSyncStart)
return FALSE;
if (a->vSyncEnd != b->vSyncEnd)
return FALSE;
if (a->vTotal != b->vTotal)
return FALSE;
if (a->nameLength != b->nameLength)
return FALSE;
if (a->modeFlags != b->modeFlags)
return FALSE;
return TRUE; return TRUE;
} }
...@@ -67,33 +79,30 @@ static int num_modes; ...@@ -67,33 +79,30 @@ static int num_modes;
static RRModePtr *modes; static RRModePtr *modes;
static RRModePtr static RRModePtr
RRModeCreate (xRRModeInfo *modeInfo, RRModeCreate(xRRModeInfo * modeInfo, const char *name, ScreenPtr userScreen)
const char *name,
ScreenPtr userScreen)
{ {
RRModePtr mode, *newModes; RRModePtr mode, *newModes;
if (!RRInit ()) if (!RRInit())
return NULL; return NULL;
mode = xalloc (sizeof (RRModeRec) + modeInfo->nameLength + 1); mode = xalloc(sizeof(RRModeRec) + modeInfo->nameLength + 1);
if (!mode) if (!mode)
return NULL; return NULL;
mode->refcnt = 1; mode->refcnt = 1;
mode->mode = *modeInfo; mode->mode = *modeInfo;
mode->name = (char *) (mode + 1); mode->name = (char *) (mode + 1);
memcpy (mode->name, name, modeInfo->nameLength); memcpy(mode->name, name, modeInfo->nameLength);
mode->name[modeInfo->nameLength] = '\0'; mode->name[modeInfo->nameLength] = '\0';
mode->userScreen = userScreen; mode->userScreen = userScreen;
if (num_modes) if (num_modes)
newModes = xrealloc (modes, (num_modes + 1) * sizeof (RRModePtr)); newModes = xrealloc(modes, (num_modes + 1) * sizeof(RRModePtr));
else else
newModes = xalloc (sizeof (RRModePtr)); newModes = xalloc(sizeof(RRModePtr));
if (!newModes) if (!newModes) {
{ xfree(mode);
xfree (mode);
return NULL; return NULL;
} }
...@@ -109,24 +118,23 @@ RRModeCreate (xRRModeInfo *modeInfo, ...@@ -109,24 +118,23 @@ RRModeCreate (xRRModeInfo *modeInfo,
*/ */
++mode->refcnt; ++mode->refcnt;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "RRModeCreate: num_modes [%d] new mode [%s] ([%p]) refcnt [%d]\n", num_modes, mode->name, mode, mode->refcnt); fprintf(stderr,
"RRModeCreate: num_modes [%d] new mode [%s] ([%p]) refcnt [%d]\n",
num_modes, mode->name, mode, mode->refcnt);
#endif #endif
return mode; return mode;
} }
static RRModePtr static RRModePtr
RRModeFindByName (const char *name, RRModeFindByName(const char *name, CARD16 nameLength)
CARD16 nameLength)
{ {
int i; int i;
RRModePtr mode; RRModePtr mode;
for (i = 0; i < num_modes; i++) for (i = 0; i < num_modes; i++) {
{
mode = modes[i]; mode = modes[i];
if (mode->mode.nameLength == nameLength && if (mode->mode.nameLength == nameLength &&
!memcmp (name, mode->name, nameLength)) !memcmp(name, mode->name, nameLength)) {
{
return mode; return mode;
} }
} }
...@@ -134,20 +142,20 @@ RRModeFindByName (const char *name, ...@@ -134,20 +142,20 @@ RRModeFindByName (const char *name,
} }
RRModePtr RRModePtr
RRModeGet (xRRModeInfo *modeInfo, RRModeGet(xRRModeInfo * modeInfo, const char *name)
const char *name)
{ {
int i; int i;
for (i = 0; i < num_modes; i++) for (i = 0; i < num_modes; i++) {
{
RRModePtr mode = modes[i]; RRModePtr mode = modes[i];
if (RRModeEqual (&mode->mode, modeInfo) &&
!memcmp (name, mode->name, modeInfo->nameLength)) if (RRModeEqual(&mode->mode, modeInfo) &&
{ !memcmp(name, mode->name, modeInfo->nameLength)) {
++mode->refcnt; ++mode->refcnt;
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "RRModeGet: return existing mode [%s] ([%p]) refcnt [%d]\n", mode->name, mode, mode->refcnt); fprintf(stderr,
"RRModeGet: return existing mode [%s] ([%p]) refcnt [%d]\n",
mode->name, mode, mode->refcnt);
#endif #endif
return mode; return mode;
} }
...@@ -155,33 +163,31 @@ RRModeGet (xRRModeInfo *modeInfo, ...@@ -155,33 +163,31 @@ RRModeGet (xRRModeInfo *modeInfo,
#ifdef DEBUG #ifdef DEBUG
{ {
RRModePtr mode = RRModeCreate (modeInfo, name, NULL); RRModePtr mode = RRModeCreate(modeInfo, name, NULL);
fprintf(stderr, "RRModeGet: return new mode [%s] ([%p]) refcnt [%d]\n", mode->name, mode, mode->refcnt);
fprintf(stderr, "RRModeGet: return new mode [%s] ([%p]) refcnt [%d]\n",
mode->name, mode, mode->refcnt);
return mode; return mode;
} }
#else #else
return RRModeCreate (modeInfo, name, NULL); return RRModeCreate(modeInfo, name, NULL);
#endif #endif
} }
static RRModePtr static RRModePtr
RRModeCreateUser (ScreenPtr pScreen, RRModeCreateUser(ScreenPtr pScreen,
xRRModeInfo *modeInfo, xRRModeInfo * modeInfo, const char *name, int *error)
const char *name,
int *error)
{ {
RRModePtr mode; RRModePtr mode;
mode = RRModeFindByName (name, modeInfo->nameLength); mode = RRModeFindByName(name, modeInfo->nameLength);
if (mode) if (mode) {
{
*error = BadName; *error = BadName;
return NULL; return NULL;
} }
mode = RRModeCreate (modeInfo, name, pScreen); mode = RRModeCreate(modeInfo, name, pScreen);
if (!mode) if (!mode) {
{
*error = BadAlloc; *error = BadAlloc;
return NULL; return NULL;
} }
...@@ -190,30 +196,28 @@ RRModeCreateUser (ScreenPtr pScreen, ...@@ -190,30 +196,28 @@ RRModeCreateUser (ScreenPtr pScreen,
} }
RRModePtr * RRModePtr *
RRModesForScreen (ScreenPtr pScreen, int *num_ret) RRModesForScreen(ScreenPtr pScreen, int *num_ret)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
int o, c, m; int o, c, m;
RRModePtr *screen_modes; RRModePtr *screen_modes;
int num_screen_modes = 0; int num_screen_modes = 0;
screen_modes = xalloc ((num_modes ? num_modes : 1) * sizeof (RRModePtr)); screen_modes = xalloc((num_modes ? num_modes : 1) * sizeof(RRModePtr));
if (!screen_modes) if (!screen_modes)
return NULL; return NULL;
/* /*
* Add modes from all outputs * Add modes from all outputs
*/ */
for (o = 0; o < pScrPriv->numOutputs; o++) for (o = 0; o < pScrPriv->numOutputs; o++) {
{
RROutputPtr output = pScrPriv->outputs[o]; RROutputPtr output = pScrPriv->outputs[o];
int n; int n;
for (m = 0; m < output->numModes + output->numUserModes; m++) for (m = 0; m < output->numModes + output->numUserModes; m++) {
{
RRModePtr mode = (m < output->numModes ? RRModePtr mode = (m < output->numModes ?
output->modes[m] : output->modes[m] :
output->userModes[m-output->numModes]); output->userModes[m - output->numModes]);
for (n = 0; n < num_screen_modes; n++) for (n = 0; n < num_screen_modes; n++)
if (screen_modes[n] == mode) if (screen_modes[n] == mode)
break; break;
...@@ -226,13 +230,13 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret) ...@@ -226,13 +230,13 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret)
* make sure all available and active modes * make sure all available and active modes
* are visible to the client * are visible to the client
*/ */
for (c = 0; c < pScrPriv->numCrtcs; c++) for (c = 0; c < pScrPriv->numCrtcs; c++) {
{
RRCrtcPtr crtc = pScrPriv->crtcs[c]; RRCrtcPtr crtc = pScrPriv->crtcs[c];
RRModePtr mode = crtc->mode; RRModePtr mode = crtc->mode;
int n; int n;
if (!mode) continue; if (!mode)
continue;
for (n = 0; n < num_screen_modes; n++) for (n = 0; n < num_screen_modes; n++)
if (screen_modes[n] == mode) if (screen_modes[n] == mode)
break; break;
...@@ -242,8 +246,7 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret) ...@@ -242,8 +246,7 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret)
/* /*
* Add all user modes for this screen * Add all user modes for this screen
*/ */
for (m = 0; m < num_modes; m++) for (m = 0; m < num_modes; m++) {
{
RRModePtr mode = modes[m]; RRModePtr mode = modes[m];
int n; int n;
...@@ -261,26 +264,24 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret) ...@@ -261,26 +264,24 @@ RRModesForScreen (ScreenPtr pScreen, int *num_ret)
} }
void void
RRModeDestroy (RRModePtr mode) RRModeDestroy(RRModePtr mode)
{ {
int m; int m;
if (--mode->refcnt > 0) { if (--mode->refcnt > 0) {
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "RRModeDestroy: mode [%s] ([%p]) refcnt [%d -> %d]\n", mode->name, mode, mode->refcnt + 1, mode->refcnt); fprintf(stderr, "RRModeDestroy: mode [%s] ([%p]) refcnt [%d -> %d]\n",
mode->name, mode, mode->refcnt + 1, mode->refcnt);
#endif #endif
return; return;
} }
for (m = 0; m < num_modes; m++) for (m = 0; m < num_modes; m++) {
{ if (modes[m] == mode) {
if (modes[m] == mode) memmove(modes + m, modes + m + 1,
{ (num_modes - m - 1) * sizeof(RRModePtr));
memmove (modes + m, modes + m + 1,
(num_modes - m - 1) * sizeof (RRModePtr));
num_modes--; num_modes--;
if (!num_modes) if (!num_modes) {
{ xfree(modes);
xfree (modes);
modes = NULL; modes = NULL;
} }
break; break;
...@@ -288,35 +289,38 @@ RRModeDestroy (RRModePtr mode) ...@@ -288,35 +289,38 @@ RRModeDestroy (RRModePtr mode)
} }
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "RRModeDestroy: destroyed mode [%s] ([%p])\n", mode->name, mode); fprintf(stderr, "RRModeDestroy: destroyed mode [%s] ([%p])\n", mode->name,
mode);
#endif #endif
xfree (mode); xfree(mode);
} }
static int static int
RRModeDestroyResource (void * value, XID pid) RRModeDestroyResource(void *value, XID pid)
{ {
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "RRModeDestroyResource: mode [%s] ([%p]) refcnt [%d]\n", ((RRModePtr)value)->name, (RRModePtr)value, ((RRModePtr)value)->refcnt); fprintf(stderr, "RRModeDestroyResource: mode [%s] ([%p]) refcnt [%d]\n",
((RRModePtr) value)->name, (RRModePtr) value,
((RRModePtr) value)->refcnt);
#endif #endif
RRModeDestroy ((RRModePtr) value); RRModeDestroy((RRModePtr) value);
return 1; return 1;
} }
Bool Bool
RRModeInit (void) RRModeInit(void)
{ {
assert (num_modes == 0); assert(num_modes == 0);
assert (modes == NULL); assert(modes == NULL);
RRModeType = CreateNewResourceType (RRModeDestroyResource); RRModeType = CreateNewResourceType(RRModeDestroyResource);
if (!RRModeType) if (!RRModeType)
return FALSE; return FALSE;
RegisterResourceName (RRModeType, "MODE"); RegisterResourceName(RRModeType, "MODE");
return TRUE; return TRUE;
} }
int int
ProcRRCreateMode (ClientPtr client) ProcRRCreateMode(ClientPtr client)
{ {
REQUEST(xRRCreateModeReq); REQUEST(xRRCreateModeReq);
xRRCreateModeReply rep; xRRCreateModeReply rep;
...@@ -328,13 +332,13 @@ ProcRRCreateMode (ClientPtr client) ...@@ -328,13 +332,13 @@ ProcRRCreateMode (ClientPtr client)
int error, rc; int error, rc;
RRModePtr mode; RRModePtr mode;
REQUEST_AT_LEAST_SIZE (xRRCreateModeReq); REQUEST_AT_LEAST_SIZE(xRRCreateModeReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -342,13 +346,13 @@ ProcRRCreateMode (ClientPtr client) ...@@ -342,13 +346,13 @@ ProcRRCreateMode (ClientPtr client)
modeInfo = &stuff->modeInfo; modeInfo = &stuff->modeInfo;
name = (char *) (stuff + 1); name = (char *) (stuff + 1);
units_after = (stuff->length - (sizeof (xRRCreateModeReq) >> 2)); units_after = (stuff->length - (sizeof(xRRCreateModeReq) >> 2));
/* check to make sure requested name fits within the data provided */ /* check to make sure requested name fits within the data provided */
if ((int) (modeInfo->nameLength + 3) >> 2 > units_after) if ((int) (modeInfo->nameLength + 3) >> 2 > units_after)
return BadLength; return BadLength;
mode = RRModeCreateUser (pScreen, modeInfo, name, &error); mode = RRModeCreateUser(pScreen, modeInfo, name, &error);
if (!mode) if (!mode)
return error; return error;
...@@ -357,29 +361,28 @@ ProcRRCreateMode (ClientPtr client) ...@@ -357,29 +361,28 @@ ProcRRCreateMode (ClientPtr client)
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.length = 0; rep.length = 0;
rep.mode = mode->mode.id; rep.mode = mode->mode.id;
if (client->swapped) if (client->swapped) {
{
int n; int n;
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.mode, n); swapl(&rep.mode, n);
} }
WriteToClient(client, sizeof(xRRCreateModeReply), (char *)&rep); WriteToClient(client, sizeof(xRRCreateModeReply), (char *) &rep);
/* Drop out reference to this mode */ /* Drop out reference to this mode */
RRModeDestroy (mode); RRModeDestroy(mode);
return client->noClientException; return client->noClientException;
} }
int int
ProcRRDestroyMode (ClientPtr client) ProcRRDestroyMode(ClientPtr client)
{ {
REQUEST(xRRDestroyModeReq); REQUEST(xRRDestroyModeReq);
RRModePtr mode; RRModePtr mode;
REQUEST_SIZE_MATCH(xRRDestroyModeReq); REQUEST_SIZE_MATCH(xRRDestroyModeReq);
mode = LookupIDByType (stuff->mode, RRModeType); mode = LookupIDByType(stuff->mode, RRModeType);
if (!mode) if (!mode) {
{
client->errorValue = stuff->mode; client->errorValue = stuff->mode;
return RRErrorBase + BadRRMode; return RRErrorBase + BadRRMode;
} }
...@@ -387,12 +390,12 @@ ProcRRDestroyMode (ClientPtr client) ...@@ -387,12 +390,12 @@ ProcRRDestroyMode (ClientPtr client)
return BadMatch; return BadMatch;
if (mode->refcnt > 1) if (mode->refcnt > 1)
return BadAccess; return BadAccess;
FreeResource (stuff->mode, 0); FreeResource(stuff->mode, 0);
return Success; return Success;
} }
int int
ProcRRAddOutputMode (ClientPtr client) ProcRRAddOutputMode(ClientPtr client)
{ {
REQUEST(xRRAddOutputModeReq); REQUEST(xRRAddOutputModeReq);
RRModePtr mode; RRModePtr mode;
...@@ -401,24 +404,22 @@ ProcRRAddOutputMode (ClientPtr client) ...@@ -401,24 +404,22 @@ ProcRRAddOutputMode (ClientPtr client)
REQUEST_SIZE_MATCH(xRRAddOutputModeReq); REQUEST_SIZE_MATCH(xRRAddOutputModeReq);
output = LookupOutput(client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output) {
{
client->errorValue = stuff->output; client->errorValue = stuff->output;
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
} }
mode = LookupIDByType (stuff->mode, RRModeType); mode = LookupIDByType(stuff->mode, RRModeType);
if (!mode) if (!mode) {
{
client->errorValue = stuff->mode; client->errorValue = stuff->mode;
return RRErrorBase + BadRRMode; return RRErrorBase + BadRRMode;
} }
return RROutputAddUserMode (output, mode); return RROutputAddUserMode(output, mode);
} }
int int
ProcRRDeleteOutputMode (ClientPtr client) ProcRRDeleteOutputMode(ClientPtr client)
{ {
REQUEST(xRRDeleteOutputModeReq); REQUEST(xRRDeleteOutputModeReq);
RRModePtr mode; RRModePtr mode;
...@@ -427,18 +428,16 @@ ProcRRDeleteOutputMode (ClientPtr client) ...@@ -427,18 +428,16 @@ ProcRRDeleteOutputMode (ClientPtr client)
REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq); REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq);
output = LookupOutput(client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output) {
{
client->errorValue = stuff->output; client->errorValue = stuff->output;
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
} }
mode = LookupIDByType (stuff->mode, RRModeType); mode = LookupIDByType(stuff->mode, RRModeType);
if (!mode) if (!mode) {
{
client->errorValue = stuff->mode; client->errorValue = stuff->mode;
return RRErrorBase + BadRRMode; return RRErrorBase + BadRRMode;
} }
return RROutputDeleteUserMode (output, mode); return RROutputDeleteUserMode(output, mode);
} }
...@@ -29,14 +29,13 @@ RESTYPE RROutputType; ...@@ -29,14 +29,13 @@ RESTYPE RROutputType;
* Notify the output of some change * Notify the output of some change
*/ */
void void
RROutputChanged (RROutputPtr output, Bool configChanged) RROutputChanged(RROutputPtr output, Bool configChanged)
{ {
ScreenPtr pScreen = output->pScreen; ScreenPtr pScreen = output->pScreen;
output->changed = TRUE; output->changed = TRUE;
if (pScreen) if (pScreen) {
{ rrScrPriv(pScreen);
rrScrPriv (pScreen);
pScrPriv->changed = TRUE; pScrPriv->changed = TRUE;
if (configChanged) if (configChanged)
pScrPriv->configChanged = TRUE; pScrPriv->configChanged = TRUE;
...@@ -48,10 +47,8 @@ RROutputChanged (RROutputPtr output, Bool configChanged) ...@@ -48,10 +47,8 @@ RROutputChanged (RROutputPtr output, Bool configChanged)
*/ */
RROutputPtr RROutputPtr
RROutputCreate (ScreenPtr pScreen, RROutputCreate(ScreenPtr pScreen,
const char *name, const char *name, int nameLength, void *devPrivate)
int nameLength,
void *devPrivate)
{ {
RROutputPtr output; RROutputPtr output;
RROutputPtr *outputs; RROutputPtr *outputs;
...@@ -63,23 +60,23 @@ RROutputCreate (ScreenPtr pScreen, ...@@ -63,23 +60,23 @@ RROutputCreate (ScreenPtr pScreen,
pScrPriv = rrGetScrPriv(pScreen); pScrPriv = rrGetScrPriv(pScreen);
if (pScrPriv->numOutputs) if (pScrPriv->numOutputs)
outputs = xrealloc (pScrPriv->outputs, outputs = xrealloc(pScrPriv->outputs,
(pScrPriv->numOutputs + 1) * sizeof (RROutputPtr)); (pScrPriv->numOutputs + 1) * sizeof(RROutputPtr));
else else
outputs = xalloc (sizeof (RROutputPtr)); outputs = xalloc(sizeof(RROutputPtr));
if (!outputs) if (!outputs)
return FALSE; return FALSE;
pScrPriv->outputs = outputs; pScrPriv->outputs = outputs;
output = xalloc (sizeof (RROutputRec) + nameLength + 1); output = xalloc(sizeof(RROutputRec) + nameLength + 1);
if (!output) if (!output)
return NULL; return NULL;
output->id = FakeClientID (0); output->id = FakeClientID(0);
output->pScreen = pScreen; output->pScreen = pScreen;
output->name = (char *) (output + 1); output->name = (char *) (output + 1);
output->nameLength = nameLength; output->nameLength = nameLength;
memcpy (output->name, name, nameLength); memcpy(output->name, name, nameLength);
output->name[nameLength] = '\0'; output->name[nameLength] = '\0';
output->connection = RR_UnknownConnection; output->connection = RR_UnknownConnection;
output->subpixelOrder = SubPixelUnknown; output->subpixelOrder = SubPixelUnknown;
...@@ -100,7 +97,7 @@ RROutputCreate (ScreenPtr pScreen, ...@@ -100,7 +97,7 @@ RROutputCreate (ScreenPtr pScreen,
output->changed = FALSE; output->changed = FALSE;
output->devPrivate = devPrivate; output->devPrivate = devPrivate;
if (!AddResource (output->id, RROutputType, (void *) output)) if (!AddResource(output->id, RROutputType, (void *) output))
return NULL; return NULL;
pScrPriv->outputs[pScrPriv->numOutputs++] = output; pScrPriv->outputs[pScrPriv->numOutputs++] = output;
...@@ -111,94 +108,83 @@ RROutputCreate (ScreenPtr pScreen, ...@@ -111,94 +108,83 @@ RROutputCreate (ScreenPtr pScreen,
* Notify extension that output parameters have been changed * Notify extension that output parameters have been changed
*/ */
Bool Bool
RROutputSetClones (RROutputPtr output, RROutputSetClones(RROutputPtr output, RROutputPtr * clones, int numClones)
RROutputPtr *clones,
int numClones)
{ {
RROutputPtr *newClones; RROutputPtr *newClones;
int i; int i;
if (numClones == output->numClones) if (numClones == output->numClones) {
{
for (i = 0; i < numClones; i++) for (i = 0; i < numClones; i++)
if (output->clones[i] != clones[i]) if (output->clones[i] != clones[i])
break; break;
if (i == numClones) if (i == numClones)
return TRUE; return TRUE;
} }
if (numClones) if (numClones) {
{ newClones = xalloc(numClones * sizeof(RROutputPtr));
newClones = xalloc (numClones * sizeof (RROutputPtr));
if (!newClones) if (!newClones)
return FALSE; return FALSE;
} }
else else
newClones = NULL; newClones = NULL;
if (output->clones) if (output->clones)
xfree (output->clones); xfree(output->clones);
memcpy (newClones, clones, numClones * sizeof (RROutputPtr)); memcpy(newClones, clones, numClones * sizeof(RROutputPtr));
output->clones = newClones; output->clones = newClones;
output->numClones = numClones; output->numClones = numClones;
RROutputChanged (output, TRUE); RROutputChanged(output, TRUE);
return TRUE; return TRUE;
} }
Bool Bool
RROutputSetModes (RROutputPtr output, RROutputSetModes(RROutputPtr output,
RRModePtr *modes, RRModePtr * modes, int numModes, int numPreferred)
int numModes,
int numPreferred)
{ {
RRModePtr *newModes; RRModePtr *newModes;
int i; int i;
if (numModes == output->numModes && numPreferred == output->numPreferred) if (numModes == output->numModes && numPreferred == output->numPreferred) {
{
for (i = 0; i < numModes; i++) for (i = 0; i < numModes; i++)
if (output->modes[i] != modes[i]) if (output->modes[i] != modes[i])
break; break;
if (i == numModes) if (i == numModes) {
{
for (i = 0; i < numModes; i++) for (i = 0; i < numModes; i++)
RRModeDestroy (modes[i]); RRModeDestroy(modes[i]);
return TRUE; return TRUE;
} }
} }
if (numModes) if (numModes) {
{ newModes = xalloc(numModes * sizeof(RRModePtr));
newModes = xalloc (numModes * sizeof (RRModePtr));
if (!newModes) if (!newModes)
return FALSE; return FALSE;
} }
else else
newModes = NULL; newModes = NULL;
if (output->modes) if (output->modes) {
{
for (i = 0; i < output->numModes; i++) for (i = 0; i < output->numModes; i++)
RRModeDestroy (output->modes[i]); RRModeDestroy(output->modes[i]);
xfree (output->modes); xfree(output->modes);
} }
memcpy (newModes, modes, numModes * sizeof (RRModePtr)); memcpy(newModes, modes, numModes * sizeof(RRModePtr));
output->modes = newModes; output->modes = newModes;
output->numModes = numModes; output->numModes = numModes;
output->numPreferred = numPreferred; output->numPreferred = numPreferred;
RROutputChanged (output, TRUE); RROutputChanged(output, TRUE);
return TRUE; return TRUE;
} }
int int
RROutputAddUserMode (RROutputPtr output, RROutputAddUserMode(RROutputPtr output, RRModePtr mode)
RRModePtr mode)
{ {
int m; int m;
ScreenPtr pScreen = output->pScreen; ScreenPtr pScreen = output->pScreen;
rrScrPriv(pScreen); rrScrPriv(pScreen);
RRModePtr *newModes; RRModePtr *newModes;
/* Check to see if this mode is already listed for this output */ /* Check to see if this mode is already listed for this output */
for (m = 0; m < output->numModes + output->numUserModes; m++) for (m = 0; m < output->numModes + output->numUserModes; m++) {
{
RRModePtr e = (m < output->numModes ? RRModePtr e = (m < output->numModes ?
output->modes[m] : output->modes[m] :
output->userModes[m - output->numModes]); output->userModes[m - output->numModes]);
...@@ -208,34 +194,32 @@ RROutputAddUserMode (RROutputPtr output, ...@@ -208,34 +194,32 @@ RROutputAddUserMode (RROutputPtr output,
/* Check with the DDX to see if this mode is OK */ /* Check with the DDX to see if this mode is OK */
if (pScrPriv->rrOutputValidateMode) if (pScrPriv->rrOutputValidateMode)
if (!pScrPriv->rrOutputValidateMode (pScreen, output, mode)) if (!pScrPriv->rrOutputValidateMode(pScreen, output, mode))
return BadMatch; return BadMatch;
if (output->userModes) if (output->userModes)
newModes = xrealloc (output->userModes, newModes = xrealloc(output->userModes,
(output->numUserModes + 1) * sizeof (RRModePtr)); (output->numUserModes + 1) * sizeof(RRModePtr));
else else
newModes = xalloc (sizeof (RRModePtr)); newModes = xalloc(sizeof(RRModePtr));
if (!newModes) if (!newModes)
return BadAlloc; return BadAlloc;
output->userModes = newModes; output->userModes = newModes;
output->userModes[output->numUserModes++] = mode; output->userModes[output->numUserModes++] = mode;
++mode->refcnt; ++mode->refcnt;
RROutputChanged (output, TRUE); RROutputChanged(output, TRUE);
RRTellChanged (pScreen); RRTellChanged(pScreen);
return Success; return Success;
} }
int int
RROutputDeleteUserMode (RROutputPtr output, RROutputDeleteUserMode(RROutputPtr output, RRModePtr mode)
RRModePtr mode)
{ {
int m; int m;
/* Find this mode in the user mode list */ /* Find this mode in the user mode list */
for (m = 0; m < output->numUserModes; m++) for (m = 0; m < output->numUserModes; m++) {
{
RRModePtr e = output->userModes[m]; RRModePtr e = output->userModes[m];
if (mode == e) if (mode == e)
...@@ -249,88 +233,80 @@ RROutputDeleteUserMode (RROutputPtr output, ...@@ -249,88 +233,80 @@ RROutputDeleteUserMode (RROutputPtr output,
if (output->crtc && output->crtc->mode == mode) if (output->crtc && output->crtc->mode == mode)
return BadMatch; return BadMatch;
memmove (output->userModes + m, output->userModes + m + 1, memmove(output->userModes + m, output->userModes + m + 1,
(output->numUserModes - m - 1) * sizeof (RRModePtr)); (output->numUserModes - m - 1) * sizeof(RRModePtr));
output->numUserModes--; output->numUserModes--;
RRModeDestroy (mode); RRModeDestroy(mode);
return Success; return Success;
} }
Bool Bool
RROutputSetCrtcs (RROutputPtr output, RROutputSetCrtcs(RROutputPtr output, RRCrtcPtr * crtcs, int numCrtcs)
RRCrtcPtr *crtcs,
int numCrtcs)
{ {
RRCrtcPtr *newCrtcs; RRCrtcPtr *newCrtcs;
int i; int i;
if (numCrtcs == output->numCrtcs) if (numCrtcs == output->numCrtcs) {
{
for (i = 0; i < numCrtcs; i++) for (i = 0; i < numCrtcs; i++)
if (output->crtcs[i] != crtcs[i]) if (output->crtcs[i] != crtcs[i])
break; break;
if (i == numCrtcs) if (i == numCrtcs)
return TRUE; return TRUE;
} }
if (numCrtcs) if (numCrtcs) {
{ newCrtcs = xalloc(numCrtcs * sizeof(RRCrtcPtr));
newCrtcs = xalloc (numCrtcs * sizeof (RRCrtcPtr));
if (!newCrtcs) if (!newCrtcs)
return FALSE; return FALSE;
} }
else else
newCrtcs = NULL; newCrtcs = NULL;
if (output->crtcs) if (output->crtcs)
xfree (output->crtcs); xfree(output->crtcs);
memcpy (newCrtcs, crtcs, numCrtcs * sizeof (RRCrtcPtr)); memcpy(newCrtcs, crtcs, numCrtcs * sizeof(RRCrtcPtr));
output->crtcs = newCrtcs; output->crtcs = newCrtcs;
output->numCrtcs = numCrtcs; output->numCrtcs = numCrtcs;
RROutputChanged (output, TRUE); RROutputChanged(output, TRUE);
return TRUE; return TRUE;
} }
Bool Bool
RROutputSetConnection (RROutputPtr output, RROutputSetConnection(RROutputPtr output, CARD8 connection)
CARD8 connection)
{ {
if (output->connection == connection) if (output->connection == connection)
return TRUE; return TRUE;
output->connection = connection; output->connection = connection;
RROutputChanged (output, TRUE); RROutputChanged(output, TRUE);
return TRUE; return TRUE;
} }
Bool Bool
RROutputSetSubpixelOrder (RROutputPtr output, RROutputSetSubpixelOrder(RROutputPtr output, int subpixelOrder)
int subpixelOrder)
{ {
if (output->subpixelOrder == subpixelOrder) if (output->subpixelOrder == subpixelOrder)
return TRUE; return TRUE;
output->subpixelOrder = subpixelOrder; output->subpixelOrder = subpixelOrder;
RROutputChanged (output, FALSE); RROutputChanged(output, FALSE);
return TRUE; return TRUE;
} }
Bool Bool
RROutputSetPhysicalSize (RROutputPtr output, RROutputSetPhysicalSize(RROutputPtr output, int mmWidth, int mmHeight)
int mmWidth,
int mmHeight)
{ {
if (output->mmWidth == mmWidth && output->mmHeight == mmHeight) if (output->mmWidth == mmWidth && output->mmHeight == mmHeight)
return TRUE; return TRUE;
output->mmWidth = mmWidth; output->mmWidth = mmWidth;
output->mmHeight = mmHeight; output->mmHeight = mmHeight;
RROutputChanged (output, FALSE); RROutputChanged(output, FALSE);
return TRUE; return TRUE;
} }
void void
RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output) RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen; ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv (pScreen);
rrScrPriv(pScreen);
xRROutputChangeNotifyEvent oe; xRROutputChangeNotifyEvent oe;
RRCrtcPtr crtc = output->crtc; RRCrtcPtr crtc = output->crtc;
RRModePtr mode = crtc ? crtc->mode : 0; RRModePtr mode = crtc ? crtc->mode : 0;
...@@ -342,73 +318,67 @@ RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output) ...@@ -342,73 +318,67 @@ RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output)
oe.configTimestamp = pScrPriv->lastConfigTime.milliseconds; oe.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
oe.window = pWin->drawable.id; oe.window = pWin->drawable.id;
oe.output = output->id; oe.output = output->id;
if (crtc) if (crtc) {
{
oe.crtc = crtc->id; oe.crtc = crtc->id;
oe.mode = mode ? mode->mode.id : None; oe.mode = mode ? mode->mode.id : None;
oe.rotation = crtc->rotation; oe.rotation = crtc->rotation;
} }
else else {
{
oe.crtc = None; oe.crtc = None;
oe.mode = None; oe.mode = None;
oe.rotation = RR_Rotate_0; oe.rotation = RR_Rotate_0;
} }
oe.connection = output->connection; oe.connection = output->connection;
oe.subpixelOrder = output->subpixelOrder; oe.subpixelOrder = output->subpixelOrder;
WriteEventsToClient (client, 1, (xEvent *) &oe); WriteEventsToClient(client, 1, (xEvent *) &oe);
} }
/* /*
* Destroy a Output at shutdown * Destroy a Output at shutdown
*/ */
void void
RROutputDestroy (RROutputPtr output) RROutputDestroy(RROutputPtr output)
{ {
FreeResource (output->id, 0); FreeResource(output->id, 0);
} }
static int static int
RROutputDestroyResource (void * value, XID pid) RROutputDestroyResource(void *value, XID pid)
{ {
RROutputPtr output = (RROutputPtr) value; RROutputPtr output = (RROutputPtr) value;
ScreenPtr pScreen = output->pScreen; ScreenPtr pScreen = output->pScreen;
int m; int m;
if (pScreen) if (pScreen) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
int i; int i;
for (i = 0; i < pScrPriv->numOutputs; i++) for (i = 0; i < pScrPriv->numOutputs; i++) {
{ if (pScrPriv->outputs[i] == output) {
if (pScrPriv->outputs[i] == output) memmove(pScrPriv->outputs + i, pScrPriv->outputs + i + 1,
{ (pScrPriv->numOutputs - (i + 1)) * sizeof(RROutputPtr));
memmove (pScrPriv->outputs + i, pScrPriv->outputs + i + 1,
(pScrPriv->numOutputs - (i + 1)) * sizeof (RROutputPtr));
--pScrPriv->numOutputs; --pScrPriv->numOutputs;
break; break;
} }
} }
} }
if (output->modes) if (output->modes) {
{
for (m = 0; m < output->numModes; m++) for (m = 0; m < output->numModes; m++)
RRModeDestroy (output->modes[m]); RRModeDestroy(output->modes[m]);
xfree (output->modes); xfree(output->modes);
} }
for (m = 0; m < output->numUserModes; m++) for (m = 0; m < output->numUserModes; m++)
RRModeDestroy (output->userModes[m]); RRModeDestroy(output->userModes[m]);
if (output->userModes) if (output->userModes)
xfree (output->userModes); xfree(output->userModes);
if (output->crtcs) if (output->crtcs)
xfree (output->crtcs); xfree(output->crtcs);
if (output->clones) if (output->clones)
xfree (output->clones); xfree(output->clones);
RRDeleteAllOutputProperties (output); RRDeleteAllOutputProperties(output);
xfree (output); xfree(output);
return 1; return 1;
} }
...@@ -416,19 +386,19 @@ RROutputDestroyResource (void * value, XID pid) ...@@ -416,19 +386,19 @@ RROutputDestroyResource (void * value, XID pid)
* Initialize output type * Initialize output type
*/ */
Bool Bool
RROutputInit (void) RROutputInit(void)
{ {
RROutputType = CreateNewResourceType (RROutputDestroyResource); RROutputType = CreateNewResourceType(RROutputDestroyResource);
if (!RROutputType) if (!RROutputType)
return FALSE; return FALSE;
RegisterResourceName (RROutputType, "OUTPUT"); RegisterResourceName(RROutputType, "OUTPUT");
return TRUE; return TRUE;
} }
#define OutputInfoExtra (SIZEOF(xRRGetOutputInfoReply) - 32) #define OutputInfoExtra (SIZEOF(xRRGetOutputInfoReply) - 32)
int int
ProcRRGetOutputInfo (ClientPtr client) ProcRRGetOutputInfo(ClientPtr client)
{ {
REQUEST(xRRGetOutputInfoReq); REQUEST(xRRGetOutputInfoReq);
xRRGetOutputInfoReply rep; xRRGetOutputInfoReply rep;
...@@ -446,8 +416,7 @@ ProcRRGetOutputInfo (ClientPtr client) ...@@ -446,8 +416,7 @@ ProcRRGetOutputInfo (ClientPtr client)
REQUEST_SIZE_MATCH(xRRGetOutputInfoReq); REQUEST_SIZE_MATCH(xRRGetOutputInfoReq);
output = LookupOutput(client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output) {
{
client->errorValue = stuff->output; client->errorValue = stuff->output;
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
} }
...@@ -473,13 +442,11 @@ ProcRRGetOutputInfo (ClientPtr client) ...@@ -473,13 +442,11 @@ ProcRRGetOutputInfo (ClientPtr client)
extraLen = ((output->numCrtcs + extraLen = ((output->numCrtcs +
output->numModes + output->numUserModes + output->numModes + output->numUserModes +
output->numClones + output->numClones + ((rep.nameLength + 3) >> 2)) << 2);
((rep.nameLength + 3) >> 2)) << 2);
if (extraLen) if (extraLen) {
{
rep.length += extraLen >> 2; rep.length += extraLen >> 2;
extra = xalloc (extraLen); extra = xalloc(extraLen);
if (!extra) if (!extra)
return BadAlloc; return BadAlloc;
} }
...@@ -491,28 +458,25 @@ ProcRRGetOutputInfo (ClientPtr client) ...@@ -491,28 +458,25 @@ ProcRRGetOutputInfo (ClientPtr client)
clones = (RROutput *) (modes + output->numModes + output->numUserModes); clones = (RROutput *) (modes + output->numModes + output->numUserModes);
name = (char *) (clones + output->numClones); name = (char *) (clones + output->numClones);
for (i = 0; i < output->numCrtcs; i++) for (i = 0; i < output->numCrtcs; i++) {
{
crtcs[i] = output->crtcs[i]->id; crtcs[i] = output->crtcs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&crtcs[i], n); swapl(&crtcs[i], n);
} }
for (i = 0; i < output->numModes + output->numUserModes; i++) for (i = 0; i < output->numModes + output->numUserModes; i++) {
{
if (i < output->numModes) if (i < output->numModes)
modes[i] = output->modes[i]->mode.id; modes[i] = output->modes[i]->mode.id;
else else
modes[i] = output->userModes[i - output->numModes]->mode.id; modes[i] = output->userModes[i - output->numModes]->mode.id;
if (client->swapped) if (client->swapped)
swapl (&modes[i], n); swapl(&modes[i], n);
} }
for (i = 0; i < output->numClones; i++) for (i = 0; i < output->numClones; i++) {
{
clones[i] = output->clones[i]->id; clones[i] = output->clones[i]->id;
if (client->swapped) if (client->swapped)
swapl (&clones[i], n); swapl(&clones[i], n);
} }
memcpy (name, output->name, output->nameLength); memcpy(name, output->name, output->nameLength);
if (client->swapped) { if (client->swapped) {
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
...@@ -525,11 +489,10 @@ ProcRRGetOutputInfo (ClientPtr client) ...@@ -525,11 +489,10 @@ ProcRRGetOutputInfo (ClientPtr client)
swaps(&rep.nClones, n); swaps(&rep.nClones, n);
swaps(&rep.nameLength, n); swaps(&rep.nameLength, n);
} }
WriteToClient(client, sizeof(xRRGetOutputInfoReply), (char *)&rep); WriteToClient(client, sizeof(xRRGetOutputInfoReply), (char *) &rep);
if (extraLen) if (extraLen) {
{ WriteToClient(client, extraLen, (char *) extra);
WriteToClient (client, extraLen, (char *) extra); xfree(extra);
xfree (extra);
} }
return client->noClientException; return client->noClientException;
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
*/ */
static Bool static Bool
RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y) RRCrtcContainsPosition(RRCrtcPtr crtc, int x, int y)
{ {
RRModePtr mode = crtc->mode; RRModePtr mode = crtc->mode;
int scan_width, scan_height; int scan_width, scan_height;
...@@ -39,7 +39,7 @@ RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y) ...@@ -39,7 +39,7 @@ RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y)
if (!mode) if (!mode)
return FALSE; return FALSE;
RRCrtcGetScanoutSize (crtc, &scan_width, &scan_height); RRCrtcGetScanoutSize(crtc, &scan_width, &scan_height);
if (crtc->x <= x && x < crtc->x + scan_width && if (crtc->x <= x && x < crtc->x + scan_width &&
crtc->y <= y && y < crtc->y + scan_height) crtc->y <= y && y < crtc->y + scan_height)
...@@ -51,16 +51,15 @@ RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y) ...@@ -51,16 +51,15 @@ RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y)
* Find the CRTC nearest the specified position, ignoring 'skip' * Find the CRTC nearest the specified position, ignoring 'skip'
*/ */
static void static void
RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip) RRPointerToNearestCrtc(ScreenPtr pScreen, int x, int y, RRCrtcPtr skip)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
int c; int c;
RRCrtcPtr nearest = NULL; RRCrtcPtr nearest = NULL;
int best = 0; int best = 0;
int best_dx = 0, best_dy = 0; int best_dx = 0, best_dy = 0;
for (c = 0; c < pScrPriv->numCrtcs; c++) for (c = 0; c < pScrPriv->numCrtcs; c++) {
{
RRCrtcPtr crtc = pScrPriv->crtcs[c]; RRCrtcPtr crtc = pScrPriv->crtcs[c];
RRModePtr mode = crtc->mode; RRModePtr mode = crtc->mode;
int dx, dy; int dx, dy;
...@@ -72,7 +71,7 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip) ...@@ -72,7 +71,7 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip)
if (crtc == skip) if (crtc == skip)
continue; continue;
RRCrtcGetScanoutSize (crtc, &scan_width, &scan_height); RRCrtcGetScanoutSize(crtc, &scan_width, &scan_height);
if (x < crtc->x) if (x < crtc->x)
dx = crtc->x - x; dx = crtc->x - x;
...@@ -87,8 +86,7 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip) ...@@ -87,8 +86,7 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip)
else else
dy = 0; dy = 0;
dist = dx + dy; dist = dx + dy;
if (!nearest || dist < best) if (!nearest || dist < best) {
{
nearest = crtc; nearest = crtc;
best_dx = dx; best_dx = dx;
best_dy = dy; best_dy = dy;
...@@ -100,23 +98,21 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip) ...@@ -100,23 +98,21 @@ RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip)
} }
void void
RRPointerMoved (ScreenPtr pScreen, int x, int y) RRPointerMoved(ScreenPtr pScreen, int x, int y)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
RRCrtcPtr pointerCrtc = pScrPriv->pointerCrtc; RRCrtcPtr pointerCrtc = pScrPriv->pointerCrtc;
int c; int c;
/* Check last known CRTC */ /* Check last known CRTC */
if (pointerCrtc && RRCrtcContainsPosition (pointerCrtc, x, y)) if (pointerCrtc && RRCrtcContainsPosition(pointerCrtc, x, y))
return; return;
/* Check all CRTCs */ /* Check all CRTCs */
for (c = 0; c < pScrPriv->numCrtcs; c++) for (c = 0; c < pScrPriv->numCrtcs; c++) {
{
RRCrtcPtr crtc = pScrPriv->crtcs[c]; RRCrtcPtr crtc = pScrPriv->crtcs[c];
if (RRCrtcContainsPosition (crtc, x, y)) if (RRCrtcContainsPosition(crtc, x, y)) {
{
/* Remember containing CRTC */ /* Remember containing CRTC */
pScrPriv->pointerCrtc = crtc; pScrPriv->pointerCrtc = crtc;
return; return;
...@@ -124,7 +120,7 @@ RRPointerMoved (ScreenPtr pScreen, int x, int y) ...@@ -124,7 +120,7 @@ RRPointerMoved (ScreenPtr pScreen, int x, int y)
} }
/* None contain pointer, find nearest */ /* None contain pointer, find nearest */
RRPointerToNearestCrtc (pScreen, x, y, pointerCrtc); RRPointerToNearestCrtc(pScreen, x, y, pointerCrtc);
} }
/* /*
...@@ -132,14 +128,14 @@ RRPointerMoved (ScreenPtr pScreen, int x, int y) ...@@ -132,14 +128,14 @@ RRPointerMoved (ScreenPtr pScreen, int x, int y)
* CRTC * CRTC
*/ */
void void
RRPointerScreenConfigured (ScreenPtr pScreen) RRPointerScreenConfigured(ScreenPtr pScreen)
{ {
WindowPtr pRoot = GetCurrentRootWindow (); WindowPtr pRoot = GetCurrentRootWindow();
ScreenPtr pCurrentScreen = pRoot ? pRoot->drawable.pScreen : NULL; ScreenPtr pCurrentScreen = pRoot ? pRoot->drawable.pScreen : NULL;
int x, y; int x, y;
if (pScreen != pCurrentScreen) if (pScreen != pCurrentScreen)
return; return;
GetSpritePosition (&x, &y); GetSpritePosition(&x, &y);
RRPointerToNearestCrtc (pScreen, x, y, NULL); RRPointerToNearestCrtc(pScreen, x, y, NULL);
} }
...@@ -25,19 +25,18 @@ ...@@ -25,19 +25,18 @@
#include "swaprep.h" #include "swaprep.h"
static void static void
RRDeliverEvent (ScreenPtr pScreen, xEvent *event, CARD32 mask) RRDeliverEvent(ScreenPtr pScreen, xEvent *event, CARD32 mask)
{ {
} }
void void
RRDeleteAllOutputProperties (RROutputPtr output) RRDeleteAllOutputProperties(RROutputPtr output)
{ {
RRPropertyPtr prop, next; RRPropertyPtr prop, next;
xRROutputPropertyNotifyEvent event; xRROutputPropertyNotifyEvent event;
for (prop = output->properties; prop; prop = next) for (prop = output->properties; prop; prop = next) {
{
next = prop->next; next = prop->next;
event.type = RREventBase + RRNotify; event.type = RREventBase + RRNotify;
event.subCode = RRNotify_OutputProperty; event.subCode = RRNotify_OutputProperty;
...@@ -45,7 +44,8 @@ RRDeleteAllOutputProperties (RROutputPtr output) ...@@ -45,7 +44,8 @@ RRDeleteAllOutputProperties (RROutputPtr output)
event.state = PropertyDelete; event.state = PropertyDelete;
event.atom = prop->propertyName; event.atom = prop->propertyName;
event.timestamp = currentTime.milliseconds; event.timestamp = currentTime.milliseconds;
RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask); RRDeliverEvent(output->pScreen, (xEvent *) &event,
RROutputPropertyNotifyMask);
if (prop->current.data) if (prop->current.data)
xfree(prop->current.data); xfree(prop->current.data);
if (prop->pending.data) if (prop->pending.data)
...@@ -55,7 +55,7 @@ RRDeleteAllOutputProperties (RROutputPtr output) ...@@ -55,7 +55,7 @@ RRDeleteAllOutputProperties (RROutputPtr output)
} }
static void static void
RRInitOutputPropertyValue (RRPropertyValuePtr property_value) RRInitOutputPropertyValue(RRPropertyValuePtr property_value)
{ {
property_value->type = None; property_value->type = None;
property_value->format = 0; property_value->format = 0;
...@@ -64,11 +64,11 @@ RRInitOutputPropertyValue (RRPropertyValuePtr property_value) ...@@ -64,11 +64,11 @@ RRInitOutputPropertyValue (RRPropertyValuePtr property_value)
} }
static RRPropertyPtr static RRPropertyPtr
RRCreateOutputProperty (Atom property) RRCreateOutputProperty(Atom property)
{ {
RRPropertyPtr prop; RRPropertyPtr prop;
prop = (RRPropertyPtr)xalloc(sizeof(RRPropertyRec)); prop = (RRPropertyPtr) xalloc(sizeof(RRPropertyRec));
if (!prop) if (!prop)
return NULL; return NULL;
prop->next = NULL; prop->next = NULL;
...@@ -78,16 +78,16 @@ RRCreateOutputProperty (Atom property) ...@@ -78,16 +78,16 @@ RRCreateOutputProperty (Atom property)
prop->immutable = FALSE; prop->immutable = FALSE;
prop->num_valid = 0; prop->num_valid = 0;
prop->valid_values = NULL; prop->valid_values = NULL;
RRInitOutputPropertyValue (&prop->current); RRInitOutputPropertyValue(&prop->current);
RRInitOutputPropertyValue (&prop->pending); RRInitOutputPropertyValue(&prop->pending);
return prop; return prop;
} }
static void static void
RRDestroyOutputProperty (RRPropertyPtr prop) RRDestroyOutputProperty(RRPropertyPtr prop)
{ {
if (prop->valid_values) if (prop->valid_values)
xfree (prop->valid_values); xfree(prop->valid_values);
if (prop->current.data) if (prop->current.data)
xfree(prop->current.data); xfree(prop->current.data);
if (prop->pending.data) if (prop->pending.data)
...@@ -96,7 +96,7 @@ RRDestroyOutputProperty (RRPropertyPtr prop) ...@@ -96,7 +96,7 @@ RRDestroyOutputProperty (RRPropertyPtr prop)
} }
void void
RRDeleteOutputProperty (RROutputPtr output, Atom property) RRDeleteOutputProperty(RROutputPtr output, Atom property)
{ {
RRPropertyPtr prop, *prev; RRPropertyPtr prop, *prev;
xRROutputPropertyNotifyEvent event; xRROutputPropertyNotifyEvent event;
...@@ -104,8 +104,7 @@ RRDeleteOutputProperty (RROutputPtr output, Atom property) ...@@ -104,8 +104,7 @@ RRDeleteOutputProperty (RROutputPtr output, Atom property)
for (prev = &output->properties; (prop = *prev); prev = &(prop->next)) for (prev = &output->properties; (prop = *prev); prev = &(prop->next))
if (prop->propertyName == property) if (prop->propertyName == property)
break; break;
if (prop) if (prop) {
{
*prev = prop->next; *prev = prop->next;
event.type = RREventBase + RRNotify; event.type = RREventBase + RRNotify;
event.subCode = RRNotify_OutputProperty; event.subCode = RRNotify_OutputProperty;
...@@ -113,15 +112,16 @@ RRDeleteOutputProperty (RROutputPtr output, Atom property) ...@@ -113,15 +112,16 @@ RRDeleteOutputProperty (RROutputPtr output, Atom property)
event.state = PropertyDelete; event.state = PropertyDelete;
event.atom = prop->propertyName; event.atom = prop->propertyName;
event.timestamp = currentTime.milliseconds; event.timestamp = currentTime.milliseconds;
RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask); RRDeliverEvent(output->pScreen, (xEvent *) &event,
RRDestroyOutputProperty (prop); RROutputPropertyNotifyMask);
RRDestroyOutputProperty(prop);
} }
} }
int int
RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type, RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
int format, int mode, unsigned long len, int format, int mode, unsigned long len,
void * value, Bool sendevent, Bool pending) void *value, Bool sendevent, Bool pending)
{ {
RRPropertyPtr prop; RRPropertyPtr prop;
xRROutputPropertyNotifyEvent event; xRROutputPropertyNotifyEvent event;
...@@ -136,12 +136,11 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type, ...@@ -136,12 +136,11 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
size_in_bytes = format >> 3; size_in_bytes = format >> 3;
/* first see if property already exists */ /* first see if property already exists */
prop = RRQueryOutputProperty (output, property); prop = RRQueryOutputProperty(output, property);
if (!prop) /* just add to list */ if (!prop) { /* just add to list */
{ prop = RRCreateOutputProperty(property);
prop = RRCreateOutputProperty (property);
if (!prop) if (!prop)
return(BadAlloc); return (BadAlloc);
add = TRUE; add = TRUE;
mode = PropModeReplace; mode = PropModeReplace;
} }
...@@ -156,25 +155,23 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type, ...@@ -156,25 +155,23 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
"PropModeReplace" since they will be written over. */ "PropModeReplace" since they will be written over. */
if ((format != prop_value->format) && (mode != PropModeReplace)) if ((format != prop_value->format) && (mode != PropModeReplace))
return(BadMatch); return (BadMatch);
if ((prop_value->type != type) && (mode != PropModeReplace)) if ((prop_value->type != type) && (mode != PropModeReplace))
return(BadMatch); return (BadMatch);
new_value = *prop_value; new_value = *prop_value;
if (mode == PropModeReplace) if (mode == PropModeReplace)
total_len = len; total_len = len;
else else
total_len = prop_value->size + len; total_len = prop_value->size + len;
if (mode == PropModeReplace || len > 0) if (mode == PropModeReplace || len > 0) {
{
void *new_data = NULL, *old_data = NULL; void *new_data = NULL, *old_data = NULL;
total_size = total_len * size_in_bytes; total_size = total_len * size_in_bytes;
new_value.data = (void *)xalloc (total_size); new_value.data = (void *) xalloc(total_size);
if (!new_value.data && total_size) if (!new_value.data && total_size) {
{
if (add) if (add)
RRDestroyOutputProperty (prop); RRDestroyOutputProperty(prop);
return BadAlloc; return BadAlloc;
} }
new_value.size = len; new_value.size = len;
...@@ -198,31 +195,28 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type, ...@@ -198,31 +195,28 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
break; break;
} }
if (new_data) if (new_data)
memcpy ((char *) new_data, (char *) value, len * size_in_bytes); memcpy((char *) new_data, (char *) value, len * size_in_bytes);
if (old_data) if (old_data)
memcpy ((char *) old_data, (char *) prop_value->data, memcpy((char *) old_data, (char *) prop_value->data,
prop_value->size * size_in_bytes); prop_value->size * size_in_bytes);
if (pending && pScrPriv->rrOutputSetProperty && if (pending && pScrPriv->rrOutputSetProperty &&
!pScrPriv->rrOutputSetProperty(output->pScreen, output, !pScrPriv->rrOutputSetProperty(output->pScreen, output,
prop->propertyName, &new_value)) prop->propertyName, &new_value)) {
{
if (new_value.data) if (new_value.data)
xfree (new_value.data); xfree(new_value.data);
return (BadValue); return (BadValue);
} }
if (prop_value->data) if (prop_value->data)
xfree (prop_value->data); xfree(prop_value->data);
*prop_value = new_value; *prop_value = new_value;
} }
else if (len == 0) else if (len == 0) {
{
/* do nothing */ /* do nothing */
} }
if (add) if (add) {
{
prop->next = output->properties; prop->next = output->properties;
output->properties = prop; output->properties = prop;
} }
...@@ -230,21 +224,21 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type, ...@@ -230,21 +224,21 @@ RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
if (pending && prop->is_pending) if (pending && prop->is_pending)
output->pendingProperties = TRUE; output->pendingProperties = TRUE;
if (sendevent) if (sendevent) {
{
event.type = RREventBase + RRNotify; event.type = RREventBase + RRNotify;
event.subCode = RRNotify_OutputProperty; event.subCode = RRNotify_OutputProperty;
event.output = output->id; event.output = output->id;
event.state = PropertyNewValue; event.state = PropertyNewValue;
event.atom = prop->propertyName; event.atom = prop->propertyName;
event.timestamp = currentTime.milliseconds; event.timestamp = currentTime.milliseconds;
RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask); RRDeliverEvent(output->pScreen, (xEvent *) &event,
RROutputPropertyNotifyMask);
} }
return(Success); return (Success);
} }
Bool Bool
RRPostPendingProperties (RROutputPtr output) RRPostPendingProperties(RROutputPtr output)
{ {
RRPropertyValuePtr pending_value; RRPropertyValuePtr pending_value;
RRPropertyValuePtr current_value; RRPropertyValuePtr current_value;
...@@ -255,8 +249,7 @@ RRPostPendingProperties (RROutputPtr output) ...@@ -255,8 +249,7 @@ RRPostPendingProperties (RROutputPtr output)
return TRUE; return TRUE;
output->pendingProperties = FALSE; output->pendingProperties = FALSE;
for (property = output->properties; property; property = property->next) for (property = output->properties; property; property = property->next) {
{
/* Skip non-pending properties */ /* Skip non-pending properties */
if (!property->is_pending) if (!property->is_pending)
continue; continue;
...@@ -271,22 +264,21 @@ RRPostPendingProperties (RROutputPtr output) ...@@ -271,22 +264,21 @@ RRPostPendingProperties (RROutputPtr output)
if (pending_value->type == current_value->type && if (pending_value->type == current_value->type &&
pending_value->format == current_value->format && pending_value->format == current_value->format &&
pending_value->size == current_value->size && pending_value->size == current_value->size &&
!memcmp (pending_value->data, current_value->data, !memcmp(pending_value->data, current_value->data,
pending_value->size)) pending_value->size))
continue; continue;
if (RRChangeOutputProperty (output, property->propertyName, if (RRChangeOutputProperty(output, property->propertyName,
pending_value->type, pending_value->format, pending_value->type, pending_value->format,
PropModeReplace, pending_value->size, PropModeReplace, pending_value->size,
pending_value->data, TRUE, pending_value->data, TRUE, FALSE) != Success)
FALSE) != Success)
ret = FALSE; ret = FALSE;
} }
return ret; return ret;
} }
RRPropertyPtr RRPropertyPtr
RRQueryOutputProperty (RROutputPtr output, Atom property) RRQueryOutputProperty(RROutputPtr output, Atom property)
{ {
RRPropertyPtr prop; RRPropertyPtr prop;
...@@ -297,9 +289,9 @@ RRQueryOutputProperty (RROutputPtr output, Atom property) ...@@ -297,9 +289,9 @@ RRQueryOutputProperty (RROutputPtr output, Atom property)
} }
RRPropertyValuePtr RRPropertyValuePtr
RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending) RRGetOutputProperty(RROutputPtr output, Atom property, Bool pending)
{ {
RRPropertyPtr prop = RRQueryOutputProperty (output, property); RRPropertyPtr prop = RRQueryOutputProperty(output, property);
if (!prop) if (!prop)
return NULL; return NULL;
...@@ -310,22 +302,22 @@ RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending) ...@@ -310,22 +302,22 @@ RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending)
} }
int int
RRConfigureOutputProperty (RROutputPtr output, Atom property, RRConfigureOutputProperty(RROutputPtr output, Atom property,
Bool pending, Bool range, Bool immutable, Bool pending, Bool range, Bool immutable,
int num_values, INT32 *values) int num_values, INT32 *values)
{ {
RRPropertyPtr prop = RRQueryOutputProperty (output, property); RRPropertyPtr prop = RRQueryOutputProperty(output, property);
Bool add = FALSE; Bool add = FALSE;
INT32 *new_values; INT32 *new_values;
if (!prop) {
prop = RRCreateOutputProperty(property);
if (!prop) if (!prop)
{ return (BadAlloc);
prop = RRCreateOutputProperty (property);
if (!prop)
return(BadAlloc);
add = TRUE; add = TRUE;
} else if (prop->immutable && !immutable) }
return(BadAccess); else if (prop->immutable && !immutable)
return (BadAccess);
/* /*
* ranges must have even number of values * ranges must have even number of values
...@@ -333,21 +325,20 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property, ...@@ -333,21 +325,20 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property,
if (range && (num_values & 1)) if (range && (num_values & 1))
return BadMatch; return BadMatch;
new_values = xalloc (num_values * sizeof (INT32)); new_values = xalloc(num_values * sizeof(INT32));
if (!new_values && num_values) if (!new_values && num_values)
return BadAlloc; return BadAlloc;
if (num_values) if (num_values)
memcpy (new_values, values, num_values * sizeof (INT32)); memcpy(new_values, values, num_values * sizeof(INT32));
/* /*
* Property moving from pending to non-pending * Property moving from pending to non-pending
* loses any pending values * loses any pending values
*/ */
if (prop->is_pending && !pending) if (prop->is_pending && !pending) {
{
if (prop->pending.data) if (prop->pending.data)
xfree (prop->pending.data); xfree(prop->pending.data);
RRInitOutputPropertyValue (&prop->pending); RRInitOutputPropertyValue(&prop->pending);
} }
prop->is_pending = pending; prop->is_pending = pending;
...@@ -355,7 +346,7 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property, ...@@ -355,7 +346,7 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property,
prop->immutable = immutable; prop->immutable = immutable;
prop->num_valid = num_values; prop->num_valid = num_values;
if (prop->valid_values) if (prop->valid_values)
xfree (prop->valid_values); xfree(prop->valid_values);
prop->valid_values = new_values; prop->valid_values = new_values;
if (add) { if (add) {
...@@ -367,7 +358,7 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property, ...@@ -367,7 +358,7 @@ RRConfigureOutputProperty (RROutputPtr output, Atom property,
} }
int int
ProcRRListOutputProperties (ClientPtr client) ProcRRListOutputProperties(ClientPtr client)
{ {
REQUEST(xRRListOutputPropertiesReq); REQUEST(xRRListOutputPropertiesReq);
Atom *pAtoms = NULL, *temppAtoms; Atom *pAtoms = NULL, *temppAtoms;
...@@ -378,7 +369,7 @@ ProcRRListOutputProperties (ClientPtr client) ...@@ -378,7 +369,7 @@ ProcRRListOutputProperties (ClientPtr client)
REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq); REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq);
output = LookupOutput (client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
...@@ -386,36 +377,35 @@ ProcRRListOutputProperties (ClientPtr client) ...@@ -386,36 +377,35 @@ ProcRRListOutputProperties (ClientPtr client)
for (prop = output->properties; prop; prop = prop->next) for (prop = output->properties; prop; prop = prop->next)
numProps++; numProps++;
if (numProps) if (numProps)
if(!(pAtoms = (Atom *)xalloc(numProps * sizeof(Atom)))) if (!(pAtoms = (Atom *) xalloc(numProps * sizeof(Atom))))
return(BadAlloc); return (BadAlloc);
rep.type = X_Reply; rep.type = X_Reply;
rep.length = (numProps * sizeof(Atom)) >> 2; rep.length = (numProps * sizeof(Atom)) >> 2;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.nAtoms = numProps; rep.nAtoms = numProps;
if (client->swapped) if (client->swapped) {
{
int n; int n;
swaps (&rep.sequenceNumber, n);
swapl (&rep.length, n); swaps(&rep.sequenceNumber, n);
swaps (&rep.nAtoms, n); swapl(&rep.length, n);
swaps(&rep.nAtoms, n);
} }
temppAtoms = pAtoms; temppAtoms = pAtoms;
for (prop = output->properties; prop; prop = prop->next) for (prop = output->properties; prop; prop = prop->next)
*temppAtoms++ = prop->propertyName; *temppAtoms++ = prop->propertyName;
WriteToClient(client, sizeof(xRRListOutputPropertiesReply), (char*)&rep); WriteToClient(client, sizeof(xRRListOutputPropertiesReply), (char *) &rep);
if (numProps) if (numProps) {
{ client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write;
WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms); WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms);
xfree(pAtoms); xfree(pAtoms);
} }
return(client->noClientException); return (client->noClientException);
} }
int int
ProcRRQueryOutputProperty (ClientPtr client) ProcRRQueryOutputProperty(ClientPtr client)
{ {
REQUEST(xRRQueryOutputPropertyReq); REQUEST(xRRQueryOutputPropertyReq);
xRRQueryOutputPropertyReply rep; xRRQueryOutputPropertyReply rep;
...@@ -425,12 +415,12 @@ ProcRRQueryOutputProperty (ClientPtr client) ...@@ -425,12 +415,12 @@ ProcRRQueryOutputProperty (ClientPtr client)
REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq); REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
output = LookupOutput (client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
prop = RRQueryOutputProperty (output, stuff->property); prop = RRQueryOutputProperty(output, stuff->property);
if (!prop) if (!prop)
return BadName; return BadName;
...@@ -445,26 +435,25 @@ ProcRRQueryOutputProperty (ClientPtr client) ...@@ -445,26 +435,25 @@ ProcRRQueryOutputProperty (ClientPtr client)
rep.pending = prop->is_pending; rep.pending = prop->is_pending;
rep.range = prop->range; rep.range = prop->range;
rep.immutable = prop->immutable; rep.immutable = prop->immutable;
if (client->swapped) if (client->swapped) {
{
int n; int n;
swaps (&rep.sequenceNumber, n);
swapl (&rep.length, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
} }
WriteToClient (client, sizeof (xRRQueryOutputPropertyReply), (char*)&rep); WriteToClient(client, sizeof(xRRQueryOutputPropertyReply), (char *) &rep);
if (prop->num_valid) if (prop->num_valid) {
{
memcpy(extra, prop->valid_values, prop->num_valid * sizeof(INT32)); memcpy(extra, prop->valid_values, prop->num_valid * sizeof(INT32));
client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write; client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
WriteSwappedDataToClient(client, prop->num_valid * sizeof(INT32), WriteSwappedDataToClient(client, prop->num_valid * sizeof(INT32),
extra); extra);
xfree(extra); xfree(extra);
} }
return(client->noClientException); return (client->noClientException);
} }
int int
ProcRRConfigureOutputProperty (ClientPtr client) ProcRRConfigureOutputProperty(ClientPtr client)
{ {
REQUEST(xRRConfigureOutputPropertyReq); REQUEST(xRRConfigureOutputPropertyReq);
RROutputPtr output; RROutputPtr output;
...@@ -472,20 +461,19 @@ ProcRRConfigureOutputProperty (ClientPtr client) ...@@ -472,20 +461,19 @@ ProcRRConfigureOutputProperty (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq); REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq);
output = LookupOutput (client, stuff->output, DixReadAccess); output = LookupOutput(client, stuff->output, DixReadAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
num_valid = stuff->length - (sizeof (xRRConfigureOutputPropertyReq) >> 2); num_valid = stuff->length - (sizeof(xRRConfigureOutputPropertyReq) >> 2);
return RRConfigureOutputProperty (output, stuff->property, return RRConfigureOutputProperty(output, stuff->property,
stuff->pending, stuff->range, stuff->pending, stuff->range,
FALSE, num_valid, FALSE, num_valid, (INT32 *) (stuff + 1));
(INT32 *) (stuff + 1));
} }
int int
ProcRRChangeOutputProperty (ClientPtr client) ProcRRChangeOutputProperty(ClientPtr client)
{ {
REQUEST(xRRChangeOutputPropertyReq); REQUEST(xRRChangeOutputPropertyReq);
RROutputPtr output; RROutputPtr output;
...@@ -500,41 +488,38 @@ ProcRRChangeOutputProperty (ClientPtr client) ...@@ -500,41 +488,38 @@ ProcRRChangeOutputProperty (ClientPtr client)
format = stuff->format; format = stuff->format;
mode = stuff->mode; mode = stuff->mode;
if ((mode != PropModeReplace) && (mode != PropModeAppend) && if ((mode != PropModeReplace) && (mode != PropModeAppend) &&
(mode != PropModePrepend)) (mode != PropModePrepend)) {
{
client->errorValue = mode; client->errorValue = mode;
return BadValue; return BadValue;
} }
if ((format != 8) && (format != 16) && (format != 32)) if ((format != 8) && (format != 16) && (format != 32)) {
{
client->errorValue = format; client->errorValue = format;
return BadValue; return BadValue;
} }
len = stuff->nUnits; len = stuff->nUnits;
if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2)) if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2))
return BadLength; return BadLength;
sizeInBytes = format>>3; sizeInBytes = format >> 3;
totalSize = len * sizeInBytes; totalSize = len * sizeInBytes;
REQUEST_FIXED_SIZE(xRRChangeOutputPropertyReq, totalSize); REQUEST_FIXED_SIZE(xRRChangeOutputPropertyReq, totalSize);
output = LookupOutput (client, stuff->output, DixWriteAccess); output = LookupOutput(client, stuff->output, DixWriteAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
if (!ValidAtom(stuff->property)) if (!ValidAtom(stuff->property)) {
{
client->errorValue = stuff->property; client->errorValue = stuff->property;
return(BadAtom); return (BadAtom);
} }
if (!ValidAtom(stuff->type)) if (!ValidAtom(stuff->type)) {
{
client->errorValue = stuff->type; client->errorValue = stuff->type;
return(BadAtom); return (BadAtom);
} }
err = RRChangeOutputProperty(output, stuff->property, err = RRChangeOutputProperty(output, stuff->property,
stuff->type, (int)format, stuff->type, (int) format,
(int)mode, len, (void *)&stuff[1], TRUE, TRUE); (int) mode, len, (void *) &stuff[1], TRUE,
TRUE);
if (err != Success) if (err != Success)
return err; return err;
else else
...@@ -542,30 +527,28 @@ ProcRRChangeOutputProperty (ClientPtr client) ...@@ -542,30 +527,28 @@ ProcRRChangeOutputProperty (ClientPtr client)
} }
int int
ProcRRDeleteOutputProperty (ClientPtr client) ProcRRDeleteOutputProperty(ClientPtr client)
{ {
REQUEST(xRRDeleteOutputPropertyReq); REQUEST(xRRDeleteOutputPropertyReq);
RROutputPtr output; RROutputPtr output;
REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq); REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
UpdateCurrentTime(); UpdateCurrentTime();
output = LookupOutput (client, stuff->output, DixWriteAccess); output = LookupOutput(client, stuff->output, DixWriteAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
if (!ValidAtom(stuff->property)) if (!ValidAtom(stuff->property)) {
{
client->errorValue = stuff->property; client->errorValue = stuff->property;
return (BadAtom); return (BadAtom);
} }
RRDeleteOutputProperty(output, stuff->property); RRDeleteOutputProperty(output, stuff->property);
return client->noClientException; return client->noClientException;
} }
int int
ProcRRGetOutputProperty (ClientPtr client) ProcRRGetOutputProperty(ClientPtr client)
{ {
REQUEST(xRRGetOutputPropertyReq); REQUEST(xRRGetOutputPropertyReq);
RRPropertyPtr prop, *prev; RRPropertyPtr prop, *prev;
...@@ -578,26 +561,22 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -578,26 +561,22 @@ ProcRRGetOutputProperty (ClientPtr client)
REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq); REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
if (stuff->delete) if (stuff->delete)
UpdateCurrentTime(); UpdateCurrentTime();
output = LookupOutput (client, stuff->output, output = LookupOutput(client, stuff->output,
stuff->delete ? DixWriteAccess : stuff->delete ? DixWriteAccess : DixReadAccess);
DixReadAccess);
if (!output) if (!output)
return RRErrorBase + BadRROutput; return RRErrorBase + BadRROutput;
if (!ValidAtom(stuff->property)) if (!ValidAtom(stuff->property)) {
{
client->errorValue = stuff->property; client->errorValue = stuff->property;
return(BadAtom); return (BadAtom);
} }
if ((stuff->delete != xTrue) && (stuff->delete != xFalse)) if ((stuff->delete != xTrue) && (stuff->delete != xFalse)) {
{
client->errorValue = stuff->delete; client->errorValue = stuff->delete;
return(BadValue); return (BadValue);
} }
if ((stuff->type != AnyPropertyType) && !ValidAtom(stuff->type)) if ((stuff->type != AnyPropertyType) && !ValidAtom(stuff->type)) {
{
client->errorValue = stuff->type; client->errorValue = stuff->type;
return(BadAtom); return (BadAtom);
} }
for (prev = &output->properties; (prop = *prev); prev = &prop->next) for (prev = &output->properties; (prop = *prev); prev = &prop->next)
...@@ -606,8 +585,7 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -606,8 +585,7 @@ ProcRRGetOutputProperty (ClientPtr client)
reply.type = X_Reply; reply.type = X_Reply;
reply.sequenceNumber = client->sequence; reply.sequenceNumber = client->sequence;
if (!prop) if (!prop) {
{
reply.nItems = 0; reply.nItems = 0;
reply.length = 0; reply.length = 0;
reply.bytesAfter = 0; reply.bytesAfter = 0;
...@@ -623,7 +601,7 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -623,7 +601,7 @@ ProcRRGetOutputProperty (ClientPtr client)
swapl(&reply.nItems, n); swapl(&reply.nItems, n);
} }
WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply); WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
return(client->noClientException); return (client->noClientException);
} }
if (prop->immutable && stuff->delete) if (prop->immutable && stuff->delete)
...@@ -637,10 +615,8 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -637,10 +615,8 @@ ProcRRGetOutputProperty (ClientPtr client)
/* If the request type and actual type don't match. Return the /* If the request type and actual type don't match. Return the
property information, but not the data. */ property information, but not the data. */
if (((stuff->type != prop_value->type) && if (((stuff->type != prop_value->type) && (stuff->type != AnyPropertyType))
(stuff->type != AnyPropertyType)) ) {
)
{
reply.bytesAfter = prop_value->size; reply.bytesAfter = prop_value->size;
reply.format = prop_value->format; reply.format = prop_value->format;
reply.length = 0; reply.length = 0;
...@@ -656,20 +632,19 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -656,20 +632,19 @@ ProcRRGetOutputProperty (ClientPtr client)
swapl(&reply.nItems, n); swapl(&reply.nItems, n);
} }
WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply); WriteToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
return(client->noClientException); return (client->noClientException);
} }
/* /*
* Return type, format, value to client * Return type, format, value to client
*/ */
n = (prop_value->format/8) * prop_value->size; /* size (bytes) of prop */ n = (prop_value->format / 8) * prop_value->size; /* size (bytes) of prop */
ind = stuff->longOffset << 2; ind = stuff->longOffset << 2;
/* If longOffset is invalid such that it causes "len" to /* If longOffset is invalid such that it causes "len" to
be negative, it's a value error. */ be negative, it's a value error. */
if (n < ind) if (n < ind) {
{
client->errorValue = stuff->longOffset; client->errorValue = stuff->longOffset;
return BadValue; return BadValue;
} }
...@@ -690,8 +665,7 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -690,8 +665,7 @@ ProcRRGetOutputProperty (ClientPtr client)
reply.nItems = 0; reply.nItems = 0;
reply.propertyType = prop_value->type; reply.propertyType = prop_value->type;
if (stuff->delete && (reply.bytesAfter == 0)) if (stuff->delete && (reply.bytesAfter == 0)) {
{
xRROutputPropertyNotifyEvent event; xRROutputPropertyNotifyEvent event;
event.type = RREventBase + RRNotify; event.type = RREventBase + RRNotify;
...@@ -700,7 +674,8 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -700,7 +674,8 @@ ProcRRGetOutputProperty (ClientPtr client)
event.state = PropertyDelete; event.state = PropertyDelete;
event.atom = prop->propertyName; event.atom = prop->propertyName;
event.timestamp = currentTime.milliseconds; event.timestamp = currentTime.milliseconds;
RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask); RRDeliverEvent(output->pScreen, (xEvent *) &event,
RROutputPropertyNotifyMask);
} }
if (client->swapped) { if (client->swapped) {
...@@ -713,24 +688,26 @@ ProcRRGetOutputProperty (ClientPtr client) ...@@ -713,24 +688,26 @@ ProcRRGetOutputProperty (ClientPtr client)
swapl(&reply.nItems, n); swapl(&reply.nItems, n);
} }
WriteToClient(client, sizeof(xGenericReply), &reply); WriteToClient(client, sizeof(xGenericReply), &reply);
if (len) if (len) {
{ memcpy(extra, (char *) prop_value->data + ind, len);
memcpy(extra, (char *)prop_value->data + ind, len);
switch (reply.format) { switch (reply.format) {
case 32: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write; break; case 32:
case 16: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write; break; client->pSwapReplyFunc = (ReplySwapPtr) CopySwap32Write;
default: client->pSwapReplyFunc = (ReplySwapPtr)WriteToClient; break; break;
case 16:
client->pSwapReplyFunc = (ReplySwapPtr) CopySwap16Write;
break;
default:
client->pSwapReplyFunc = (ReplySwapPtr) WriteToClient;
break;
} }
WriteSwappedDataToClient(client, len, WriteSwappedDataToClient(client, len, extra);
extra);
xfree(extra); xfree(extra);
} }
if (stuff->delete && (reply.bytesAfter == 0)) if (stuff->delete && (reply.bytesAfter == 0)) { /* delete the Property */
{ /* delete the Property */
*prev = prop->next; *prev = prop->next;
RRDestroyOutputProperty (prop); RRDestroyOutputProperty(prop);
} }
return(client->noClientException); return (client->noClientException);
} }
...@@ -41,17 +41,17 @@ ...@@ -41,17 +41,17 @@
extern char *ConnectionInfo; extern char *ConnectionInfo;
static int padlength[4] = {0, 3, 2, 1}; static int padlength[4] = { 0, 3, 2, 1 };
static CARD16 static CARD16
RR10CurrentSizeID (ScreenPtr pScreen); RR10CurrentSizeID(ScreenPtr pScreen);
/* /*
* Edit connection information block so that new clients * Edit connection information block so that new clients
* see the current screen size on connect * see the current screen size on connect
*/ */
static void static void
RREditConnectionInfo (ScreenPtr pScreen) RREditConnectionInfo(ScreenPtr pScreen)
{ {
xConnSetup *connSetup; xConnSetup *connSetup;
char *vendor; char *vendor;
...@@ -63,22 +63,19 @@ RREditConnectionInfo (ScreenPtr pScreen) ...@@ -63,22 +63,19 @@ RREditConnectionInfo (ScreenPtr pScreen)
int d; int d;
connSetup = (xConnSetup *) ConnectionInfo; connSetup = (xConnSetup *) ConnectionInfo;
vendor = (char *) connSetup + sizeof (xConnSetup); vendor = (char *) connSetup + sizeof(xConnSetup);
formats = (xPixmapFormat *) ((char *) vendor + formats = (xPixmapFormat *) ((char *) vendor +
connSetup->nbytesVendor + connSetup->nbytesVendor +
padlength[connSetup->nbytesVendor & 3]); padlength[connSetup->nbytesVendor & 3]);
root = (xWindowRoot *) ((char *) formats + root = (xWindowRoot *) ((char *) formats +
sizeof (xPixmapFormat) * screenInfo.numPixmapFormats); sizeof(xPixmapFormat) *
while (screen != pScreen->myNum) screenInfo.numPixmapFormats);
{ while (screen != pScreen->myNum) {
depth = (xDepth *) ((char *) root + depth = (xDepth *) ((char *) root + sizeof(xWindowRoot));
sizeof (xWindowRoot)); for (d = 0; d < root->nDepths; d++) {
for (d = 0; d < root->nDepths; d++) visual = (xVisualType *) ((char *) depth + sizeof(xDepth));
{
visual = (xVisualType *) ((char *) depth +
sizeof (xDepth));
depth = (xDepth *) ((char *) visual + depth = (xDepth *) ((char *) visual +
depth->nVisuals * sizeof (xVisualType)); depth->nVisuals * sizeof(xVisualType));
} }
root = (xWindowRoot *) ((char *) depth); root = (xWindowRoot *) ((char *) depth);
screen++; screen++;
...@@ -90,7 +87,7 @@ RREditConnectionInfo (ScreenPtr pScreen) ...@@ -90,7 +87,7 @@ RREditConnectionInfo (ScreenPtr pScreen)
} }
void void
RRSendConfigNotify (ScreenPtr pScreen) RRSendConfigNotify(ScreenPtr pScreen)
{ {
WindowPtr pWin = WindowTable[pScreen->myNum]; WindowPtr pWin = WindowTable[pScreen->myNum];
xEvent event; xEvent event;
...@@ -105,15 +102,15 @@ RRSendConfigNotify (ScreenPtr pScreen) ...@@ -105,15 +102,15 @@ RRSendConfigNotify (ScreenPtr pScreen)
event.u.configureNotify.width = pWin->drawable.width; event.u.configureNotify.width = pWin->drawable.width;
event.u.configureNotify.height = pWin->drawable.height; event.u.configureNotify.height = pWin->drawable.height;
event.u.configureNotify.borderWidth = wBorderWidth (pWin); event.u.configureNotify.borderWidth = wBorderWidth(pWin);
event.u.configureNotify.override = pWin->overrideRedirect; event.u.configureNotify.override = pWin->overrideRedirect;
DeliverEvents(pWin, &event, 1, NullWindow); DeliverEvents(pWin, &event, 1, NullWindow);
} }
void void
RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen) RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
{ {
rrScrPriv (pScreen); rrScrPriv(pScreen);
xRRScreenChangeNotifyEvent se; xRRScreenChangeNotifyEvent se;
RRCrtcPtr crtc = pScrPriv->numCrtcs ? pScrPriv->crtcs[0] : NULL; RRCrtcPtr crtc = pScrPriv->numCrtcs ? pScrPriv->crtcs[0] : NULL;
WindowPtr pRoot = WindowTable[pScreen->myNum]; WindowPtr pRoot = WindowTable[pScreen->myNum];
...@@ -126,27 +123,28 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen) ...@@ -126,27 +123,28 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
se.root = pRoot->drawable.id; se.root = pRoot->drawable.id;
se.window = pWin->drawable.id; se.window = pWin->drawable.id;
#ifdef RENDER #ifdef RENDER
se.subpixelOrder = PictureGetSubpixelOrder (pScreen); se.subpixelOrder = PictureGetSubpixelOrder(pScreen);
#else #else
se.subpixelOrder = SubPixelUnknown; se.subpixelOrder = SubPixelUnknown;
#endif #endif
se.sequenceNumber = client->sequence; se.sequenceNumber = client->sequence;
se.sizeID = RR10CurrentSizeID (pScreen); se.sizeID = RR10CurrentSizeID(pScreen);
if (se.rotation & (RR_Rotate_90 | RR_Rotate_270)) { if (se.rotation & (RR_Rotate_90 | RR_Rotate_270)) {
se.widthInPixels = pScreen->height; se.widthInPixels = pScreen->height;
se.heightInPixels = pScreen->width; se.heightInPixels = pScreen->width;
se.widthInMillimeters = pScreen->mmHeight; se.widthInMillimeters = pScreen->mmHeight;
se.heightInMillimeters = pScreen->mmWidth; se.heightInMillimeters = pScreen->mmWidth;
} else { }
else {
se.widthInPixels = pScreen->width; se.widthInPixels = pScreen->width;
se.heightInPixels = pScreen->height; se.heightInPixels = pScreen->height;
se.widthInMillimeters = pScreen->mmWidth; se.widthInMillimeters = pScreen->mmWidth;
se.heightInMillimeters = pScreen->mmHeight; se.heightInMillimeters = pScreen->mmHeight;
} }
WriteEventsToClient (client, 1, (xEvent *) &se); WriteEventsToClient(client, 1, (xEvent *) &se);
} }
/* /*
...@@ -155,7 +153,7 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen) ...@@ -155,7 +153,7 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
* the size of the screen * the size of the screen
*/ */
void void
RRScreenSizeNotify (ScreenPtr pScreen) RRScreenSizeNotify(ScreenPtr pScreen)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
/* /*
...@@ -175,40 +173,34 @@ RRScreenSizeNotify (ScreenPtr pScreen) ...@@ -175,40 +173,34 @@ RRScreenSizeNotify (ScreenPtr pScreen)
pScrPriv->changed = TRUE; pScrPriv->changed = TRUE;
/* pScrPriv->sizeChanged = TRUE; */ /* pScrPriv->sizeChanged = TRUE; */
RRTellChanged (pScreen); RRTellChanged(pScreen);
RRSendConfigNotify (pScreen); RRSendConfigNotify(pScreen);
RREditConnectionInfo (pScreen); RREditConnectionInfo(pScreen);
RRPointerScreenConfigured (pScreen); RRPointerScreenConfigured(pScreen);
/* /*
* Fix pointer bounds and location * Fix pointer bounds and location
*/ */
ScreenRestructured (pScreen); ScreenRestructured(pScreen);
} }
/* /*
* Request that the screen be resized * Request that the screen be resized
*/ */
Bool Bool
RRScreenSizeSet (ScreenPtr pScreen, RRScreenSizeSet(ScreenPtr pScreen,
CARD16 width, CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight)
CARD16 height,
CARD32 mmWidth,
CARD32 mmHeight)
{ {
rrScrPriv(pScreen); rrScrPriv(pScreen);
#if RANDR_12_INTERFACE #if RANDR_12_INTERFACE
if (pScrPriv->rrScreenSetSize) if (pScrPriv->rrScreenSetSize) {
{
return (*pScrPriv->rrScreenSetSize) (pScreen, return (*pScrPriv->rrScreenSetSize) (pScreen,
width, height, width, height, mmWidth, mmHeight);
mmWidth, mmHeight);
} }
#endif #endif
#if RANDR_10_INTERFACE #if RANDR_10_INTERFACE
if (pScrPriv->rrSetConfig) if (pScrPriv->rrSetConfig) {
{
return TRUE; /* can't set size separately */ return TRUE; /* can't set size separately */
} }
#endif #endif
...@@ -219,7 +211,7 @@ RRScreenSizeSet (ScreenPtr pScreen, ...@@ -219,7 +211,7 @@ RRScreenSizeSet (ScreenPtr pScreen,
* Retrieve valid screen size range * Retrieve valid screen size range
*/ */
int int
ProcRRGetScreenSizeRange (ClientPtr client) ProcRRGetScreenSizeRange(ClientPtr client)
{ {
REQUEST(xRRGetScreenSizeRangeReq); REQUEST(xRRGetScreenSizeRangeReq);
xRRGetScreenSizeRangeReply rep; xRRGetScreenSizeRangeReply rep;
...@@ -229,12 +221,12 @@ ProcRRGetScreenSizeRange (ClientPtr client) ...@@ -229,12 +221,12 @@ ProcRRGetScreenSizeRange (ClientPtr client)
int rc; int rc;
REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -246,22 +238,19 @@ ProcRRGetScreenSizeRange (ClientPtr client) ...@@ -246,22 +238,19 @@ ProcRRGetScreenSizeRange (ClientPtr client)
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.length = 0; rep.length = 0;
if (pScrPriv) if (pScrPriv) {
{ if (!RRGetInfo(pScreen))
if (!RRGetInfo (pScreen))
return BadAlloc; return BadAlloc;
rep.minWidth = pScrPriv->minWidth; rep.minWidth = pScrPriv->minWidth;
rep.minHeight = pScrPriv->minHeight; rep.minHeight = pScrPriv->minHeight;
rep.maxWidth = pScrPriv->maxWidth; rep.maxWidth = pScrPriv->maxWidth;
rep.maxHeight = pScrPriv->maxHeight; rep.maxHeight = pScrPriv->maxHeight;
} }
else else {
{
rep.maxWidth = rep.minWidth = pScreen->width; rep.maxWidth = rep.minWidth = pScreen->width;
rep.maxHeight = rep.minHeight = pScreen->height; rep.maxHeight = rep.minHeight = pScreen->height;
} }
if (client->swapped) if (client->swapped) {
{
int n; int n;
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
...@@ -271,12 +260,12 @@ ProcRRGetScreenSizeRange (ClientPtr client) ...@@ -271,12 +260,12 @@ ProcRRGetScreenSizeRange (ClientPtr client)
swaps(&rep.maxWidth, n); swaps(&rep.maxWidth, n);
swaps(&rep.maxHeight, n); swaps(&rep.maxHeight, n);
} }
WriteToClient(client, sizeof(xRRGetScreenSizeRangeReply), (char *)&rep); WriteToClient(client, sizeof(xRRGetScreenSizeRangeReply), (char *) &rep);
return (client->noClientException); return (client->noClientException);
} }
int int
ProcRRSetScreenSize (ClientPtr client) ProcRRSetScreenSize(ClientPtr client)
{ {
REQUEST(xRRSetScreenSizeReq); REQUEST(xRRSetScreenSizeReq);
WindowPtr pWin; WindowPtr pWin;
...@@ -285,40 +274,36 @@ ProcRRSetScreenSize (ClientPtr client) ...@@ -285,40 +274,36 @@ ProcRRSetScreenSize (ClientPtr client)
int i, rc; int i, rc;
REQUEST_SIZE_MATCH(xRRSetScreenSizeReq); REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
pScreen = pWin->drawable.pScreen; pScreen = pWin->drawable.pScreen;
pScrPriv = rrGetScrPriv(pScreen); pScrPriv = rrGetScrPriv(pScreen);
if (stuff->width < pScrPriv->minWidth || pScrPriv->maxWidth < stuff->width) if (stuff->width < pScrPriv->minWidth || pScrPriv->maxWidth < stuff->width) {
{
client->errorValue = stuff->width; client->errorValue = stuff->width;
return BadValue; return BadValue;
} }
if (stuff->height < pScrPriv->minHeight || if (stuff->height < pScrPriv->minHeight ||
pScrPriv->maxHeight < stuff->height) pScrPriv->maxHeight < stuff->height) {
{
client->errorValue = stuff->height; client->errorValue = stuff->height;
return BadValue; return BadValue;
} }
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++) {
{
RRCrtcPtr crtc = pScrPriv->crtcs[i]; RRCrtcPtr crtc = pScrPriv->crtcs[i];
RRModePtr mode = crtc->mode; RRModePtr mode = crtc->mode;
if (mode)
{ if (mode) {
int source_width = mode->mode.width; int source_width = mode->mode.width;
int source_height = mode->mode.height; int source_height = mode->mode.height;
Rotation rotation = crtc->rotation; Rotation rotation = crtc->rotation;
if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270) if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270) {
{
source_width = mode->mode.height; source_width = mode->mode.height;
source_height = mode->mode.width; source_height = mode->mode.width;
} }
...@@ -328,23 +313,21 @@ ProcRRSetScreenSize (ClientPtr client) ...@@ -328,23 +313,21 @@ ProcRRSetScreenSize (ClientPtr client)
return BadMatch; return BadMatch;
} }
} }
if (stuff->widthInMillimeters == 0 || stuff->heightInMillimeters == 0) if (stuff->widthInMillimeters == 0 || stuff->heightInMillimeters == 0) {
{
client->errorValue = 0; client->errorValue = 0;
return BadValue; return BadValue;
} }
if (!RRScreenSizeSet (pScreen, if (!RRScreenSizeSet(pScreen,
stuff->width, stuff->height, stuff->width, stuff->height,
stuff->widthInMillimeters, stuff->widthInMillimeters,
stuff->heightInMillimeters)) stuff->heightInMillimeters)) {
{
return BadMatch; return BadMatch;
} }
return Success; return Success;
} }
int int
ProcRRGetScreenResources (ClientPtr client) ProcRRGetScreenResources(ClientPtr client)
{ {
REQUEST(xRRGetScreenResourcesReq); REQUEST(xRRGetScreenResourcesReq);
xRRGetScreenResourcesReply rep; xRRGetScreenResourcesReply rep;
...@@ -360,12 +343,12 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -360,12 +343,12 @@ ProcRRGetScreenResources (ClientPtr client)
CARD8 *names; CARD8 *names;
REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq); REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -374,11 +357,10 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -374,11 +357,10 @@ ProcRRGetScreenResources (ClientPtr client)
rep.pad = 0; rep.pad = 0;
if (pScrPriv) if (pScrPriv)
if (!RRGetInfo (pScreen)) if (!RRGetInfo(pScreen))
return BadAlloc; return BadAlloc;
if (!pScrPriv) if (!pScrPriv) {
{
rep.type = X_Reply; rep.type = X_Reply;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.length = 0; rep.length = 0;
...@@ -391,12 +373,11 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -391,12 +373,11 @@ ProcRRGetScreenResources (ClientPtr client)
extra = NULL; extra = NULL;
extraLen = 0; extraLen = 0;
} }
else else {
{
RRModePtr *modes; RRModePtr *modes;
int num_modes; int num_modes;
modes = RRModesForScreen (pScreen, &num_modes); modes = RRModesForScreen(pScreen, &num_modes);
if (!modes) if (!modes)
return BadAlloc; return BadAlloc;
...@@ -419,12 +400,10 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -419,12 +400,10 @@ ProcRRGetScreenResources (ClientPtr client)
((rep.nbytesNames + 3) >> 2)); ((rep.nbytesNames + 3) >> 2));
extraLen = rep.length << 2; extraLen = rep.length << 2;
if (extraLen) if (extraLen) {
{ extra = xalloc(extraLen);
extra = xalloc (extraLen); if (!extra) {
if (!extra) xfree(modes);
{
xfree (modes);
return BadAlloc; return BadAlloc;
} }
} }
...@@ -436,46 +415,42 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -436,46 +415,42 @@ ProcRRGetScreenResources (ClientPtr client)
modeinfos = (xRRModeInfo *) (outputs + pScrPriv->numOutputs); modeinfos = (xRRModeInfo *) (outputs + pScrPriv->numOutputs);
names = (CARD8 *) (modeinfos + num_modes); names = (CARD8 *) (modeinfos + num_modes);
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++) {
{
crtcs[i] = pScrPriv->crtcs[i]->id; crtcs[i] = pScrPriv->crtcs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&crtcs[i], n); swapl(&crtcs[i], n);
} }
for (i = 0; i < pScrPriv->numOutputs; i++) for (i = 0; i < pScrPriv->numOutputs; i++) {
{
outputs[i] = pScrPriv->outputs[i]->id; outputs[i] = pScrPriv->outputs[i]->id;
if (client->swapped) if (client->swapped)
swapl (&outputs[i], n); swapl(&outputs[i], n);
} }
for (i = 0; i < num_modes; i++) for (i = 0; i < num_modes; i++) {
{
RRModePtr mode = modes[i]; RRModePtr mode = modes[i];
modeinfos[i] = mode->mode; modeinfos[i] = mode->mode;
if (client->swapped) if (client->swapped) {
{ swapl(&modeinfos[i].id, n);
swapl (&modeinfos[i].id, n); swaps(&modeinfos[i].width, n);
swaps (&modeinfos[i].width, n); swaps(&modeinfos[i].height, n);
swaps (&modeinfos[i].height, n); swapl(&modeinfos[i].dotClock, n);
swapl (&modeinfos[i].dotClock, n); swaps(&modeinfos[i].hSyncStart, n);
swaps (&modeinfos[i].hSyncStart, n); swaps(&modeinfos[i].hSyncEnd, n);
swaps (&modeinfos[i].hSyncEnd, n); swaps(&modeinfos[i].hTotal, n);
swaps (&modeinfos[i].hTotal, n); swaps(&modeinfos[i].hSkew, n);
swaps (&modeinfos[i].hSkew, n); swaps(&modeinfos[i].vSyncStart, n);
swaps (&modeinfos[i].vSyncStart, n); swaps(&modeinfos[i].vSyncEnd, n);
swaps (&modeinfos[i].vSyncEnd, n); swaps(&modeinfos[i].vTotal, n);
swaps (&modeinfos[i].vTotal, n); swaps(&modeinfos[i].nameLength, n);
swaps (&modeinfos[i].nameLength, n); swapl(&modeinfos[i].modeFlags, n);
swapl (&modeinfos[i].modeFlags, n); }
} memcpy(names, mode->name, mode->mode.nameLength);
memcpy (names, mode->name,
mode->mode.nameLength);
names += mode->mode.nameLength; names += mode->mode.nameLength;
} }
xfree (modes); xfree(modes);
assert (((((char *) names - (char *) extra) + 3) >> 2) == rep.length); assert(((((char *) names - (char *) extra) + 3) >> 2) == rep.length);
} }
if (client->swapped) { if (client->swapped) {
...@@ -488,11 +463,10 @@ ProcRRGetScreenResources (ClientPtr client) ...@@ -488,11 +463,10 @@ ProcRRGetScreenResources (ClientPtr client)
swaps(&rep.nModes, n); swaps(&rep.nModes, n);
swaps(&rep.nbytesNames, n); swaps(&rep.nbytesNames, n);
} }
WriteToClient(client, sizeof(xRRGetScreenResourcesReply), (char *)&rep); WriteToClient(client, sizeof(xRRGetScreenResourcesReply), (char *) &rep);
if (extraLen) if (extraLen) {
{ WriteToClient(client, extraLen, (char *) extra);
WriteToClient (client, extraLen, (char *) extra); xfree(extra);
xfree (extra);
} }
return client->noClientException; return client->noClientException;
} }
...@@ -509,7 +483,7 @@ typedef struct _RR10Data { ...@@ -509,7 +483,7 @@ typedef struct _RR10Data {
* Convert 1.2 monitor data into 1.0 screen data * Convert 1.2 monitor data into 1.0 screen data
*/ */
static RR10DataPtr static RR10DataPtr
RR10GetData (ScreenPtr pScreen, RROutputPtr output) RR10GetData(ScreenPtr pScreen, RROutputPtr output)
{ {
RR10DataPtr data; RR10DataPtr data;
RRScreenSizePtr size; RRScreenSizePtr size;
...@@ -521,16 +495,15 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output) ...@@ -521,16 +495,15 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output)
Bool *used; Bool *used;
/* Make sure there is plenty of space for any combination */ /* Make sure there is plenty of space for any combination */
data = malloc (sizeof (RR10DataRec) + data = malloc(sizeof(RR10DataRec) +
sizeof (RRScreenSize) * nmode + sizeof(RRScreenSize) * nmode +
sizeof (RRScreenRate) * nmode + sizeof(RRScreenRate) * nmode + sizeof(Bool) * nmode);
sizeof (Bool) * nmode);
if (!data) if (!data)
return NULL; return NULL;
size = (RRScreenSizePtr) (data + 1); size = (RRScreenSizePtr) (data + 1);
refresh = (RRScreenRatePtr) (size + nmode); refresh = (RRScreenRatePtr) (size + nmode);
used = (Bool *) (refresh + nmode); used = (Bool *) (refresh + nmode);
memset (used, '\0', sizeof (Bool) * nmode); memset(used, '\0', sizeof(Bool) * nmode);
data->sizes = size; data->sizes = size;
data->nsize = 0; data->nsize = 0;
data->nrefresh = 0; data->nrefresh = 0;
...@@ -540,9 +513,9 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output) ...@@ -540,9 +513,9 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output)
/* /*
* find modes not yet listed * find modes not yet listed
*/ */
for (o = 0; o < output->numModes + output->numUserModes; o++) for (o = 0; o < output->numModes + output->numUserModes; o++) {
{ if (used[o])
if (used[o]) continue; continue;
if (o < output->numModes) if (o < output->numModes)
mode = output->modes[o]; mode = output->modes[o];
...@@ -556,7 +529,8 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output) ...@@ -556,7 +529,8 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output)
if (output->mmWidth && output->mmHeight) { if (output->mmWidth && output->mmHeight) {
size[l].mmWidth = output->mmWidth; size[l].mmWidth = output->mmWidth;
size[l].mmHeight = output->mmHeight; size[l].mmHeight = output->mmHeight;
} else { }
else {
size[l].mmWidth = pScreen->mmWidth; size[l].mmWidth = pScreen->mmWidth;
size[l].mmHeight = pScreen->mmHeight; size[l].mmHeight = pScreen->mmHeight;
} }
...@@ -567,30 +541,26 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output) ...@@ -567,30 +541,26 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output)
/* /*
* Find all modes with matching size * Find all modes with matching size
*/ */
for (os = o; os < output->numModes + output->numUserModes; os++) for (os = o; os < output->numModes + output->numUserModes; os++) {
{
if (os < output->numModes) if (os < output->numModes)
mode = output->modes[os]; mode = output->modes[os];
else else
mode = output->userModes[os - output->numModes]; mode = output->userModes[os - output->numModes];
if (mode->mode.width == size[l].width && if (mode->mode.width == size[l].width &&
mode->mode.height == size[l].height) mode->mode.height == size[l].height) {
{ vRefresh = RRVerticalRefresh(&mode->mode);
vRefresh = RRVerticalRefresh (&mode->mode);
used[os] = TRUE; used[os] = TRUE;
for (r = 0; r < size[l].nRates; r++) for (r = 0; r < size[l].nRates; r++)
if (vRefresh == size[l].pRates[r].rate) if (vRefresh == size[l].pRates[r].rate)
break; break;
if (r == size[l].nRates) if (r == size[l].nRates) {
{
size[l].pRates[r].rate = vRefresh; size[l].pRates[r].rate = vRefresh;
size[l].pRates[r].mode = mode; size[l].pRates[r].mode = mode;
size[l].nRates++; size[l].nRates++;
data->nrefresh++; data->nrefresh++;
} }
if (mode == output->crtc->mode) if (mode == output->crtc->mode) {
{
data->size = l; data->size = l;
data->refresh = vRefresh; data->refresh = vRefresh;
} }
...@@ -601,7 +571,7 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output) ...@@ -601,7 +571,7 @@ RR10GetData (ScreenPtr pScreen, RROutputPtr output)
} }
int int
ProcRRGetScreenInfo (ClientPtr client) ProcRRGetScreenInfo(ClientPtr client)
{ {
REQUEST(xRRGetScreenInfoReq); REQUEST(xRRGetScreenInfoReq);
xRRGetScreenInfoReply rep; xRRGetScreenInfoReply rep;
...@@ -614,12 +584,12 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -614,12 +584,12 @@ ProcRRGetScreenInfo (ClientPtr client)
RROutputPtr output; RROutputPtr output;
REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -628,13 +598,12 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -628,13 +598,12 @@ ProcRRGetScreenInfo (ClientPtr client)
rep.pad = 0; rep.pad = 0;
if (pScrPriv) if (pScrPriv)
if (!RRGetInfo (pScreen)) if (!RRGetInfo(pScreen))
return BadAlloc; return BadAlloc;
output = RRFirstOutput (pScreen); output = RRFirstOutput(pScreen);
if (!pScrPriv || !output) if (!pScrPriv || !output) {
{
rep.type = X_Reply; rep.type = X_Reply;
rep.setOfRotations = RR_Rotate_0;; rep.setOfRotations = RR_Rotate_0;;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
...@@ -650,17 +619,16 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -650,17 +619,16 @@ ProcRRGetScreenInfo (ClientPtr client)
extra = 0; extra = 0;
extraLen = 0; extraLen = 0;
} }
else else {
{
int i, j; int i, j;
xScreenSizes *size; xScreenSizes *size;
CARD16 *rates; CARD16 *rates;
CARD8 *data8; CARD8 *data8;
Bool has_rate = RRClientKnowsRates (client); Bool has_rate = RRClientKnowsRates(client);
RR10DataPtr pData; RR10DataPtr pData;
RRScreenSizePtr pSize; RRScreenSizePtr pSize;
pData = RR10GetData (pScreen, output); pData = RR10GetData(pScreen, output);
if (!pData) if (!pData)
return BadAlloc; return BadAlloc;
...@@ -677,16 +645,14 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -677,16 +645,14 @@ ProcRRGetScreenInfo (ClientPtr client)
rep.sizeID = pData->size; rep.sizeID = pData->size;
rep.rate = pData->refresh; rep.rate = pData->refresh;
extraLen = rep.nSizes * sizeof (xScreenSizes); extraLen = rep.nSizes * sizeof(xScreenSizes);
if (has_rate) if (has_rate)
extraLen += rep.nrateEnts * sizeof (CARD16); extraLen += rep.nrateEnts * sizeof(CARD16);
if (extraLen) if (extraLen) {
{ extra = (CARD8 *) xalloc(extraLen);
extra = (CARD8 *) xalloc (extraLen); if (!extra) {
if (!extra) xfree(pData);
{
xfree (pData);
return BadAlloc; return BadAlloc;
} }
} }
...@@ -698,47 +664,41 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -698,47 +664,41 @@ ProcRRGetScreenInfo (ClientPtr client)
*/ */
size = (xScreenSizes *) extra; size = (xScreenSizes *) extra;
rates = (CARD16 *) (size + rep.nSizes); rates = (CARD16 *) (size + rep.nSizes);
for (i = 0; i < pData->nsize; i++) for (i = 0; i < pData->nsize; i++) {
{
pSize = &pData->sizes[i]; pSize = &pData->sizes[i];
size->widthInPixels = pSize->width; size->widthInPixels = pSize->width;
size->heightInPixels = pSize->height; size->heightInPixels = pSize->height;
size->widthInMillimeters = pSize->mmWidth; size->widthInMillimeters = pSize->mmWidth;
size->heightInMillimeters = pSize->mmHeight; size->heightInMillimeters = pSize->mmHeight;
if (client->swapped) if (client->swapped) {
{ swaps(&size->widthInPixels, n);
swaps (&size->widthInPixels, n); swaps(&size->heightInPixels, n);
swaps (&size->heightInPixels, n); swaps(&size->widthInMillimeters, n);
swaps (&size->widthInMillimeters, n); swaps(&size->heightInMillimeters, n);
swaps (&size->heightInMillimeters, n);
} }
size++; size++;
if (has_rate) if (has_rate) {
{
*rates = pSize->nRates; *rates = pSize->nRates;
if (client->swapped) if (client->swapped) {
{ swaps(rates, n);
swaps (rates, n);
} }
rates++; rates++;
for (j = 0; j < pSize->nRates; j++) for (j = 0; j < pSize->nRates; j++) {
{
*rates = pSize->pRates[j].rate; *rates = pSize->pRates[j].rate;
if (client->swapped) if (client->swapped) {
{ swaps(rates, n);
swaps (rates, n);
} }
rates++; rates++;
} }
} }
} }
xfree (pData); xfree(pData);
data8 = (CARD8 *) rates; data8 = (CARD8 *) rates;
if (data8 - (CARD8 *) extra != extraLen) if (data8 - (CARD8 *) extra != extraLen)
FatalError ("RRGetScreenInfo bad extra len %ld != %ld\n", FatalError("RRGetScreenInfo bad extra len %ld != %ld\n",
(unsigned long)(data8 - (CARD8 *) extra), extraLen); (unsigned long) (data8 - (CARD8 *) extra), extraLen);
rep.length = (extraLen + 3) >> 2; rep.length = (extraLen + 3) >> 2;
} }
if (client->swapped) { if (client->swapped) {
...@@ -752,17 +712,16 @@ ProcRRGetScreenInfo (ClientPtr client) ...@@ -752,17 +712,16 @@ ProcRRGetScreenInfo (ClientPtr client)
swaps(&rep.rate, n); swaps(&rep.rate, n);
swaps(&rep.nrateEnts, n); swaps(&rep.nrateEnts, n);
} }
WriteToClient(client, sizeof(xRRGetScreenInfoReply), (char *)&rep); WriteToClient(client, sizeof(xRRGetScreenInfoReply), (char *) &rep);
if (extraLen) if (extraLen) {
{ WriteToClient(client, extraLen, (char *) extra);
WriteToClient (client, extraLen, (char *) extra); xfree(extra);
xfree (extra);
} }
return (client->noClientException); return (client->noClientException);
} }
int int
ProcRRSetScreenConfig (ClientPtr client) ProcRRSetScreenConfig(ClientPtr client)
{ {
REQUEST(xRRSetScreenConfigReq); REQUEST(xRRSetScreenConfigReq);
xRRSetScreenConfigReply rep; xRRSetScreenConfigReply rep;
...@@ -782,25 +741,24 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -782,25 +741,24 @@ ProcRRSetScreenConfig (ClientPtr client)
RRScreenSizePtr pSize; RRScreenSizePtr pSize;
int width, height; int width, height;
UpdateCurrentTime (); UpdateCurrentTime();
if (RRClientKnowsRates (client)) if (RRClientKnowsRates(client)) {
{ REQUEST_SIZE_MATCH(xRRSetScreenConfigReq);
REQUEST_SIZE_MATCH (xRRSetScreenConfigReq);
has_rate = TRUE; has_rate = TRUE;
} }
else else {
{ REQUEST_SIZE_MATCH(xRR1_0SetScreenConfigReq);
REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
has_rate = FALSE; has_rate = FALSE;
} }
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixWriteAccess); rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixWriteAccess);
#else #else
pDraw = SecurityLookupDrawable(stuff->drawable, client, SecurityWriteAccess); pDraw =
SecurityLookupDrawable(stuff->drawable, client, SecurityWriteAccess);
rc = pDraw ? Success : BadDrawable; rc = pDraw ? Success : BadDrawable;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -810,18 +768,16 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -810,18 +768,16 @@ ProcRRSetScreenConfig (ClientPtr client)
time = ClientTimeToServerTime(stuff->timestamp); time = ClientTimeToServerTime(stuff->timestamp);
if (!pScrPriv) if (!pScrPriv) {
{
time = currentTime; time = currentTime;
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
goto sendReply; goto sendReply;
} }
if (!RRGetInfo (pScreen)) if (!RRGetInfo(pScreen))
return BadAlloc; return BadAlloc;
output = RRFirstOutput (pScreen); output = RRFirstOutput(pScreen);
if (!output) if (!output) {
{
time = currentTime; time = currentTime;
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
goto sendReply; goto sendReply;
...@@ -838,23 +794,21 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -838,23 +794,21 @@ ProcRRSetScreenConfig (ClientPtr client)
* timestamp, so using CompareTimeStamps here would cause randr to suddenly * timestamp, so using CompareTimeStamps here would cause randr to suddenly
* stop working after several hours have passed (freedesktop bug #6502). * stop working after several hours have passed (freedesktop bug #6502).
*/ */
if (stuff->configTimestamp != pScrPriv->lastConfigTime.milliseconds) if (stuff->configTimestamp != pScrPriv->lastConfigTime.milliseconds) {
{
rep.status = RRSetConfigInvalidConfigTime; rep.status = RRSetConfigInvalidConfigTime;
goto sendReply; goto sendReply;
} }
pData = RR10GetData (pScreen, output); pData = RR10GetData(pScreen, output);
if (!pData) if (!pData)
return BadAlloc; return BadAlloc;
if (stuff->sizeID >= pData->nsize) if (stuff->sizeID >= pData->nsize) {
{
/* /*
* Invalid size ID * Invalid size ID
*/ */
client->errorValue = stuff->sizeID; client->errorValue = stuff->sizeID;
xfree (pData); xfree(pData);
return BadValue; return BadValue;
} }
pSize = &pData->sizes[stuff->sizeID]; pSize = &pData->sizes[stuff->sizeID];
...@@ -876,17 +830,16 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -876,17 +830,16 @@ ProcRRSetScreenConfig (ClientPtr client)
* Invalid rotation * Invalid rotation
*/ */
client->errorValue = stuff->rotation; client->errorValue = stuff->rotation;
xfree (pData); xfree(pData);
return BadValue; return BadValue;
} }
if ((~crtc->rotations) & rotation) if ((~crtc->rotations) & rotation) {
{
/* /*
* requested rotation or reflection not supported by screen * requested rotation or reflection not supported by screen
*/ */
client->errorValue = stuff->rotation; client->errorValue = stuff->rotation;
xfree (pData); xfree(pData);
return BadMatch; return BadMatch;
} }
...@@ -898,20 +851,17 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -898,20 +851,17 @@ ProcRRSetScreenConfig (ClientPtr client)
else else
rate = 0; rate = 0;
if (rate) if (rate) {
{ for (i = 0; i < pSize->nRates; i++) {
for (i = 0; i < pSize->nRates; i++)
{
if (pSize->pRates[i].rate == rate) if (pSize->pRates[i].rate == rate)
break; break;
} }
if (i == pSize->nRates) if (i == pSize->nRates) {
{
/* /*
* Invalid rate * Invalid rate
*/ */
client->errorValue = rate; client->errorValue = rate;
xfree (pData); xfree(pData);
return BadValue; return BadValue;
} }
mode = pSize->pRates[i].mode; mode = pSize->pRates[i].mode;
...@@ -923,8 +873,7 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -923,8 +873,7 @@ ProcRRSetScreenConfig (ClientPtr client)
* Make sure the requested set-time is not older than * Make sure the requested set-time is not older than
* the last set-time * the last set-time
*/ */
if (CompareTimeStamps (time, pScrPriv->lastSetTime) < 0) if (CompareTimeStamps(time, pScrPriv->lastSetTime) < 0) {
{
rep.status = RRSetConfigInvalidTime; rep.status = RRSetConfigInvalidTime;
goto sendReply; goto sendReply;
} }
...@@ -935,47 +884,42 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -935,47 +884,42 @@ ProcRRSetScreenConfig (ClientPtr client)
*/ */
width = mode->mode.width; width = mode->mode.width;
height = mode->mode.height; height = mode->mode.height;
if (rotation & (RR_Rotate_90|RR_Rotate_270)) if (rotation & (RR_Rotate_90 | RR_Rotate_270)) {
{
width = mode->mode.height; width = mode->mode.height;
height = mode->mode.width; height = mode->mode.width;
} }
if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) { if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) {
client->errorValue = width; client->errorValue = width;
xfree (pData); xfree(pData);
return BadValue; return BadValue;
} }
if (height < pScrPriv->minHeight || pScrPriv->maxHeight < height) { if (height < pScrPriv->minHeight || pScrPriv->maxHeight < height) {
client->errorValue = height; client->errorValue = height;
xfree (pData); xfree(pData);
return BadValue; return BadValue;
} }
if (width != pScreen->width || height != pScreen->height) if (width != pScreen->width || height != pScreen->height) {
{
int c; int c;
for (c = 0; c < pScrPriv->numCrtcs; c++) for (c = 0; c < pScrPriv->numCrtcs; c++) {
{ if (!RRCrtcSet(pScrPriv->crtcs[c], NULL, 0, 0, RR_Rotate_0,
if (!RRCrtcSet (pScrPriv->crtcs[c], NULL, 0, 0, RR_Rotate_0, 0, NULL)) {
0, NULL))
{
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
/* XXX recover from failure */ /* XXX recover from failure */
goto sendReply; goto sendReply;
} }
} }
if (!RRScreenSizeSet (pScreen, width, height, if (!RRScreenSizeSet(pScreen, width, height,
pScreen->mmWidth, pScreen->mmHeight)) pScreen->mmWidth, pScreen->mmHeight)) {
{
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
/* XXX recover from failure */ /* XXX recover from failure */
goto sendReply; goto sendReply;
} }
} }
if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output)) if (!RRCrtcSet(crtc, mode, 0, 0, stuff->rotation, 1, &output))
rep.status = RRSetConfigFailed; rep.status = RRSetConfigFailed;
else { else {
pScrPriv->lastSetTime = time; pScrPriv->lastSetTime = time;
...@@ -986,10 +930,10 @@ ProcRRSetScreenConfig (ClientPtr client) ...@@ -986,10 +930,10 @@ ProcRRSetScreenConfig (ClientPtr client)
* XXX Configure other crtcs to mirror as much as possible * XXX Configure other crtcs to mirror as much as possible
*/ */
sendReply: sendReply:
if (pData) if (pData)
xfree (pData); xfree(pData);
rep.type = X_Reply; rep.type = X_Reply;
/* rep.status has already been filled in */ /* rep.status has already been filled in */
...@@ -1000,39 +944,37 @@ sendReply: ...@@ -1000,39 +944,37 @@ sendReply:
rep.newConfigTimestamp = pScrPriv->lastConfigTime.milliseconds; rep.newConfigTimestamp = pScrPriv->lastConfigTime.milliseconds;
rep.root = WindowTable[pDraw->pScreen->myNum]->drawable.id; rep.root = WindowTable[pDraw->pScreen->myNum]->drawable.id;
if (client->swapped) if (client->swapped) {
{
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.newTimestamp, n); swapl(&rep.newTimestamp, n);
swapl(&rep.newConfigTimestamp, n); swapl(&rep.newConfigTimestamp, n);
swapl(&rep.root, n); swapl(&rep.root, n);
} }
WriteToClient(client, sizeof(xRRSetScreenConfigReply), (char *)&rep); WriteToClient(client, sizeof(xRRSetScreenConfigReply), (char *) &rep);
return (client->noClientException); return (client->noClientException);
} }
static CARD16 static CARD16
RR10CurrentSizeID (ScreenPtr pScreen) RR10CurrentSizeID(ScreenPtr pScreen)
{ {
CARD16 sizeID = 0xffff; CARD16 sizeID = 0xffff;
RROutputPtr output = RRFirstOutput (pScreen); RROutputPtr output = RRFirstOutput(pScreen);
if (output) if (output) {
{ RR10DataPtr data = RR10GetData(pScreen, output);
RR10DataPtr data = RR10GetData (pScreen, output);
if (data) if (data) {
{
int i; int i;
for (i = 0; i < data->nsize; i++) for (i = 0; i < data->nsize; i++)
if (data->sizes[i].width == pScreen->width && if (data->sizes[i].width == pScreen->width &&
data->sizes[i].height == pScreen->height) data->sizes[i].height == pScreen->height) {
{
sizeID = (CARD16) i; sizeID = (CARD16) i;
break; break;
} }
xfree (data); xfree(data);
} }
} }
return sizeID; return sizeID;
......
...@@ -23,9 +23,10 @@ ...@@ -23,9 +23,10 @@
#include "randrstr.h" #include "randrstr.h"
static int static int
SProcRRQueryVersion (ClientPtr client) SProcRRQueryVersion(ClientPtr client)
{ {
register int n; register int n;
REQUEST(xRRQueryVersionReq); REQUEST(xRRQueryVersionReq);
REQUEST_SIZE_MATCH(xRRQueryVersionReq); REQUEST_SIZE_MATCH(xRRQueryVersionReq);
...@@ -36,9 +37,10 @@ SProcRRQueryVersion (ClientPtr client) ...@@ -36,9 +37,10 @@ SProcRRQueryVersion (ClientPtr client)
} }
static int static int
SProcRRGetScreenInfo (ClientPtr client) SProcRRGetScreenInfo(ClientPtr client)
{ {
register int n; register int n;
REQUEST(xRRGetScreenInfoReq); REQUEST(xRRGetScreenInfoReq);
REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
...@@ -48,19 +50,18 @@ SProcRRGetScreenInfo (ClientPtr client) ...@@ -48,19 +50,18 @@ SProcRRGetScreenInfo (ClientPtr client)
} }
static int static int
SProcRRSetScreenConfig (ClientPtr client) SProcRRSetScreenConfig(ClientPtr client)
{ {
register int n; register int n;
REQUEST(xRRSetScreenConfigReq); REQUEST(xRRSetScreenConfigReq);
if (RRClientKnowsRates (client)) if (RRClientKnowsRates(client)) {
{ REQUEST_SIZE_MATCH(xRRSetScreenConfigReq);
REQUEST_SIZE_MATCH (xRRSetScreenConfigReq); swaps(&stuff->rate, n);
swaps (&stuff->rate, n);
} }
else else {
{ REQUEST_SIZE_MATCH(xRR1_0SetScreenConfigReq);
REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
} }
swaps(&stuff->length, n); swaps(&stuff->length, n);
...@@ -72,9 +73,10 @@ SProcRRSetScreenConfig (ClientPtr client) ...@@ -72,9 +73,10 @@ SProcRRSetScreenConfig (ClientPtr client)
} }
static int static int
SProcRRSelectInput (ClientPtr client) SProcRRSelectInput(ClientPtr client)
{ {
register int n; register int n;
REQUEST(xRRSelectInputReq); REQUEST(xRRSelectInputReq);
REQUEST_SIZE_MATCH(xRRSelectInputReq); REQUEST_SIZE_MATCH(xRRSelectInputReq);
...@@ -85,9 +87,10 @@ SProcRRSelectInput (ClientPtr client) ...@@ -85,9 +87,10 @@ SProcRRSelectInput (ClientPtr client)
} }
static int static int
SProcRRGetScreenSizeRange (ClientPtr client) SProcRRGetScreenSizeRange(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetScreenSizeRangeReq); REQUEST(xRRGetScreenSizeRangeReq);
REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq);
...@@ -97,9 +100,10 @@ SProcRRGetScreenSizeRange (ClientPtr client) ...@@ -97,9 +100,10 @@ SProcRRGetScreenSizeRange (ClientPtr client)
} }
static int static int
SProcRRSetScreenSize (ClientPtr client) SProcRRSetScreenSize(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRSetScreenSizeReq); REQUEST(xRRSetScreenSizeReq);
REQUEST_SIZE_MATCH(xRRSetScreenSizeReq); REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
...@@ -113,9 +117,10 @@ SProcRRSetScreenSize (ClientPtr client) ...@@ -113,9 +117,10 @@ SProcRRSetScreenSize (ClientPtr client)
} }
static int static int
SProcRRGetScreenResources (ClientPtr client) SProcRRGetScreenResources(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetScreenResourcesReq); REQUEST(xRRGetScreenResourcesReq);
REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq); REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
...@@ -125,9 +130,10 @@ SProcRRGetScreenResources (ClientPtr client) ...@@ -125,9 +130,10 @@ SProcRRGetScreenResources (ClientPtr client)
} }
static int static int
SProcRRGetOutputInfo (ClientPtr client) SProcRRGetOutputInfo(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetOutputInfoReq);; REQUEST(xRRGetOutputInfoReq);;
REQUEST_SIZE_MATCH(xRRGetOutputInfoReq); REQUEST_SIZE_MATCH(xRRGetOutputInfoReq);
...@@ -138,9 +144,10 @@ SProcRRGetOutputInfo (ClientPtr client) ...@@ -138,9 +144,10 @@ SProcRRGetOutputInfo (ClientPtr client)
} }
static int static int
SProcRRListOutputProperties (ClientPtr client) SProcRRListOutputProperties(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRListOutputPropertiesReq); REQUEST(xRRListOutputPropertiesReq);
REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq); REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq);
...@@ -150,9 +157,10 @@ SProcRRListOutputProperties (ClientPtr client) ...@@ -150,9 +157,10 @@ SProcRRListOutputProperties (ClientPtr client)
} }
static int static int
SProcRRQueryOutputProperty (ClientPtr client) SProcRRQueryOutputProperty(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRQueryOutputPropertyReq); REQUEST(xRRQueryOutputPropertyReq);
REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq); REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
...@@ -163,9 +171,10 @@ SProcRRQueryOutputProperty (ClientPtr client) ...@@ -163,9 +171,10 @@ SProcRRQueryOutputProperty (ClientPtr client)
} }
static int static int
SProcRRConfigureOutputProperty (ClientPtr client) SProcRRConfigureOutputProperty(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRConfigureOutputPropertyReq); REQUEST(xRRConfigureOutputPropertyReq);
swaps(&stuff->length, n); swaps(&stuff->length, n);
...@@ -176,18 +185,19 @@ SProcRRConfigureOutputProperty (ClientPtr client) ...@@ -176,18 +185,19 @@ SProcRRConfigureOutputProperty (ClientPtr client)
} }
static int static int
SProcRRChangeOutputProperty (ClientPtr client) SProcRRChangeOutputProperty(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRChangeOutputPropertyReq); REQUEST(xRRChangeOutputPropertyReq);
REQUEST_AT_LEAST_SIZE (xRRChangeOutputPropertyReq); REQUEST_AT_LEAST_SIZE(xRRChangeOutputPropertyReq);
swaps(&stuff->length, n); swaps(&stuff->length, n);
swapl(&stuff->output, n); swapl(&stuff->output, n);
swapl(&stuff->property, n); swapl(&stuff->property, n);
swapl(&stuff->type, n); swapl(&stuff->type, n);
swapl(&stuff->nUnits, n); swapl(&stuff->nUnits, n);
switch(stuff->format) { switch (stuff->format) {
case 8: case 8:
break; break;
case 16: case 16:
...@@ -204,9 +214,10 @@ SProcRRChangeOutputProperty (ClientPtr client) ...@@ -204,9 +214,10 @@ SProcRRChangeOutputProperty (ClientPtr client)
} }
static int static int
SProcRRDeleteOutputProperty (ClientPtr client) SProcRRDeleteOutputProperty(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRDeleteOutputPropertyReq); REQUEST(xRRDeleteOutputPropertyReq);
REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq); REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
...@@ -217,9 +228,10 @@ SProcRRDeleteOutputProperty (ClientPtr client) ...@@ -217,9 +228,10 @@ SProcRRDeleteOutputProperty (ClientPtr client)
} }
static int static int
SProcRRGetOutputProperty (ClientPtr client) SProcRRGetOutputProperty(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetOutputPropertyReq); REQUEST(xRRGetOutputPropertyReq);
REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq); REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
...@@ -233,10 +245,11 @@ SProcRRGetOutputProperty (ClientPtr client) ...@@ -233,10 +245,11 @@ SProcRRGetOutputProperty (ClientPtr client)
} }
static int static int
SProcRRCreateMode (ClientPtr client) SProcRRCreateMode(ClientPtr client)
{ {
int n; int n;
xRRModeInfo *modeinfo; xRRModeInfo *modeinfo;
REQUEST(xRRCreateModeReq); REQUEST(xRRCreateModeReq);
REQUEST_AT_LEAST_SIZE(xRRCreateModeReq); REQUEST_AT_LEAST_SIZE(xRRCreateModeReq);
...@@ -260,9 +273,10 @@ SProcRRCreateMode (ClientPtr client) ...@@ -260,9 +273,10 @@ SProcRRCreateMode (ClientPtr client)
} }
static int static int
SProcRRDestroyMode (ClientPtr client) SProcRRDestroyMode(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRDestroyModeReq); REQUEST(xRRDestroyModeReq);
REQUEST_SIZE_MATCH(xRRDestroyModeReq); REQUEST_SIZE_MATCH(xRRDestroyModeReq);
...@@ -272,9 +286,10 @@ SProcRRDestroyMode (ClientPtr client) ...@@ -272,9 +286,10 @@ SProcRRDestroyMode (ClientPtr client)
} }
static int static int
SProcRRAddOutputMode (ClientPtr client) SProcRRAddOutputMode(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRAddOutputModeReq); REQUEST(xRRAddOutputModeReq);
REQUEST_SIZE_MATCH(xRRAddOutputModeReq); REQUEST_SIZE_MATCH(xRRAddOutputModeReq);
...@@ -285,9 +300,10 @@ SProcRRAddOutputMode (ClientPtr client) ...@@ -285,9 +300,10 @@ SProcRRAddOutputMode (ClientPtr client)
} }
static int static int
SProcRRDeleteOutputMode (ClientPtr client) SProcRRDeleteOutputMode(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRDeleteOutputModeReq); REQUEST(xRRDeleteOutputModeReq);
REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq); REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq);
...@@ -298,9 +314,10 @@ SProcRRDeleteOutputMode (ClientPtr client) ...@@ -298,9 +314,10 @@ SProcRRDeleteOutputMode (ClientPtr client)
} }
static int static int
SProcRRGetCrtcInfo (ClientPtr client) SProcRRGetCrtcInfo(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetCrtcInfoReq); REQUEST(xRRGetCrtcInfoReq);
REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq);
...@@ -311,9 +328,10 @@ SProcRRGetCrtcInfo (ClientPtr client) ...@@ -311,9 +328,10 @@ SProcRRGetCrtcInfo (ClientPtr client)
} }
static int static int
SProcRRSetCrtcConfig (ClientPtr client) SProcRRSetCrtcConfig(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRSetCrtcConfigReq); REQUEST(xRRSetCrtcConfigReq);
REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq); REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq);
...@@ -330,9 +348,10 @@ SProcRRSetCrtcConfig (ClientPtr client) ...@@ -330,9 +348,10 @@ SProcRRSetCrtcConfig (ClientPtr client)
} }
static int static int
SProcRRGetCrtcGammaSize (ClientPtr client) SProcRRGetCrtcGammaSize(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetCrtcGammaSizeReq); REQUEST(xRRGetCrtcGammaSizeReq);
REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq); REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq);
...@@ -342,9 +361,10 @@ SProcRRGetCrtcGammaSize (ClientPtr client) ...@@ -342,9 +361,10 @@ SProcRRGetCrtcGammaSize (ClientPtr client)
} }
static int static int
SProcRRGetCrtcGamma (ClientPtr client) SProcRRGetCrtcGamma(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRGetCrtcGammaReq); REQUEST(xRRGetCrtcGammaReq);
REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq); REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq);
...@@ -354,9 +374,10 @@ SProcRRGetCrtcGamma (ClientPtr client) ...@@ -354,9 +374,10 @@ SProcRRGetCrtcGamma (ClientPtr client)
} }
static int static int
SProcRRSetCrtcGamma (ClientPtr client) SProcRRSetCrtcGamma(ClientPtr client)
{ {
int n; int n;
REQUEST(xRRSetCrtcGammaReq); REQUEST(xRRSetCrtcGammaReq);
REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq); REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq);
...@@ -367,7 +388,7 @@ SProcRRSetCrtcGamma (ClientPtr client) ...@@ -367,7 +388,7 @@ SProcRRSetCrtcGamma (ClientPtr client)
return (*ProcRandrVector[stuff->randrReqType]) (client); return (*ProcRandrVector[stuff->randrReqType]) (client);
} }
int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = { int (*SProcRandrVector[RRNumberRequests]) (ClientPtr) = {
SProcRRQueryVersion, /* 0 */ SProcRRQueryVersion, /* 0 */
/* we skip 1 to make old clients fail pretty immediately */ /* we skip 1 to make old clients fail pretty immediately */
NULL, /* 1 SProcRandrOldGetScreenInfo */ NULL, /* 1 SProcRandrOldGetScreenInfo */
...@@ -382,11 +403,11 @@ int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = { ...@@ -382,11 +403,11 @@ int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = {
SProcRRSetScreenSize, /* 7 */ SProcRRSetScreenSize, /* 7 */
SProcRRGetScreenResources, /* 8 */ SProcRRGetScreenResources, /* 8 */
SProcRRGetOutputInfo, /* 9 */ SProcRRGetOutputInfo, /* 9 */
SProcRRListOutputProperties,/* 10 */ SProcRRListOutputProperties, /* 10 */
SProcRRQueryOutputProperty, /* 11 */ SProcRRQueryOutputProperty, /* 11 */
SProcRRConfigureOutputProperty, /* 12 */ SProcRRConfigureOutputProperty, /* 12 */
SProcRRChangeOutputProperty,/* 13 */ SProcRRChangeOutputProperty, /* 13 */
SProcRRDeleteOutputProperty,/* 14 */ SProcRRDeleteOutputProperty, /* 14 */
SProcRRGetOutputProperty, /* 15 */ SProcRRGetOutputProperty, /* 15 */
SProcRRCreateMode, /* 16 */ SProcRRCreateMode, /* 16 */
SProcRRDestroyMode, /* 17 */ SProcRRDestroyMode, /* 17 */
...@@ -398,4 +419,3 @@ int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = { ...@@ -398,4 +419,3 @@ int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = {
SProcRRGetCrtcGamma, /* 23 */ SProcRRGetCrtcGamma, /* 23 */
SProcRRSetCrtcGamma, /* 24 */ SProcRRSetCrtcGamma, /* 24 */
}; };
...@@ -123,13 +123,13 @@ ProcRRXineramaQueryVersion(ClientPtr client) ...@@ -123,13 +123,13 @@ ProcRRXineramaQueryVersion(ClientPtr client)
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.majorVersion = RR_XINERAMA_MAJOR_VERSION; rep.majorVersion = RR_XINERAMA_MAJOR_VERSION;
rep.minorVersion = RR_XINERAMA_MINOR_VERSION; rep.minorVersion = RR_XINERAMA_MINOR_VERSION;
if(client->swapped) { if (client->swapped) {
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swaps(&rep.majorVersion, n); swaps(&rep.majorVersion, n);
swaps(&rep.minorVersion, n); swaps(&rep.minorVersion, n);
} }
WriteToClient(client, sizeof(xPanoramiXQueryVersionReply), (char *)&rep); WriteToClient(client, sizeof(xPanoramiXQueryVersionReply), (char *) &rep);
return (client->noClientException); return (client->noClientException);
} }
...@@ -145,19 +145,18 @@ ProcRRXineramaGetState(ClientPtr client) ...@@ -145,19 +145,18 @@ ProcRRXineramaGetState(ClientPtr client)
Bool active = FALSE; Bool active = FALSE;
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if(rc != Success) if (rc != Success)
return rc; return rc;
pScreen = pWin->drawable.pScreen; pScreen = pWin->drawable.pScreen;
pScrPriv = rrGetScrPriv(pScreen); pScrPriv = rrGetScrPriv(pScreen);
if (pScrPriv) if (pScrPriv) {
{
/* XXX do we need more than this? */ /* XXX do we need more than this? */
active = TRUE; active = TRUE;
} }
...@@ -167,41 +166,40 @@ ProcRRXineramaGetState(ClientPtr client) ...@@ -167,41 +166,40 @@ ProcRRXineramaGetState(ClientPtr client)
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.state = active; rep.state = active;
rep.window = stuff->window; rep.window = stuff->window;
if(client->swapped) { if (client->swapped) {
swaps (&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl (&rep.length, n); swapl(&rep.length, n);
swapl (&rep.window, n); swapl(&rep.window, n);
} }
WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep); WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *) &rep);
return client->noClientException; return client->noClientException;
} }
static Bool static Bool
RRXineramaCrtcActive (RRCrtcPtr crtc) RRXineramaCrtcActive(RRCrtcPtr crtc)
{ {
return crtc->mode != NULL && crtc->numOutputs > 0; return crtc->mode != NULL && crtc->numOutputs > 0;
} }
static int static int
RRXineramaScreenCount (ScreenPtr pScreen) RRXineramaScreenCount(ScreenPtr pScreen)
{ {
int i, n; int i, n;
n = 0; n = 0;
if (rrGetScrPriv (pScreen)) if (rrGetScrPriv(pScreen)) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
for (i = 0; i < pScrPriv->numCrtcs; i++) for (i = 0; i < pScrPriv->numCrtcs; i++)
if (RRXineramaCrtcActive (pScrPriv->crtcs[i])) if (RRXineramaCrtcActive(pScrPriv->crtcs[i]))
n++; n++;
} }
return n; return n;
} }
static Bool static Bool
RRXineramaScreenActive (ScreenPtr pScreen) RRXineramaScreenActive(ScreenPtr pScreen)
{ {
return RRXineramaScreenCount (pScreen) > 0; return RRXineramaScreenCount(pScreen) > 0;
} }
int int
...@@ -213,26 +211,26 @@ ProcRRXineramaGetScreenCount(ClientPtr client) ...@@ -213,26 +211,26 @@ ProcRRXineramaGetScreenCount(ClientPtr client)
register int n, rc; register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
rep.type = X_Reply; rep.type = X_Reply;
rep.length = 0; rep.length = 0;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.ScreenCount = RRXineramaScreenCount (pWin->drawable.pScreen); rep.ScreenCount = RRXineramaScreenCount(pWin->drawable.pScreen);
rep.window = stuff->window; rep.window = stuff->window;
if(client->swapped) { if (client->swapped) {
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.window, n); swapl(&rep.window, n);
} }
WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep); WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *) &rep);
return client->noClientException; return client->noClientException;
} }
...@@ -246,12 +244,12 @@ ProcRRXineramaGetScreenSize(ClientPtr client) ...@@ -246,12 +244,12 @@ ProcRRXineramaGetScreenSize(ClientPtr client)
register int n, rc; register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
#ifndef NXAGENT_SERVER #ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
#else #else
pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess); pWin = SecurityLookupWindow(stuff->window, client, SecurityReadAccess);
rc = pWin ? Success : BadWindow; rc = pWin ? Success : BadWindow;
#endif #endif
if (rc != Success) if (rc != Success)
return rc; return rc;
...@@ -265,7 +263,7 @@ ProcRRXineramaGetScreenSize(ClientPtr client) ...@@ -265,7 +263,7 @@ ProcRRXineramaGetScreenSize(ClientPtr client)
rep.height = pRoot->drawable.height; rep.height = pRoot->drawable.height;
rep.window = stuff->window; rep.window = stuff->window;
rep.screen = stuff->screen; rep.screen = stuff->screen;
if(client->swapped) { if (client->swapped) {
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.width, n); swapl(&rep.width, n);
...@@ -273,7 +271,7 @@ ProcRRXineramaGetScreenSize(ClientPtr client) ...@@ -273,7 +271,7 @@ ProcRRXineramaGetScreenSize(ClientPtr client)
swapl(&rep.window, n); swapl(&rep.window, n);
swapl(&rep.screen, n); swapl(&rep.screen, n);
} }
WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep); WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *) &rep);
return client->noClientException; return client->noClientException;
} }
...@@ -288,9 +286,10 @@ ProcRRXineramaIsActive(ClientPtr client) ...@@ -288,9 +286,10 @@ ProcRRXineramaIsActive(ClientPtr client)
rep.type = X_Reply; rep.type = X_Reply;
rep.length = 0; rep.length = 0;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.state = RRXineramaScreenActive (screenInfo.screens[RR_XINERAMA_SCREEN]); rep.state = RRXineramaScreenActive(screenInfo.screens[RR_XINERAMA_SCREEN]);
if(client->swapped) { if (client->swapped) {
register int n; register int n;
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.state, n); swapl(&rep.state, n);
...@@ -307,48 +306,50 @@ ProcRRXineramaQueryScreens(ClientPtr client) ...@@ -307,48 +306,50 @@ ProcRRXineramaQueryScreens(ClientPtr client)
REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
if (RRXineramaScreenActive (pScreen)) if (RRXineramaScreenActive(pScreen)) {
{
rrScrPriv(pScreen); rrScrPriv(pScreen);
if (pScrPriv->numCrtcs == 0 || pScrPriv->numOutputs == 0) if (pScrPriv->numCrtcs == 0 || pScrPriv->numOutputs == 0)
RRGetInfo (pScreen); RRGetInfo(pScreen);
} }
rep.type = X_Reply; rep.type = X_Reply;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.number = RRXineramaScreenCount (pScreen); rep.number = RRXineramaScreenCount(pScreen);
rep.length = rep.number * sz_XineramaScreenInfo >> 2; rep.length = rep.number * sz_XineramaScreenInfo >> 2;
if(client->swapped) { if (client->swapped) {
register int n; register int n;
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swapl(&rep.number, n); swapl(&rep.number, n);
} }
WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *)&rep); WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *) &rep);
if(rep.number) { if (rep.number) {
rrScrPriv(pScreen); rrScrPriv(pScreen);
xXineramaScreenInfo scratch; xXineramaScreenInfo scratch;
int i; int i;
for(i = 0; i < pScrPriv->numCrtcs; i++) { for (i = 0; i < pScrPriv->numCrtcs; i++) {
RRCrtcPtr crtc = pScrPriv->crtcs[i]; RRCrtcPtr crtc = pScrPriv->crtcs[i];
if (RRXineramaCrtcActive (crtc))
{ if (RRXineramaCrtcActive(crtc)) {
int width, height; int width, height;
RRCrtcGetScanoutSize (crtc, &width, &height);
RRCrtcGetScanoutSize(crtc, &width, &height);
scratch.x_org = crtc->x; scratch.x_org = crtc->x;
scratch.y_org = crtc->y; scratch.y_org = crtc->y;
scratch.width = width; scratch.width = width;
scratch.height = height; scratch.height = height;
if(client->swapped) { if (client->swapped) {
register int n; register int n;
swaps(&scratch.x_org, n); swaps(&scratch.x_org, n);
swaps(&scratch.y_org, n); swaps(&scratch.y_org, n);
swaps(&scratch.width, n); swaps(&scratch.width, n);
swaps(&scratch.height, n); swaps(&scratch.height, n);
} }
WriteToClient(client, sz_XineramaScreenInfo, (char *)&scratch); WriteToClient(client, sz_XineramaScreenInfo, (char *) &scratch);
} }
} }
} }
...@@ -380,12 +381,13 @@ ProcRRXineramaDispatch(ClientPtr client) ...@@ -380,12 +381,13 @@ ProcRRXineramaDispatch(ClientPtr client)
/* SProc */ /* SProc */
static int static int
SProcRRXineramaQueryVersion (ClientPtr client) SProcRRXineramaQueryVersion(ClientPtr client)
{ {
REQUEST(xPanoramiXQueryVersionReq); REQUEST(xPanoramiXQueryVersionReq);
register int n; register int n;
swaps(&stuff->length,n);
REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq); swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXQueryVersionReq);
return ProcRRXineramaQueryVersion(client); return ProcRRXineramaQueryVersion(client);
} }
...@@ -394,9 +396,10 @@ SProcRRXineramaGetState(ClientPtr client) ...@@ -394,9 +396,10 @@ SProcRRXineramaGetState(ClientPtr client)
{ {
REQUEST(xPanoramiXGetStateReq); REQUEST(xPanoramiXGetStateReq);
register int n; register int n;
swaps (&stuff->length, n);
swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
swapl (&stuff->window, n); swapl(&stuff->window, n);
return ProcRRXineramaGetState(client); return ProcRRXineramaGetState(client);
} }
...@@ -405,9 +408,10 @@ SProcRRXineramaGetScreenCount(ClientPtr client) ...@@ -405,9 +408,10 @@ SProcRRXineramaGetScreenCount(ClientPtr client)
{ {
REQUEST(xPanoramiXGetScreenCountReq); REQUEST(xPanoramiXGetScreenCountReq);
register int n; register int n;
swaps (&stuff->length, n);
swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
swapl (&stuff->window, n); swapl(&stuff->window, n);
return ProcRRXineramaGetScreenCount(client); return ProcRRXineramaGetScreenCount(client);
} }
...@@ -416,10 +420,11 @@ SProcRRXineramaGetScreenSize(ClientPtr client) ...@@ -416,10 +420,11 @@ SProcRRXineramaGetScreenSize(ClientPtr client)
{ {
REQUEST(xPanoramiXGetScreenSizeReq); REQUEST(xPanoramiXGetScreenSizeReq);
register int n; register int n;
swaps (&stuff->length, n);
swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
swapl (&stuff->window, n); swapl(&stuff->window, n);
swapl (&stuff->screen, n); swapl(&stuff->screen, n);
return ProcRRXineramaGetScreenSize(client); return ProcRRXineramaGetScreenSize(client);
} }
...@@ -428,7 +433,8 @@ SProcRRXineramaIsActive(ClientPtr client) ...@@ -428,7 +433,8 @@ SProcRRXineramaIsActive(ClientPtr client)
{ {
REQUEST(xXineramaIsActiveReq); REQUEST(xXineramaIsActiveReq);
register int n; register int n;
swaps (&stuff->length, n);
swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xXineramaIsActiveReq); REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
return ProcRRXineramaIsActive(client); return ProcRRXineramaIsActive(client);
} }
...@@ -438,7 +444,8 @@ SProcRRXineramaQueryScreens(ClientPtr client) ...@@ -438,7 +444,8 @@ SProcRRXineramaQueryScreens(ClientPtr client)
{ {
REQUEST(xXineramaQueryScreensReq); REQUEST(xXineramaQueryScreensReq);
register int n; register int n;
swaps (&stuff->length, n);
swaps(&stuff->length, n);
REQUEST_SIZE_MATCH(xXineramaQueryScreensReq); REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
return ProcRRXineramaQueryScreens(client); return ProcRRXineramaQueryScreens(client);
} }
...@@ -465,7 +472,7 @@ SProcRRXineramaDispatch(ClientPtr client) ...@@ -465,7 +472,7 @@ SProcRRXineramaDispatch(ClientPtr client)
} }
static void static void
RRXineramaResetProc(ExtensionEntry* extEntry) RRXineramaResetProc(ExtensionEntry * extEntry)
{ {
} }
...@@ -473,7 +480,7 @@ void ...@@ -473,7 +480,7 @@ void
RRXineramaExtensionInit(void) RRXineramaExtensionInit(void)
{ {
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if (!noPanoramiXExtension)
return; return;
#endif #endif
...@@ -485,9 +492,8 @@ RRXineramaExtensionInit(void) ...@@ -485,9 +492,8 @@ RRXineramaExtensionInit(void)
if (screenInfo.numScreens > 1) if (screenInfo.numScreens > 1)
return; return;
(void) AddExtension(PANORAMIX_PROTOCOL_NAME, 0,0, (void) AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0,
ProcRRXineramaDispatch, ProcRRXineramaDispatch,
SProcRRXineramaDispatch, SProcRRXineramaDispatch,
RRXineramaResetProc, RRXineramaResetProc, StandardMinorOpcode);
StandardMinorOpcode);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment