summaryrefslogtreecommitdiff
path: root/hw/xquartz/applewm.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xquartz/applewm.c')
-rw-r--r--hw/xquartz/applewm.c301
1 files changed, 135 insertions, 166 deletions
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index 55976c454..70fb60a18 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -64,38 +64,41 @@ static Atom func (void) { \
}
DEFINE_ATOM_HELPER(xa_native_screen_origin, "_NATIVE_SCREEN_ORIGIN")
-DEFINE_ATOM_HELPER (xa_apple_no_order_in, "_APPLE_NO_ORDER_IN")
+ DEFINE_ATOM_HELPER(xa_apple_no_order_in, "_APPLE_NO_ORDER_IN")
static AppleWMProcsPtr appleWMProcs;
static int WMErrorBase;
-
static unsigned char WMReqCode = 0;
static int WMEventBase = 0;
-static RESTYPE ClientType, EventType; /* resource types for event masks */
+static RESTYPE ClientType, EventType; /* resource types for event masks */
static XID eventResource;
/* Currently selected events */
static unsigned int eventMask = 0;
-static int WMFreeClient (pointer data, XID id);
-static int WMFreeEvents (pointer data, XID id);
-static void SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to);
+static int
+WMFreeClient(pointer data, XID id);
+static int
+WMFreeEvents(pointer data, XID id);
+static void
+SNotifyEvent(xAppleWMNotifyEvent * from, xAppleWMNotifyEvent * to);
typedef struct _WMEvent *WMEventPtr;
typedef struct _WMEvent {
- WMEventPtr next;
- ClientPtr client;
- XID clientResource;
- unsigned int mask;
+ WMEventPtr next;
+ ClientPtr client;
+ XID clientResource;
+ unsigned int mask;
} WMEventRec;
static inline BoxRec
-make_box (int x, int y, int w, int h)
+make_box(int x, int y, int w, int h)
{
BoxRec r;
+
r.x1 = x;
r.y1 = y;
r.x2 = x + w;
@@ -105,9 +108,7 @@ make_box (int x, int y, int w, int h)
/* Updates the _NATIVE_SCREEN_ORIGIN property on the given root window. */
void
-AppleWMSetScreenOrigin(
- WindowPtr pWin
-)
+AppleWMSetScreenOrigin(WindowPtr pWin)
{
int32_t data[2];
@@ -115,7 +116,7 @@ AppleWMSetScreenOrigin(
data[1] = pWin->drawable.pScreen->y + darwinMainScreenY;
dixChangeWindowProperty(serverClient, pWin, xa_native_screen_origin(),
- XA_INTEGER, 32, PropModeReplace, 2, data, TRUE);
+ XA_INTEGER, 32, PropModeReplace, 2, data, TRUE);
}
/* Window managers can set the _APPLE_NO_ORDER_IN property on windows
@@ -123,9 +124,7 @@ AppleWMSetScreenOrigin(
be mapped but remain ordered-out until the animation
completes (when the Dock will order them in). */
Bool
-AppleWMDoReorderWindow(
- WindowPtr pWin
-)
+AppleWMDoReorderWindow(WindowPtr pWin)
{
Atom atom;
PropertyPtr prop;
@@ -133,18 +132,15 @@ AppleWMDoReorderWindow(
atom = xa_apple_no_order_in();
rc = dixLookupProperty(&prop, pWin, atom, serverClient, DixReadAccess);
-
- if(Success == rc && prop->type == atom)
- return 0;
-
+
+ if (Success == rc && prop->type == atom)
+ return 0;
+
return 1;
}
-
static int
-ProcAppleWMQueryVersion(
- register ClientPtr client
-)
+ProcAppleWMQueryVersion(register ClientPtr client)
{
xAppleWMQueryVersionReply rep;
@@ -159,15 +155,14 @@ ProcAppleWMQueryVersion(
swaps(&rep.sequenceNumber);
swapl(&rep.length);
}
- WriteToClient(client, sizeof(xAppleWMQueryVersionReply), (char *)&rep);
+ WriteToClient(client, sizeof(xAppleWMQueryVersionReply), (char *) &rep);
return Success;
}
-
/* events */
static inline void
-updateEventMask (WMEventPtr *pHead)
+updateEventMask(WMEventPtr * pHead)
{
WMEventPtr pCur;
@@ -176,18 +171,21 @@ updateEventMask (WMEventPtr *pHead)
eventMask |= pCur->mask;
}
-/*ARGSUSED*/
-static int
-WMFreeClient (pointer data, XID id) {
- WMEventPtr pEvent;
- WMEventPtr *pHead, pCur, pPrev;
+ /*ARGSUSED*/ static int
+WMFreeClient(pointer data, XID id)
+{
+ WMEventPtr pEvent;
+ WMEventPtr *pHead, pCur, pPrev;
int i;
pEvent = (WMEventPtr) data;
- i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, serverClient, DixReadAccess | DixWriteAccess | DixDestroyAccess);
+ i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType,
+ serverClient,
+ DixReadAccess | DixWriteAccess |
+ DixDestroyAccess);
if (i == Success && pHead) {
pPrev = 0;
- for (pCur = *pHead; pCur && pCur != pEvent; pCur=pCur->next)
+ for (pCur = *pHead; pCur && pCur != pEvent; pCur = pCur->next)
pPrev = pCur;
if (pCur) {
if (pPrev)
@@ -195,21 +193,21 @@ WMFreeClient (pointer data, XID id) {
else
*pHead = pEvent->next;
}
- updateEventMask (pHead);
+ updateEventMask(pHead);
}
free((pointer) pEvent);
return 1;
}
-/*ARGSUSED*/
-static int
-WMFreeEvents (pointer data, XID id) {
- WMEventPtr *pHead, pCur, pNext;
+ /*ARGSUSED*/ static int
+WMFreeEvents(pointer data, XID id)
+{
+ WMEventPtr *pHead, pCur, pNext;
pHead = (WMEventPtr *) data;
for (pCur = *pHead; pCur; pCur = pNext) {
pNext = pCur->next;
- FreeResource (pCur->clientResource, ClientType);
+ FreeResource(pCur->clientResource, ClientType);
free((pointer) pCur);
}
free((pointer) pHead);
@@ -218,31 +216,30 @@ WMFreeEvents (pointer data, XID id) {
}
static int
-ProcAppleWMSelectInput (register ClientPtr client)
+ProcAppleWMSelectInput(register ClientPtr client)
{
REQUEST(xAppleWMSelectInputReq);
- WMEventPtr pEvent, pNewEvent, *pHead;
- XID clientResource;
- int i;
+ WMEventPtr pEvent, pNewEvent, *pHead;
+ XID clientResource;
+ int i;
- REQUEST_SIZE_MATCH (xAppleWMSelectInputReq);
- i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, client, DixWriteAccess);
+ REQUEST_SIZE_MATCH(xAppleWMSelectInputReq);
+ i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType,
+ client, DixWriteAccess);
if (stuff->mask != 0) {
if (i == Success && pHead) {
/* check for existing entry. */
- for (pEvent = *pHead; pEvent; pEvent = pEvent->next)
- {
- if (pEvent->client == client)
- {
+ for (pEvent = *pHead; pEvent; pEvent = pEvent->next) {
+ if (pEvent->client == client) {
pEvent->mask = stuff->mask;
- updateEventMask (pHead);
+ updateEventMask(pHead);
return Success;
}
}
}
/* build the entry */
- pNewEvent = (WMEventPtr) malloc(sizeof (WMEventRec));
+ pNewEvent = (WMEventPtr) malloc(sizeof(WMEventRec));
if (!pNewEvent)
return BadAlloc;
pNewEvent->next = 0;
@@ -252,9 +249,9 @@ ProcAppleWMSelectInput (register ClientPtr client)
* add a resource that will be deleted when
* the client goes away
*/
- clientResource = FakeClientID (client->index);
+ clientResource = FakeClientID(client->index);
pNewEvent->clientResource = clientResource;
- if (!AddResource (clientResource, ClientType, (pointer)pNewEvent))
+ if (!AddResource(clientResource, ClientType, (pointer) pNewEvent))
return BadAlloc;
/*
* create a resource to contain a pointer to the list
@@ -262,21 +259,20 @@ ProcAppleWMSelectInput (register ClientPtr client)
* the list may be arbitrarily rearranged which cannot be
* done through the resource database.
*/
- if (i != Success || !pHead)
- {
- pHead = (WMEventPtr *) malloc(sizeof (WMEventPtr));
+ if (i != Success || !pHead) {
+ pHead = (WMEventPtr *) malloc(sizeof(WMEventPtr));
if (!pHead ||
- !AddResource (eventResource, EventType, (pointer)pHead))
- {
- FreeResource (clientResource, RT_NONE);
+ !AddResource(eventResource, EventType, (pointer) pHead)) {
+ FreeResource(clientResource, RT_NONE);
return BadAlloc;
}
*pHead = 0;
}
pNewEvent->next = *pHead;
*pHead = pNewEvent;
- updateEventMask (pHead);
- } else if (stuff->mask == 0) {
+ updateEventMask(pHead);
+ }
+ else if (stuff->mask == 0) {
/* delete the interest */
if (i == Success && pHead) {
pNewEvent = 0;
@@ -286,16 +282,17 @@ ProcAppleWMSelectInput (register ClientPtr client)
pNewEvent = pEvent;
}
if (pEvent) {
- FreeResource (pEvent->clientResource, ClientType);
+ FreeResource(pEvent->clientResource, ClientType);
if (pNewEvent)
pNewEvent->next = pEvent->next;
else
*pHead = pEvent->next;
free(pEvent);
- updateEventMask (pHead);
+ updateEventMask(pHead);
}
}
- } else {
+ }
+ else {
client->errorValue = stuff->mask;
return BadValue;
}
@@ -307,12 +304,14 @@ ProcAppleWMSelectInput (register ClientPtr client)
*/
void
-AppleWMSendEvent (int type, unsigned int mask, int which, int arg) {
- WMEventPtr *pHead, pEvent;
+AppleWMSendEvent(int type, unsigned int mask, int which, int arg)
+{
+ WMEventPtr *pHead, pEvent;
xAppleWMNotifyEvent se;
- int i;
+ int i;
- i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, serverClient, DixReadAccess);
+ i = dixLookupResourceByType((pointer *) &pHead, eventResource, EventType,
+ serverClient, DixReadAccess);
if (i != Success || !pHead)
return;
for (pEvent = *pHead; pEvent; pEvent = pEvent->next) {
@@ -322,24 +321,21 @@ AppleWMSendEvent (int type, unsigned int mask, int which, int arg) {
se.kind = which;
se.arg = arg;
se.time = currentTime.milliseconds;
- WriteEventsToClient (pEvent->client, 1, (xEvent *) &se);
+ WriteEventsToClient(pEvent->client, 1, (xEvent *) &se);
}
}
/* Safe to call from any thread. */
unsigned int
-AppleWMSelectedEvents (void)
+AppleWMSelectedEvents(void)
{
return eventMask;
}
-
/* general utility functions */
static int
-ProcAppleWMDisableUpdate(
- register ClientPtr client
-)
+ProcAppleWMDisableUpdate(register ClientPtr client)
{
REQUEST_SIZE_MATCH(xAppleWMDisableUpdateReq);
@@ -349,9 +345,7 @@ ProcAppleWMDisableUpdate(
}
static int
-ProcAppleWMReenableUpdate(
- register ClientPtr client
-)
+ProcAppleWMReenableUpdate(register ClientPtr client)
{
REQUEST_SIZE_MATCH(xAppleWMReenableUpdateReq);
@@ -359,41 +353,37 @@ ProcAppleWMReenableUpdate(
return Success;
}
-
/* window functions */
static int
-ProcAppleWMSetWindowMenu(
- register ClientPtr client
-)
+ProcAppleWMSetWindowMenu(register ClientPtr client)
{
const char *bytes, **items;
char *shortcuts;
int max_len, nitems, i, j;
+
REQUEST(xAppleWMSetWindowMenuReq);
REQUEST_AT_LEAST_SIZE(xAppleWMSetWindowMenuReq);
nitems = stuff->nitems;
- items = malloc(sizeof (char *) * nitems);
- shortcuts = malloc(sizeof (char) * nitems);
+ items = malloc(sizeof(char *) * nitems);
+ shortcuts = malloc(sizeof(char) * nitems);
max_len = (stuff->length << 2) - sizeof(xAppleWMSetWindowMenuReq);
bytes = (char *) &stuff[1];
- for (i = j = 0; i < max_len && j < nitems;)
- {
+ for (i = j = 0; i < max_len && j < nitems;) {
shortcuts[j] = bytes[i++];
items[j++] = bytes + i;
- while (i < max_len)
- {
+ while (i < max_len) {
if (bytes[i++] == 0)
break;
}
}
- X11ApplicationSetWindowMenu (nitems, items, shortcuts);
+ X11ApplicationSetWindowMenu(nitems, items, shortcuts);
free(items);
free(shortcuts);
@@ -401,9 +391,7 @@ ProcAppleWMSetWindowMenu(
}
static int
-ProcAppleWMSetWindowMenuCheck(
- register ClientPtr client
-)
+ProcAppleWMSetWindowMenuCheck(register ClientPtr client)
{
REQUEST(xAppleWMSetWindowMenuCheckReq);
@@ -413,9 +401,7 @@ ProcAppleWMSetWindowMenuCheck(
}
static int
-ProcAppleWMSetFrontProcess(
- register ClientPtr client
-)
+ProcAppleWMSetFrontProcess(register ClientPtr client)
{
REQUEST_SIZE_MATCH(xAppleWMSetFrontProcessReq);
@@ -432,16 +418,15 @@ ProcAppleWMSetWindowLevel(register ClientPtr client)
REQUEST_SIZE_MATCH(xAppleWMSetWindowLevelReq);
- if (Success != dixLookupWindow(&pWin, stuff->window, client,
- DixReadAccess))
+ if (Success != dixLookupWindow(&pWin, stuff->window, client, DixReadAccess))
return BadValue;
if (stuff->level >= AppleWMNumWindowLevels) {
return BadValue;
}
- err = appleWMProcs->SetWindowLevel(pWin, stuff->level);
- if (err != Success) {
+ err = appleWMProcs->SetWindowLevel(pWin, stuff->level);
+ if (err != Success) {
return err;
}
@@ -453,10 +438,10 @@ ProcAppleWMSendPSN(register ClientPtr client)
{
REQUEST(xAppleWMSendPSNReq);
int err;
-
+
REQUEST_SIZE_MATCH(xAppleWMSendPSNReq);
-
- if(!appleWMProcs->SendPSN)
+
+ if (!appleWMProcs->SendPSN)
return BadRequest;
err = appleWMProcs->SendPSN(stuff->psn_hi, stuff->psn_lo);
@@ -471,21 +456,25 @@ static int
ProcAppleWMAttachTransient(register ClientPtr client)
{
WindowPtr pWinChild, pWinParent;
+
REQUEST(xAppleWMAttachTransientReq);
int err;
-
+
REQUEST_SIZE_MATCH(xAppleWMAttachTransientReq);
-
- if(!appleWMProcs->AttachTransient)
+
+ if (!appleWMProcs->AttachTransient)
return BadRequest;
- if (Success != dixLookupWindow(&pWinChild, stuff->child, client, DixReadAccess))
+ if (Success !=
+ dixLookupWindow(&pWinChild, stuff->child, client, DixReadAccess))
return BadValue;
- if(stuff->parent) {
- if(Success != dixLookupWindow(&pWinParent, stuff->parent, client, DixReadAccess))
+ if (stuff->parent) {
+ if (Success !=
+ dixLookupWindow(&pWinParent, stuff->parent, client, DixReadAccess))
return BadValue;
- } else {
+ }
+ else {
pWinParent = NULL;
}
@@ -498,9 +487,7 @@ ProcAppleWMAttachTransient(register ClientPtr client)
}
static int
-ProcAppleWMSetCanQuit(
- register ClientPtr client
-)
+ProcAppleWMSetCanQuit(register ClientPtr client)
{
REQUEST(xAppleWMSetCanQuitReq);
@@ -509,17 +496,15 @@ ProcAppleWMSetCanQuit(
X11ApplicationSetCanQuit(stuff->state);
return Success;
}
-
/* frame functions */
static int
-ProcAppleWMFrameGetRect(
- register ClientPtr client
-)
+ProcAppleWMFrameGetRect(register ClientPtr client)
{
xAppleWMFrameGetRectReply rep;
BoxRec ir, or, rr;
+
REQUEST(xAppleWMFrameGetRectReq);
REQUEST_SIZE_MATCH(xAppleWMFrameGetRectReq);
@@ -527,13 +512,12 @@ ProcAppleWMFrameGetRect(
rep.length = 0;
rep.sequenceNumber = client->sequence;
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
+ ir = make_box(stuff->ix, stuff->iy, stuff->iw, stuff->ih);
+ or = make_box(stuff->ox, stuff->oy, stuff->ow, stuff->oh);
if (appleWMProcs->FrameGetRect(stuff->frame_rect,
stuff->frame_class,
- &or, &ir, &rr) != Success)
- {
+ &or, &ir, &rr) != Success) {
return BadValue;
}
@@ -542,18 +526,17 @@ ProcAppleWMFrameGetRect(
rep.w = rr.x2 - rr.x1;
rep.h = rr.y2 - rr.y1;
- WriteToClient(client, sizeof(xAppleWMFrameGetRectReply), (char *)&rep);
+ WriteToClient(client, sizeof(xAppleWMFrameGetRectReply), (char *) &rep);
return Success;
}
static int
-ProcAppleWMFrameHitTest(
- register ClientPtr client
-)
+ProcAppleWMFrameHitTest(register ClientPtr client)
{
xAppleWMFrameHitTestReply rep;
BoxRec ir, or;
int ret;
+
REQUEST(xAppleWMFrameHitTestReq);
REQUEST_SIZE_MATCH(xAppleWMFrameHitTestReq);
@@ -561,40 +544,37 @@ ProcAppleWMFrameHitTest(
rep.length = 0;
rep.sequenceNumber = client->sequence;
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
+ ir = make_box(stuff->ix, stuff->iy, stuff->iw, stuff->ih);
+ or = make_box(stuff->ox, stuff->oy, stuff->ow, stuff->oh);
if (appleWMProcs->FrameHitTest(stuff->frame_class, stuff->px,
- stuff->py, &or, &ir, &ret) != Success)
- {
+ stuff->py, &or, &ir, &ret) != Success) {
return BadValue;
}
rep.ret = ret;
- WriteToClient(client, sizeof(xAppleWMFrameHitTestReply), (char *)&rep);
+ WriteToClient(client, sizeof(xAppleWMFrameHitTestReply), (char *) &rep);
return Success;
}
static int
-ProcAppleWMFrameDraw(
- register ClientPtr client
-)
+ProcAppleWMFrameDraw(register ClientPtr client)
{
BoxRec ir, or;
unsigned int title_length, title_max;
unsigned char *title_bytes;
+
REQUEST(xAppleWMFrameDrawReq);
WindowPtr pWin;
REQUEST_AT_LEAST_SIZE(xAppleWMFrameDrawReq);
- if (Success != dixLookupWindow(&pWin, stuff->window, client,
- DixReadAccess))
+ if (Success != dixLookupWindow(&pWin, stuff->window, client, DixReadAccess))
return BadValue;
- ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
- or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
+ ir = make_box(stuff->ix, stuff->iy, stuff->iw, stuff->ih);
+ or = make_box(stuff->ox, stuff->oy, stuff->ow, stuff->oh);
title_length = stuff->title_length;
title_max = (stuff->length << 2) - sizeof(xAppleWMFrameDrawReq);
@@ -613,19 +593,15 @@ ProcAppleWMFrameDraw(
return Success;
}
-
/* dispatch */
static int
-ProcAppleWMDispatch (
- register ClientPtr client
-)
+ProcAppleWMDispatch(register ClientPtr client)
{
REQUEST(xReq);
- switch (stuff->data)
- {
+ switch (stuff->data) {
case X_AppleWMQueryVersion:
return ProcAppleWMQueryVersion(client);
}
@@ -633,8 +609,7 @@ ProcAppleWMDispatch (
if (!LocalClient(client))
return WMErrorBase + AppleWMClientNotLocal;
- switch (stuff->data)
- {
+ switch (stuff->data) {
case X_AppleWMSelectInput:
return ProcAppleWMSelectInput(client);
case X_AppleWMDisableUpdate:
@@ -667,18 +642,17 @@ ProcAppleWMDispatch (
}
static void
-SNotifyEvent(xAppleWMNotifyEvent *from, xAppleWMNotifyEvent *to) {
+SNotifyEvent(xAppleWMNotifyEvent * from, xAppleWMNotifyEvent * to)
+{
to->type = from->type;
to->kind = from->kind;
- cpswaps (from->sequenceNumber, to->sequenceNumber);
- cpswapl (from->time, to->time);
- cpswapl (from->arg, to->arg);
+ cpswaps(from->sequenceNumber, to->sequenceNumber);
+ cpswapl(from->time, to->time);
+ cpswapl(from->arg, to->arg);
}
static int
-SProcAppleWMQueryVersion(
- register ClientPtr client
-)
+SProcAppleWMQueryVersion(register ClientPtr client)
{
REQUEST(xAppleWMQueryVersionReq);
swaps(&stuff->length);
@@ -686,9 +660,7 @@ SProcAppleWMQueryVersion(
}
static int
-SProcAppleWMDispatch (
- register ClientPtr client
-)
+SProcAppleWMDispatch(register ClientPtr client)
{
REQUEST(xReq);
@@ -697,8 +669,7 @@ SProcAppleWMDispatch (
return WMErrorBase + AppleWMClientNotLocal;
/* only local clients are allowed WM access */
- switch (stuff->data)
- {
+ switch (stuff->data) {
case X_AppleWMQueryVersion:
return SProcAppleWMQueryVersion(client);
default:
@@ -707,10 +678,9 @@ SProcAppleWMDispatch (
}
void
-AppleWMExtensionInit(
- AppleWMProcsPtr procsPtr)
+AppleWMExtensionInit(AppleWMProcsPtr procsPtr)
{
- ExtensionEntry* extEntry;
+ ExtensionEntry *extEntry;
ClientType = CreateNewResourceType(WMFreeClient, "WMClient");
EventType = CreateNewResourceType(WMFreeEvents, "WMEvent");
@@ -722,14 +692,13 @@ AppleWMExtensionInit(
AppleWMNumberErrors,
ProcAppleWMDispatch,
SProcAppleWMDispatch,
- NULL,
- StandardMinorOpcode)))
- {
+ NULL, StandardMinorOpcode))) {
size_t i;
- WMReqCode = (unsigned char)extEntry->base;
+
+ WMReqCode = (unsigned char) extEntry->base;
WMErrorBase = extEntry->errorBase;
WMEventBase = extEntry->eventBase;
- for (i=0; i < AppleWMNumberEvents; i++)
+ for (i = 0; i < AppleWMNumberEvents; i++)
EventSwapVector[WMEventBase + i] = (EventSwapPtr) SNotifyEvent;
appleWMProcs = procsPtr;
}