Merge branch 'master' into xi2

Conflicts:
	Xext/geext.c
	Xi/chdevcur.c
	Xi/extgrbdev.c
	Xi/xiproperty.c
	configure.ac
	dix/ptrveloc.c
	hw/xfree86/common/xf86Config.c
	mi/mipointer.h
	test/input.c
	xkb/xkb.c
This commit is contained in:
Peter Hutterer 2009-05-28 17:20:58 +10:00
commit d7aef3f663
178 changed files with 4488 additions and 5411 deletions

970
COPYING

File diff suppressed because it is too large Load Diff

View File

@ -354,9 +354,12 @@ PanoramiXRes *
PanoramiXFindIDByScrnum(RESTYPE type, XID id, int screen) PanoramiXFindIDByScrnum(RESTYPE type, XID id, int screen)
{ {
PanoramiXSearchData data; PanoramiXSearchData data;
pointer val;
if(!screen) if(!screen) {
return LookupIDByType(id, type); dixLookupResourceByType(&val, id, type, serverClient, DixReadAccess);
return val;
}
data.screen = screen; data.screen = screen;
data.id = id; data.id = id;

View File

@ -97,6 +97,4 @@ typedef struct {
#define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared) #define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared)
#define SKIP_FAKE_WINDOW(a) if(!LookupIDByType(a, XRT_WINDOW)) return
#endif /* _PANORAMIX_H_ */ #endif /* _PANORAMIX_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -533,11 +533,14 @@ UninstallSaverColormap (ScreenPtr pScreen)
{ {
SetupScreen(pScreen); SetupScreen(pScreen);
ColormapPtr pCmap; ColormapPtr pCmap;
int rc;
if (pPriv && pPriv->installedMap != None) if (pPriv && pPriv->installedMap != None)
{ {
pCmap = (ColormapPtr) LookupIDByType (pPriv->installedMap, RT_COLORMAP); rc = dixLookupResourceByType((pointer *)&pCmap, pPriv->installedMap,
if (pCmap) RT_COLORMAP, serverClient,
DixUninstallAccess);
if (rc == Success)
(*pCmap->pScreen->UninstallColormap) (pCmap); (*pCmap->pScreen->UninstallColormap) (pCmap);
pPriv->installedMap = None; pPriv->installedMap = None;
CheckScreenPrivate (pScreen); CheckScreenPrivate (pScreen);
@ -651,8 +654,9 @@ CreateSaverWindow (ScreenPtr pScreen)
if (i < numInstalled) if (i < numInstalled)
return TRUE; return TRUE;
pCmap = (ColormapPtr) LookupIDByType (wantMap, RT_COLORMAP); result = dixLookupResourceByType((pointer *)&pCmap, wantMap, RT_COLORMAP,
if (!pCmap) serverClient, DixInstallAccess);
if (result != Success)
return TRUE; return TRUE;
pPriv->installedMap = wantMap; pPriv->installedMap = wantMap;
@ -1252,15 +1256,16 @@ ProcScreenSaverSetAttributes (ClientPtr client)
PanoramiXRes *backPix = NULL; PanoramiXRes *backPix = NULL;
PanoramiXRes *bordPix = NULL; PanoramiXRes *bordPix = NULL;
PanoramiXRes *cmap = NULL; PanoramiXRes *cmap = NULL;
int i, status = 0, len; int i, status, len;
int pback_offset = 0, pbord_offset = 0, cmap_offset = 0; int pback_offset = 0, pbord_offset = 0, cmap_offset = 0;
XID orig_visual, tmp; XID orig_visual, tmp;
REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq); REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( status = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (status != Success)
return (status == BadValue) ? BadDrawable : status;
len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2); len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2);
if (Ones(stuff->mask) != len) if (Ones(stuff->mask) != len)
@ -1270,9 +1275,11 @@ ProcScreenSaverSetAttributes (ClientPtr client)
pback_offset = Ones((Mask)stuff->mask & (CWBackPixmap - 1)); pback_offset = Ones((Mask)stuff->mask & (CWBackPixmap - 1));
tmp = *((CARD32 *) &stuff[1] + pback_offset); tmp = *((CARD32 *) &stuff[1] + pback_offset);
if ((tmp != None) && (tmp != ParentRelative)) { if ((tmp != None) && (tmp != ParentRelative)) {
if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType( status = dixLookupResourceByType((pointer *)&backPix, tmp,
client, tmp, XRT_PIXMAP, DixReadAccess))) XRT_PIXMAP, client,
return BadPixmap; DixReadAccess);
if (status != Success)
return (status == BadValue) ? BadPixmap : status;
} }
} }
@ -1280,9 +1287,11 @@ ProcScreenSaverSetAttributes (ClientPtr client)
pbord_offset = Ones((Mask)stuff->mask & (CWBorderPixmap - 1)); pbord_offset = Ones((Mask)stuff->mask & (CWBorderPixmap - 1));
tmp = *((CARD32 *) &stuff[1] + pbord_offset); tmp = *((CARD32 *) &stuff[1] + pbord_offset);
if (tmp != CopyFromParent) { if (tmp != CopyFromParent) {
if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType( status = dixLookupResourceByType((pointer *)&bordPix, tmp,
client, tmp, XRT_PIXMAP, DixReadAccess))) XRT_PIXMAP, client,
return BadPixmap; DixReadAccess);
if (status != Success)
return (status == BadValue) ? BadPixmap : status;
} }
} }
@ -1290,9 +1299,11 @@ ProcScreenSaverSetAttributes (ClientPtr client)
cmap_offset = Ones((Mask)stuff->mask & (CWColormap - 1)); cmap_offset = Ones((Mask)stuff->mask & (CWColormap - 1));
tmp = *((CARD32 *) &stuff[1] + cmap_offset); tmp = *((CARD32 *) &stuff[1] + cmap_offset);
if ((tmp != CopyFromParent) && (tmp != None)) { if ((tmp != CopyFromParent) && (tmp != None)) {
if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType( status = dixLookupResourceByType((pointer *)&cmap, tmp,
client, tmp, XRT_COLORMAP, DixReadAccess))) XRT_COLORMAP, client,
return BadColor; DixReadAccess);
if (status != Success)
return (status == BadValue) ? BadColor : status;
} }
} }
@ -1327,11 +1338,12 @@ ProcScreenSaverUnsetAttributes (ClientPtr client)
if(!noPanoramiXExtension) { if(!noPanoramiXExtension) {
REQUEST(xScreenSaverUnsetAttributesReq); REQUEST(xScreenSaverUnsetAttributesReq);
PanoramiXRes *draw; PanoramiXRes *draw;
int i; int rc, i;
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( rc = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (rc != Success)
return (rc == BadValue) ? BadDrawable : rc;
for(i = PanoramiXNumScreens - 1; i > 0; i--) { for(i = PanoramiXNumScreens - 1; i > 0; i--) {
stuff->drawable = draw->info[i].id; stuff->drawable = draw->info[i].id;

View File

@ -623,13 +623,16 @@ ProcSecurityRevokeAuthorization(
{ {
REQUEST(xSecurityRevokeAuthorizationReq); REQUEST(xSecurityRevokeAuthorizationReq);
SecurityAuthorizationPtr pAuth; SecurityAuthorizationPtr pAuth;
int rc;
REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq); REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq);
pAuth = (SecurityAuthorizationPtr)SecurityLookupIDByType(client, rc = dixLookupResourceByType((pointer *)&pAuth, stuff->authId,
stuff->authId, SecurityAuthorizationResType, DixDestroyAccess); SecurityAuthorizationResType, client,
if (!pAuth) DixDestroyAccess);
return SecurityErrorBase + XSecurityBadAuthorization; if (rc != Success)
return (rc == BadValue) ?
SecurityErrorBase + XSecurityBadAuthorization : rc;
FreeResource(stuff->authId, RT_NONE); FreeResource(stuff->authId, RT_NONE);
return Success; return Success;

View File

@ -353,13 +353,14 @@ ProcPanoramiXShapeRectangles(
{ {
REQUEST(xShapeRectanglesReq); REQUEST(xShapeRectanglesReq);
PanoramiXRes *win; PanoramiXRes *win;
int j, result = 0; int j, result;
REQUEST_AT_LEAST_SIZE (xShapeRectanglesReq); REQUEST_AT_LEAST_SIZE (xShapeRectanglesReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW,
client, stuff->dest, XRT_WINDOW, DixWriteAccess))) client, DixWriteAccess);
return BadWindow; if (result != Success)
return (result == BadValue) ? BadWindow : result;
FOR_NSCREENS(j) { FOR_NSCREENS(j) {
stuff->dest = win->info[j].id; stuff->dest = win->info[j].id;
@ -451,18 +452,20 @@ ProcPanoramiXShapeMask(
{ {
REQUEST(xShapeMaskReq); REQUEST(xShapeMaskReq);
PanoramiXRes *win, *pmap; PanoramiXRes *win, *pmap;
int j, result = 0; int j, result;
REQUEST_SIZE_MATCH (xShapeMaskReq); REQUEST_SIZE_MATCH (xShapeMaskReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW,
client, stuff->dest, XRT_WINDOW, DixWriteAccess))) client, DixWriteAccess);
return BadWindow; if (result != Success)
return (result == BadValue) ? BadWindow : result;
if(stuff->src != None) { if(stuff->src != None) {
if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&pmap, stuff->src,
client, stuff->src, XRT_PIXMAP, DixReadAccess))) XRT_PIXMAP, client, DixReadAccess);
return BadPixmap; if (result != Success)
return (result == BadValue) ? BadPixmap : result;
} else } else
pmap = NULL; pmap = NULL;
@ -579,17 +582,19 @@ ProcPanoramiXShapeCombine(
{ {
REQUEST(xShapeCombineReq); REQUEST(xShapeCombineReq);
PanoramiXRes *win, *win2; PanoramiXRes *win, *win2;
int j, result = 0; int j, result;
REQUEST_AT_LEAST_SIZE (xShapeCombineReq); REQUEST_AT_LEAST_SIZE (xShapeCombineReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW,
client, stuff->dest, XRT_WINDOW, DixWriteAccess))) client, DixWriteAccess);
return BadWindow; if (result != Success)
return (result == BadValue) ? BadWindow : result;
if(!(win2 = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&win2, stuff->src, XRT_WINDOW,
client, stuff->src, XRT_WINDOW, DixReadAccess))) client, DixReadAccess);
return BadWindow; if (result != Success)
return (result == BadValue) ? BadWindow : result;
FOR_NSCREENS(j) { FOR_NSCREENS(j) {
stuff->dest = win->info[j].id; stuff->dest = win->info[j].id;
@ -651,13 +656,14 @@ ProcPanoramiXShapeOffset(
{ {
REQUEST(xShapeOffsetReq); REQUEST(xShapeOffsetReq);
PanoramiXRes *win; PanoramiXRes *win;
int j, result = 0; int j, result;
REQUEST_AT_LEAST_SIZE (xShapeOffsetReq); REQUEST_AT_LEAST_SIZE (xShapeOffsetReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW,
client, stuff->dest, XRT_WINDOW, DixWriteAccess))) client, DixWriteAccess);
return BadWindow; if (result != Success)
return (result == BadValue) ? BadWindow : result;
FOR_NSCREENS(j) { FOR_NSCREENS(j) {
stuff->dest = win->info[j].id; stuff->dest = win->info[j].id;
@ -740,11 +746,13 @@ ShapeFreeClient (pointer data, XID id)
ShapeEventPtr pShapeEvent; ShapeEventPtr pShapeEvent;
WindowPtr pWin; WindowPtr pWin;
ShapeEventPtr *pHead, pCur, pPrev; ShapeEventPtr *pHead, pCur, pPrev;
int rc;
pShapeEvent = (ShapeEventPtr) data; pShapeEvent = (ShapeEventPtr) data;
pWin = pShapeEvent->window; pWin = pShapeEvent->window;
pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType); rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id,
if (pHead) { ShapeEventType, serverClient, DixReadAccess);
if (rc == Success) {
pPrev = 0; pPrev = 0;
for (pCur = *pHead; pCur && pCur != pShapeEvent; pCur=pCur->next) for (pCur = *pHead; pCur && pCur != pShapeEvent; pCur=pCur->next)
pPrev = pCur; pPrev = pCur;
@ -789,8 +797,11 @@ ProcShapeSelectInput (ClientPtr client)
rc = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
pHead = (ShapeEventPtr *)SecurityLookupIDByType(client, rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id,
pWin->drawable.id, ShapeEventType, DixWriteAccess); ShapeEventType, client, DixWriteAccess);
if (rc != Success && rc != BadValue)
return rc;
switch (stuff->enable) { switch (stuff->enable) {
case xTrue: case xTrue:
if (pHead) { if (pHead) {
@ -879,9 +890,11 @@ SendShapeNotify (WindowPtr pWin, int which)
BoxRec extents; BoxRec extents;
RegionPtr region; RegionPtr region;
BYTE shaped; BYTE shaped;
int rc;
pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType); rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id,
if (!pHead) ShapeEventType, serverClient, DixReadAccess);
if (rc != Success)
return; return;
switch (which) { switch (which) {
case ShapeBounding: case ShapeBounding:
@ -958,8 +971,10 @@ ProcShapeInputSelected (ClientPtr client)
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
pHead = (ShapeEventPtr *) SecurityLookupIDByType(client, rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id,
pWin->drawable.id, ShapeEventType, DixReadAccess); ShapeEventType, client, DixReadAccess);
if (rc != Success && rc != BadValue)
return rc;
enabled = xFalse; enabled = xFalse;
if (pHead) { if (pHead) {
for (pShapeEvent = *pHead; for (pShapeEvent = *pHead;

View File

@ -144,12 +144,11 @@ static ShmFuncs fbFuncs = {fbShmCreatePixmap, NULL};
#define VERIFY_SHMSEG(shmseg,shmdesc,client) \ #define VERIFY_SHMSEG(shmseg,shmdesc,client) \
{ \ { \
shmdesc = (ShmDescPtr)LookupIDByType(shmseg, ShmSegType); \ int rc; \
if (!shmdesc) \ rc = dixLookupResourceByType((pointer *)&(shmdesc), shmseg, ShmSegType, \
{ \ client, DixReadAccess); \
client->errorValue = shmseg; \ if (rc != Success) \
return BadShmSegCode; \ return (rc == BadValue) ? BadShmSegCode : rc; \
} \
} }
#define VERIFY_SHMPTR(shmseg,offset,needwrite,shmdesc,client) \ #define VERIFY_SHMPTR(shmseg,offset,needwrite,shmdesc,client) \
@ -513,20 +512,22 @@ doShmPutImage(DrawablePtr dst, GCPtr pGC,
static int static int
ProcPanoramiXShmPutImage(ClientPtr client) ProcPanoramiXShmPutImage(ClientPtr client)
{ {
int j, result = 0, orig_x, orig_y; int j, result, orig_x, orig_y;
PanoramiXRes *draw, *gc; PanoramiXRes *draw, *gc;
Bool sendEvent, isRoot; Bool sendEvent, isRoot;
REQUEST(xShmPutImageReq); REQUEST(xShmPutImageReq);
REQUEST_SIZE_MATCH(xShmPutImageReq); REQUEST_SIZE_MATCH(xShmPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&gc, stuff->gc,
client, stuff->gc, XRT_GC, DixReadAccess))) XRT_GC, client, DixReadAccess);
return BadGC; if (result != Success)
return (result == BadValue) ? BadGC : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@ -570,9 +571,10 @@ ProcPanoramiXShmGetImage(ClientPtr client)
return(BadValue); return(BadValue);
} }
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( rc = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (rc != Success)
return (rc == BadValue) ? BadDrawable : rc;
if (draw->type == XRT_PIXMAP) if (draw->type == XRT_PIXMAP)
return ProcShmGetImage(client); return ProcShmGetImage(client);

View File

@ -1339,16 +1339,14 @@ ProcSyncSetCounter(ClientPtr client)
REQUEST(xSyncSetCounterReq); REQUEST(xSyncSetCounterReq);
SyncCounter *pCounter; SyncCounter *pCounter;
CARD64 newvalue; CARD64 newvalue;
int rc;
REQUEST_SIZE_MATCH(xSyncSetCounterReq); REQUEST_SIZE_MATCH(xSyncSetCounterReq);
pCounter = SecurityLookupIDByType(client, stuff->cid, RTCounter, rc = dixLookupResourceByType((pointer *)&pCounter, stuff->cid, RTCounter,
DixWriteAccess); client, DixWriteAccess);
if (pCounter == NULL) if (rc != Success)
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc;
client->errorValue = stuff->cid;
return SyncErrorBase + XSyncBadCounter;
}
if (IsSystemCounter(pCounter)) if (IsSystemCounter(pCounter))
{ {
@ -1371,16 +1369,14 @@ ProcSyncChangeCounter(ClientPtr client)
SyncCounter *pCounter; SyncCounter *pCounter;
CARD64 newvalue; CARD64 newvalue;
Bool overflow; Bool overflow;
int rc;
REQUEST_SIZE_MATCH(xSyncChangeCounterReq); REQUEST_SIZE_MATCH(xSyncChangeCounterReq);
pCounter = SecurityLookupIDByType(client, stuff->cid, RTCounter, rc = dixLookupResourceByType((pointer *)&pCounter, stuff->cid, RTCounter,
DixWriteAccess); client, DixWriteAccess);
if (pCounter == NULL) if (rc != Success)
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc;
client->errorValue = stuff->cid;
return SyncErrorBase + XSyncBadCounter;
}
if (IsSystemCounter(pCounter)) if (IsSystemCounter(pCounter))
{ {
@ -1408,16 +1404,15 @@ ProcSyncDestroyCounter(ClientPtr client)
{ {
REQUEST(xSyncDestroyCounterReq); REQUEST(xSyncDestroyCounterReq);
SyncCounter *pCounter; SyncCounter *pCounter;
int rc;
REQUEST_SIZE_MATCH(xSyncDestroyCounterReq); REQUEST_SIZE_MATCH(xSyncDestroyCounterReq);
pCounter = SecurityLookupIDByType(client, stuff->counter, RTCounter, rc = dixLookupResourceByType((pointer *)&pCounter, stuff->counter, RTCounter,
DixDestroyAccess); client, DixDestroyAccess);
if (pCounter == NULL) if (rc != Success)
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc;
client->errorValue = stuff->counter;
return SyncErrorBase + XSyncBadCounter;
}
if (IsSystemCounter(pCounter)) if (IsSystemCounter(pCounter))
{ {
client->errorValue = stuff->counter; client->errorValue = stuff->counter;
@ -1552,16 +1547,14 @@ ProcSyncQueryCounter(ClientPtr client)
REQUEST(xSyncQueryCounterReq); REQUEST(xSyncQueryCounterReq);
xSyncQueryCounterReply rep; xSyncQueryCounterReply rep;
SyncCounter *pCounter; SyncCounter *pCounter;
int rc;
REQUEST_SIZE_MATCH(xSyncQueryCounterReq); REQUEST_SIZE_MATCH(xSyncQueryCounterReq);
pCounter = SecurityLookupIDByType(client, stuff->counter, RTCounter, rc = dixLookupResourceByType((pointer *)&pCounter, stuff->counter,
DixReadAccess); RTCounter, client, DixReadAccess);
if (pCounter == NULL) if (rc != Success)
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc;
client->errorValue = stuff->counter;
return SyncErrorBase + XSyncBadCounter;
}
rep.type = X_Reply; rep.type = X_Reply;
rep.length = 0; rep.length = 0;
@ -1682,12 +1675,10 @@ ProcSyncChangeAlarm(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xSyncChangeAlarmReq); REQUEST_AT_LEAST_SIZE(xSyncChangeAlarmReq);
if (!(pAlarm = SecurityLookupIDByType(client, stuff->alarm, RTAlarm, status = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm,
DixWriteAccess))) client, DixWriteAccess);
{ if (status != Success)
client->errorValue = stuff->alarm; return (status == BadValue) ? SyncErrorBase + XSyncBadAlarm : status;
return SyncErrorBase + XSyncBadAlarm;
}
vmask = stuff->valueMask; vmask = stuff->valueMask;
len = client->req_len - (sizeof(xSyncChangeAlarmReq) >> 2); len = client->req_len - (sizeof(xSyncChangeAlarmReq) >> 2);
@ -1719,16 +1710,14 @@ ProcSyncQueryAlarm(ClientPtr client)
SyncAlarm *pAlarm; SyncAlarm *pAlarm;
xSyncQueryAlarmReply rep; xSyncQueryAlarmReply rep;
SyncTrigger *pTrigger; SyncTrigger *pTrigger;
int rc;
REQUEST_SIZE_MATCH(xSyncQueryAlarmReq); REQUEST_SIZE_MATCH(xSyncQueryAlarmReq);
pAlarm = SecurityLookupIDByType(client, stuff->alarm, RTAlarm, rc = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm,
DixReadAccess); client, DixReadAccess);
if (!pAlarm) if (rc != Success)
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc;
client->errorValue = stuff->alarm;
return SyncErrorBase + XSyncBadAlarm;
}
rep.type = X_Reply; rep.type = X_Reply;
rep.length = (sizeof(xSyncQueryAlarmReply) - sizeof(xGenericReply)) >> 2; rep.length = (sizeof(xSyncQueryAlarmReply) - sizeof(xGenericReply)) >> 2;
@ -1776,16 +1765,15 @@ ProcSyncQueryAlarm(ClientPtr client)
static int static int
ProcSyncDestroyAlarm(ClientPtr client) ProcSyncDestroyAlarm(ClientPtr client)
{ {
SyncAlarm *pAlarm;
int rc;
REQUEST(xSyncDestroyAlarmReq); REQUEST(xSyncDestroyAlarmReq);
REQUEST_SIZE_MATCH(xSyncDestroyAlarmReq); REQUEST_SIZE_MATCH(xSyncDestroyAlarmReq);
if (!(SecurityLookupIDByType(client, stuff->alarm, RTAlarm, rc = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm,
DixDestroyAccess))) client, DixDestroyAccess);
{ return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc;
client->errorValue = stuff->alarm;
return SyncErrorBase + XSyncBadAlarm;
}
FreeResource(stuff->alarm, RT_NONE); FreeResource(stuff->alarm, RT_NONE);
return client->noClientException; return client->noClientException;

View File

@ -427,15 +427,15 @@ ProcXF86BigfontQueryFont(
} }
#endif #endif
client->errorValue = stuff->id; /* EITHER font or gc */ client->errorValue = stuff->id; /* EITHER font or gc */
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT,
DixGetAttrAccess); client, DixGetAttrAccess);
if (!pFont) { if (!pFont) {
GC *pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC, GC *pGC;
DixGetAttrAccess); dixLookupResourceByType((pointer *)&pGC, stuff->id, RT_GC,
if (!pGC) { client, DixGetAttrAccess);
client->errorValue = stuff->id; if (!pGC)
return BadFont; /* procotol spec says only error is BadFont */ return BadFont; /* procotol spec says only error is BadFont */
}
pFont = pGC->font; pFont = pGC->font;
} }

View File

@ -1346,15 +1346,6 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset)
goto out; goto out;
privPtr = &serverClient->devPrivates; privPtr = &serverClient->devPrivates;
} }
else if (offset == USE_SEL) {
/* Selection use context currently requires no selections owned */
Selection *pSel;
for (pSel = CurrentSelections; pSel; pSel = pSel->next)
if (pSel->client == client) {
rc = BadMatch;
goto out;
}
}
ptr = dixLookupPrivate(privPtr, subjectKey); ptr = dixLookupPrivate(privPtr, subjectKey);
pSid = (security_id_t *)(ptr + offset); pSid = (security_id_t *)(ptr + offset);

View File

@ -479,11 +479,7 @@ ProcXvQueryEncodings(ClientPtr client)
REQUEST(xvQueryEncodingsReq); REQUEST(xvQueryEncodingsReq);
REQUEST_SIZE_MATCH(xvQueryEncodingsReq); REQUEST_SIZE_MATCH(xvQueryEncodingsReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -540,12 +536,7 @@ ProcXvPutVideo(ClientPtr client)
REQUEST_SIZE_MATCH(xvPutVideoReq); REQUEST_SIZE_MATCH(xvPutVideoReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -583,12 +574,7 @@ ProcXvPutStill(ClientPtr client)
REQUEST_SIZE_MATCH(xvPutStillReq); REQUEST_SIZE_MATCH(xvPutStillReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -626,12 +612,7 @@ ProcXvGetVideo(ClientPtr client)
REQUEST_SIZE_MATCH(xvGetVideoReq); REQUEST_SIZE_MATCH(xvGetVideoReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -669,12 +650,7 @@ ProcXvGetStill(ClientPtr client)
REQUEST_SIZE_MATCH(xvGetStillReq); REQUEST_SIZE_MATCH(xvGetStillReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -723,11 +699,7 @@ ProcXvSelectPortNotify(ClientPtr client)
REQUEST(xvSelectPortNotifyReq); REQUEST(xvSelectPortNotifyReq);
REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); REQUEST_SIZE_MATCH(xvSelectPortNotifyReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -747,11 +719,7 @@ ProcXvGrabPort(ClientPtr client)
REQUEST(xvGrabPortReq); REQUEST(xvGrabPortReq);
REQUEST_SIZE_MATCH(xvGrabPortReq); REQUEST_SIZE_MATCH(xvGrabPortReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -784,11 +752,7 @@ ProcXvUngrabPort(ClientPtr client)
REQUEST(xvGrabPortReq); REQUEST(xvGrabPortReq);
REQUEST_SIZE_MATCH(xvGrabPortReq); REQUEST_SIZE_MATCH(xvGrabPortReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -808,11 +772,7 @@ ProcXvStopVideo(ClientPtr client)
REQUEST(xvStopVideoReq); REQUEST(xvStopVideoReq);
REQUEST_SIZE_MATCH(xvStopVideoReq); REQUEST_SIZE_MATCH(xvStopVideoReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -835,11 +795,7 @@ ProcXvSetPortAttribute(ClientPtr client)
REQUEST(xvSetPortAttributeReq); REQUEST(xvSetPortAttributeReq);
REQUEST_SIZE_MATCH(xvSetPortAttributeReq); REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixSetAttrAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -873,11 +829,7 @@ ProcXvGetPortAttribute(ClientPtr client)
REQUEST(xvGetPortAttributeReq); REQUEST(xvGetPortAttributeReq);
REQUEST_SIZE_MATCH(xvGetPortAttributeReq); REQUEST_SIZE_MATCH(xvGetPortAttributeReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixGetAttrAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -918,11 +870,7 @@ ProcXvQueryBestSize(ClientPtr client)
REQUEST(xvQueryBestSizeReq); REQUEST(xvQueryBestSizeReq);
REQUEST_SIZE_MATCH(xvQueryBestSizeReq); REQUEST_SIZE_MATCH(xvQueryBestSizeReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -959,11 +907,7 @@ ProcXvQueryPortAttributes(ClientPtr client)
REQUEST(xvQueryPortAttributesReq); REQUEST(xvQueryPortAttributesReq);
REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); REQUEST_SIZE_MATCH(xvQueryPortAttributesReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixGetAttrAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -1019,12 +963,7 @@ ProcXvPutImage(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xvPutImageReq); REQUEST_AT_LEAST_SIZE(xvPutImageReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -1105,12 +1044,7 @@ ProcXvShmPutImage(ClientPtr client)
REQUEST_SIZE_MATCH(xvShmPutImageReq); REQUEST_SIZE_MATCH(xvShmPutImageReq);
VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client) ))
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
if ((status = _AllocatePort(stuff->port, pPort)) != Success) if ((status = _AllocatePort(stuff->port, pPort)) != Success)
{ {
@ -1141,11 +1075,10 @@ ProcXvShmPutImage(ClientPtr client)
if(!pImage) if(!pImage)
return BadMatch; return BadMatch;
if(!(shmdesc = (ShmDescPtr)LookupIDByType(stuff->shmseg, ShmSegType))) status = dixLookupResourceByType((pointer *)&shmdesc, stuff->shmseg,
{ ShmSegType, serverClient, DixReadAccess);
client->errorValue = stuff->shmseg; if (status != Success)
return BadShmSegCode; return (status == BadValue) ? BadShmSegCode : status;
}
width = stuff->width; width = stuff->width;
height = stuff->height; height = stuff->height;
@ -1206,11 +1139,7 @@ ProcXvQueryImageAttributes(ClientPtr client)
REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); REQUEST_SIZE_MATCH(xvQueryImageAttributesReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
for(i = 0; i < pPort->pAdaptor->nImages; i++) { for(i = 0; i < pPort->pAdaptor->nImages; i++) {
if(pPort->pAdaptor->pImages[i].id == stuff->id) { if(pPort->pAdaptor->pImages[i].id == stuff->id) {
@ -1269,11 +1198,7 @@ ProcXvListImageFormats(ClientPtr client)
REQUEST_SIZE_MATCH(xvListImageFormatsReq); REQUEST_SIZE_MATCH(xvListImageFormatsReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client) )) VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
{
client->errorValue = stuff->port;
return (_XvBadPort);
}
rep.type = X_Reply; rep.type = X_Reply;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
@ -1679,18 +1604,20 @@ SProcXvDispatch(ClientPtr client)
static int static int
XineramaXvStopVideo(ClientPtr client) XineramaXvStopVideo(ClientPtr client)
{ {
int result = Success, i; int result, i;
PanoramiXRes *draw, *port; PanoramiXRes *draw, *port;
REQUEST(xvStopVideoReq); REQUEST(xvStopVideoReq);
REQUEST_SIZE_MATCH(xvStopVideoReq); REQUEST_SIZE_MATCH(xvStopVideoReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
FOR_NSCREENS_BACKWARD(i) { FOR_NSCREENS_BACKWARD(i) {
if(port->info[i].id) { if(port->info[i].id) {
@ -1708,13 +1635,14 @@ XineramaXvSetPortAttribute(ClientPtr client)
{ {
REQUEST(xvSetPortAttributeReq); REQUEST(xvSetPortAttributeReq);
PanoramiXRes *port; PanoramiXRes *port;
int result = Success, i; int result, i;
REQUEST_SIZE_MATCH(xvSetPortAttributeReq); REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
FOR_NSCREENS_BACKWARD(i) { FOR_NSCREENS_BACKWARD(i) {
if(port->info[i].id) { if(port->info[i].id) {
@ -1733,21 +1661,24 @@ XineramaXvShmPutImage(ClientPtr client)
PanoramiXRes *draw, *gc, *port; PanoramiXRes *draw, *gc, *port;
Bool send_event = stuff->send_event; Bool send_event = stuff->send_event;
Bool isRoot; Bool isRoot;
int result = Success, i, x, y; int result, i, x, y;
REQUEST_SIZE_MATCH(xvShmPutImageReq); REQUEST_SIZE_MATCH(xvShmPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&gc, stuff->gc,
client, stuff->gc, XRT_GC, DixReadAccess))) XRT_GC, client, DixReadAccess);
return BadGC; if (result != Success)
return (result == BadValue) ? BadGC : result;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@ -1782,21 +1713,24 @@ XineramaXvPutImage(ClientPtr client)
REQUEST(xvPutImageReq); REQUEST(xvPutImageReq);
PanoramiXRes *draw, *gc, *port; PanoramiXRes *draw, *gc, *port;
Bool isRoot; Bool isRoot;
int result = Success, i, x, y; int result, i, x, y;
REQUEST_AT_LEAST_SIZE(xvPutImageReq); REQUEST_AT_LEAST_SIZE(xvPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&gc, stuff->gc,
client, stuff->gc, XRT_GC, DixReadAccess))) XRT_GC, client, DixReadAccess);
return BadGC; if (result != Success)
return (result == BadValue) ? BadGC : result;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@ -1827,21 +1761,24 @@ XineramaXvPutVideo(ClientPtr client)
REQUEST(xvPutImageReq); REQUEST(xvPutImageReq);
PanoramiXRes *draw, *gc, *port; PanoramiXRes *draw, *gc, *port;
Bool isRoot; Bool isRoot;
int result = Success, i, x, y; int result, i, x, y;
REQUEST_AT_LEAST_SIZE(xvPutVideoReq); REQUEST_AT_LEAST_SIZE(xvPutVideoReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&gc, stuff->gc,
client, stuff->gc, XRT_GC, DixReadAccess))) XRT_GC, client, DixReadAccess);
return BadGC; if (result != Success)
return (result == BadValue) ? BadGC : result;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@ -1872,21 +1809,24 @@ XineramaXvPutStill(ClientPtr client)
REQUEST(xvPutImageReq); REQUEST(xvPutImageReq);
PanoramiXRes *draw, *gc, *port; PanoramiXRes *draw, *gc, *port;
Bool isRoot; Bool isRoot;
int result = Success, i, x, y; int result, i, x, y;
REQUEST_AT_LEAST_SIZE(xvPutImageReq); REQUEST_AT_LEAST_SIZE(xvPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable,
client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) XRC_DRAWABLE, client, DixWriteAccess);
return BadDrawable; if (result != Success)
return (result == BadValue) ? BadDrawable : result;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&gc, stuff->gc,
client, stuff->gc, XRT_GC, DixReadAccess))) XRT_GC, client, DixReadAccess);
return BadGC; if (result != Success)
return (result == BadValue) ? BadGC : result;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType( result = dixLookupResourceByType((pointer *)&port, stuff->port,
client, stuff->port, XvXRTPort, DixReadAccess))) XvXRTPort, client, DixReadAccess);
return _XvBadPort; if (result != Success)
return (result == BadValue) ? _XvBadPort : result;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;

View File

@ -201,17 +201,13 @@ typedef struct _XvPortRec {
DevUnion devPriv; DevUnion devPriv;
} XvPortRec, *XvPortPtr; } XvPortRec, *XvPortPtr;
#define LOOKUP_PORT(_id, client)\ #define VALIDATE_XV_PORT(portID, pPort, mode)\
((XvPortPtr)LookupIDByType(_id, XvRTPort)) {\
int rc = dixLookupResourceByType((pointer *)&(pPort), portID,\
#define LOOKUP_ENCODING(_id, client)\ XvRTPort, client, mode);\
((XvEncodingPtr)LookupIDByType(_id, XvRTEncoding)) if (rc != Success)\
return (rc == BadValue) ? _XvBadPort : rc;\
#define LOOKUP_VIDEONOTIFY_LIST(_id, client)\ }
((XvVideoNotifyPtr)LookupIDByType(_id, XvRTVideoNotifyList))
#define LOOKUP_PORTNOTIFY_LIST(_id, client)\
((XvPortNotifyPtr)LookupIDByType(_id, XvRTPortNotifyList))
typedef struct { typedef struct {
int version, revision; int version, revision;

View File

@ -523,7 +523,8 @@ XvdiSendVideoNotify(XvPortPtr pPort, DrawablePtr pDraw, int reason)
xvEvent event; xvEvent event;
XvVideoNotifyPtr pn; XvVideoNotifyPtr pn;
pn = (XvVideoNotifyPtr)LookupIDByType(pDraw->id, XvRTVideoNotifyList); dixLookupResourceByType((pointer *)&pn, pDraw->id, XvRTVideoNotifyList,
serverClient, DixReadAccess);
while (pn) while (pn)
{ {
@ -905,10 +906,14 @@ XvdiSelectVideoNotify(
BOOL onoff BOOL onoff
){ ){
XvVideoNotifyPtr pn,tpn,fpn; XvVideoNotifyPtr pn,tpn,fpn;
int rc;
/* FIND VideoNotify LIST */ /* FIND VideoNotify LIST */
pn = (XvVideoNotifyPtr)LookupIDByType(pDraw->id, XvRTVideoNotifyList); rc = dixLookupResourceByType((pointer *)&pn, pDraw->id, XvRTVideoNotifyList,
client, DixWriteAccess);
if (rc != Success && rc != BadValue)
return rc;
/* IF ONE DONES'T EXIST AND NO MASK, THEN JUST RETURN */ /* IF ONE DONES'T EXIST AND NO MASK, THEN JUST RETURN */

View File

@ -136,10 +136,7 @@ ProcXvMCListSurfaceTypes(ClientPtr client)
REQUEST(xvmcListSurfaceTypesReq); REQUEST(xvmcListSurfaceTypesReq);
REQUEST_SIZE_MATCH(xvmcListSurfaceTypesReq); REQUEST_SIZE_MATCH(xvmcListSurfaceTypesReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client))) { VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
client->errorValue = stuff->port;
return _XvBadPort;
}
if(XvMCScreenKey) { /* any adaptors at all */ if(XvMCScreenKey) { /* any adaptors at all */
ScreenPtr pScreen = pPort->pAdaptor->pScreen; ScreenPtr pScreen = pPort->pAdaptor->pScreen;
@ -192,10 +189,7 @@ ProcXvMCCreateContext(ClientPtr client)
REQUEST(xvmcCreateContextReq); REQUEST(xvmcCreateContextReq);
REQUEST_SIZE_MATCH(xvmcCreateContextReq); REQUEST_SIZE_MATCH(xvmcCreateContextReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client))) { VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
client->errorValue = stuff->port;
return _XvBadPort;
}
pScreen = pPort->pAdaptor->pScreen; pScreen = pPort->pAdaptor->pScreen;
@ -273,11 +267,15 @@ ProcXvMCCreateContext(ClientPtr client)
static int static int
ProcXvMCDestroyContext(ClientPtr client) ProcXvMCDestroyContext(ClientPtr client)
{ {
pointer val;
int rc;
REQUEST(xvmcDestroyContextReq); REQUEST(xvmcDestroyContextReq);
REQUEST_SIZE_MATCH(xvmcDestroyContextReq); REQUEST_SIZE_MATCH(xvmcDestroyContextReq);
if(!LookupIDByType(stuff->context_id, XvMCRTContext)) rc = dixLookupResourceByType(&val, stuff->context_id, XvMCRTContext,
return (XvMCBadContext + XvMCErrorBase); client, DixDestroyAccess);
if (rc != Success)
return (rc == BadValue) ? XvMCBadContext + XvMCErrorBase : rc;
FreeResource(stuff->context_id, RT_NONE); FreeResource(stuff->context_id, RT_NONE);
@ -297,8 +295,10 @@ ProcXvMCCreateSurface(ClientPtr client)
REQUEST(xvmcCreateSurfaceReq); REQUEST(xvmcCreateSurfaceReq);
REQUEST_SIZE_MATCH(xvmcCreateSurfaceReq); REQUEST_SIZE_MATCH(xvmcCreateSurfaceReq);
if(!(pContext = LookupIDByType(stuff->context_id, XvMCRTContext))) result = dixLookupResourceByType((pointer *)&pContext, stuff->context_id,
return (XvMCBadContext + XvMCErrorBase); XvMCRTContext, client, DixUseAccess);
if (result != Success)
return (result == BadValue) ? XvMCBadContext + XvMCErrorBase : result;
pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen); pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen);
@ -337,11 +337,15 @@ ProcXvMCCreateSurface(ClientPtr client)
static int static int
ProcXvMCDestroySurface(ClientPtr client) ProcXvMCDestroySurface(ClientPtr client)
{ {
pointer val;
int rc;
REQUEST(xvmcDestroySurfaceReq); REQUEST(xvmcDestroySurfaceReq);
REQUEST_SIZE_MATCH(xvmcDestroySurfaceReq); REQUEST_SIZE_MATCH(xvmcDestroySurfaceReq);
if(!LookupIDByType(stuff->surface_id, XvMCRTSurface)) rc = dixLookupResourceByType(&val, stuff->surface_id, XvMCRTSurface,
return (XvMCBadSurface + XvMCErrorBase); client, DixDestroyAccess);
if (rc != Success)
return (rc == BadValue) ? XvMCBadSurface + XvMCErrorBase : rc;
FreeResource(stuff->surface_id, RT_NONE); FreeResource(stuff->surface_id, RT_NONE);
@ -363,8 +367,10 @@ ProcXvMCCreateSubpicture(ClientPtr client)
REQUEST(xvmcCreateSubpictureReq); REQUEST(xvmcCreateSubpictureReq);
REQUEST_SIZE_MATCH(xvmcCreateSubpictureReq); REQUEST_SIZE_MATCH(xvmcCreateSubpictureReq);
if(!(pContext = LookupIDByType(stuff->context_id, XvMCRTContext))) result = dixLookupResourceByType((pointer *)&pContext, stuff->context_id,
return (XvMCBadContext + XvMCErrorBase); XvMCRTContext, client, DixUseAccess);
if (result != Success)
return (result == BadValue) ? XvMCBadContext + XvMCErrorBase : result;
pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen); pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen);
@ -448,11 +454,15 @@ ProcXvMCCreateSubpicture(ClientPtr client)
static int static int
ProcXvMCDestroySubpicture(ClientPtr client) ProcXvMCDestroySubpicture(ClientPtr client)
{ {
pointer val;
int rc;
REQUEST(xvmcDestroySubpictureReq); REQUEST(xvmcDestroySubpictureReq);
REQUEST_SIZE_MATCH(xvmcDestroySubpictureReq); REQUEST_SIZE_MATCH(xvmcDestroySubpictureReq);
if(!LookupIDByType(stuff->subpicture_id, XvMCRTSubpicture)) rc = dixLookupResourceByType(&val, stuff->subpicture_id, XvMCRTSubpicture,
return (XvMCBadSubpicture + XvMCErrorBase); client, DixDestroyAccess);
if (rc != Success)
return (rc == BadValue) ? XvMCBadSubpicture + XvMCErrorBase : rc;
FreeResource(stuff->subpicture_id, RT_NONE); FreeResource(stuff->subpicture_id, RT_NONE);
@ -475,10 +485,7 @@ ProcXvMCListSubpictureTypes(ClientPtr client)
REQUEST(xvmcListSubpictureTypesReq); REQUEST(xvmcListSubpictureTypesReq);
REQUEST_SIZE_MATCH(xvmcListSubpictureTypesReq); REQUEST_SIZE_MATCH(xvmcListSubpictureTypesReq);
if(!(pPort = LOOKUP_PORT(stuff->port, client))) { VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
client->errorValue = stuff->port;
return _XvBadPort;
}
pScreen = pPort->pAdaptor->pScreen; pScreen = pPort->pAdaptor->pScreen;
@ -571,11 +578,7 @@ ProcXvMCGetDRInfo(ClientPtr client)
REQUEST(xvmcGetDRInfoReq); REQUEST(xvmcGetDRInfoReq);
REQUEST_SIZE_MATCH(xvmcGetDRInfoReq); REQUEST_SIZE_MATCH(xvmcGetDRInfoReq);
VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess);
if(!(pPort = LOOKUP_PORT(stuff->port, client))) {
client->errorValue = stuff->port;
return _XvBadPort;
}
pScreen = pPort->pAdaptor->pScreen; pScreen = pPort->pAdaptor->pScreen;
pScreenPriv = XVMC_GET_PRIVATE(pScreen); pScreenPriv = XVMC_GET_PRIVATE(pScreen);

View File

@ -94,10 +94,10 @@ int ProcXIChangeCursor(ClientPtr client)
} }
else else
{ {
rc = dixLookupResourceByType((pointer*)&pCursor, stuff->cursor, rc = dixLookupResourceByType((pointer *)&pCursor, stuff->cursor,
RT_CURSOR, client, DixReadAccess); RT_CURSOR, client, DixReadAccess);
if (rc != Success) if (rc != Success)
return rc; return (rc == BadValue) ? BadCursor : rc;
} }
ChangeWindowDeviceCursor(pWin, pDev, pCursor); ChangeWindowDeviceCursor(pWin, pDev, pCursor);

View File

@ -2,6 +2,10 @@ noinst_LTLIBRARIES = libcomposite.la
AM_CFLAGS = $(DIX_CFLAGS) AM_CFLAGS = $(DIX_CFLAGS)
if XORG
sdk_HEADERS = compositeext.h
endif
libcomposite_la_SOURCES = \ libcomposite_la_SOURCES = \
compalloc.c \ compalloc.c \
compext.c \ compext.c \

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *
@ -45,6 +52,7 @@
#endif #endif
#include "compint.h" #include "compint.h"
#include "compositeext.h"
static int CompScreenPrivateKeyIndex; static int CompScreenPrivateKeyIndex;
DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKeyIndex; DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKeyIndex;

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *
@ -224,10 +231,6 @@ CompositeExtensionInit (void);
* compinit.c * compinit.c
*/ */
Bool
CompositeRegisterAlternateVisuals (ScreenPtr pScreen,
VisualID *vids, int nVisuals);
Bool Bool
compScreenInit (ScreenPtr pScreen); compScreenInit (ScreenPtr pScreen);

38
composite/compositeext.h Normal file
View File

@ -0,0 +1,38 @@
/*
* Copyright © 2009 NVIDIA Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _COMPOSITEEXT_H_
#define _COMPOSITEEXT_H_
#include "misc.h"
#include "scrnintstr.h"
extern _X_EXPORT Bool CompositeRegisterAlternateVisuals(ScreenPtr pScreen,
VisualID *vids,
int nVisuals);
#endif /* _COMPOSITEEXT_H_ */

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *

View File

@ -1,23 +1,30 @@
/* /*
* Copyright © 2006 Sun Microsystems * Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission is hereby granted, free of charge, to any person obtaining a
* documentation for any purpose is hereby granted without fee, provided that * copy of this software and associated documentation files (the
* the above copyright notice appear in all copies and that both that * "Software"), to deal in the Software without restriction, including
* copyright notice and this permission notice appear in supporting * without limitation the rights to use, copy, modify, merge, publish,
* documentation, and that the name of Sun Microsystems not be used in * distribute, and/or sell copies of the Software, and to permit persons
* advertising or publicity pertaining to distribution of the software without * to whom the Software is furnished to do so, provided that the above
* specific, written prior permission. Sun Microsystems makes no * copyright notice(s) and this permission notice appear in all copies of
* representations about the suitability of this software for any purpose. It * the Software and that both the above copyright notice(s) and this
* is provided "as is" without express or implied warranty. * permission notice appear in supporting documentation.
* *
* SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* PERFORMANCE OF THIS SOFTWARE. * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
* *
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *

View File

@ -493,12 +493,14 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
} }
if (!libhal_ctx_init(info->hal_ctx, &error)) { if (!libhal_ctx_init(info->hal_ctx, &error)) {
LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n", LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n",
error.name, error.message); error.name ? error.name : "unknown error",
error.message ? error.message : "null");
goto out_ctx; goto out_ctx;
} }
if (!libhal_device_property_watch_all(info->hal_ctx, &error)) { if (!libhal_device_property_watch_all(info->hal_ctx, &error)) {
LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n", LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n",
error.name, error.message); error.name ? error.name : "unknown error",
error.message ? error.message : "null");
goto out_ctx2; goto out_ctx2;
} }
libhal_ctx_set_device_added(info->hal_ctx, device_added); libhal_ctx_set_device_added(info->hal_ctx, device_added);
@ -518,7 +520,8 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
out_ctx2: out_ctx2:
if (!libhal_ctx_shutdown(info->hal_ctx, &error)) if (!libhal_ctx_shutdown(info->hal_ctx, &error))
LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n", LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
error.name, error.message); error.name ? error.name : "unknown error",
error.message ? error.message : "null");
out_ctx: out_ctx:
libhal_ctx_free(info->hal_ctx); libhal_ctx_free(info->hal_ctx);
out_err: out_err:

View File

@ -113,7 +113,7 @@ AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
AC_HEADER_DIRENT AC_HEADER_DIRENT
AC_HEADER_STDC AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h]) AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h stropts.h])
dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST AC_C_CONST
@ -222,7 +222,7 @@ AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT, 1, [Have the 'cbrt' function]))
AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h]) AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h])
dnl AGPGART headers dnl AGPGART headers
AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h], AGP=yes) AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
AM_CONDITIONAL(AGP, [test "x$AGP" = xyes]) AM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
dnl APM header dnl APM header
@ -440,8 +440,8 @@ AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
[Enable debugging (default: disabled)]), [Enable debugging (default: disabled)]),
[DEBUGGING=$enableval], [DEBUGGING=no]) [DEBUGGING=$enableval], [DEBUGGING=no])
AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests],
[Enable unit-tests (default: enabled)]), [Enable unit-tests (default: auto)]),
[UNITTESTS=$enableval], [UNITTESTS=yes]) [UNITTESTS=$enableval], [UNITTESTS=auto])
AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]), AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
[INT10="$withval"], [INT10="$withval"],
[INT10="$DEFAULT_INT10"]) [INT10="$DEFAULT_INT10"])
@ -889,7 +889,7 @@ if test "x$DRI" = xyes; then
AC_SUBST(DRIPROTO_CFLAGS) AC_SUBST(DRIPROTO_CFLAGS)
fi fi
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= 1.99.3], PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= 2.1],
[HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no]) [HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no])
case "$DRI2,$HAVE_DRI2PROTO" in case "$DRI2,$HAVE_DRI2PROTO" in
yes,no) yes,no)
@ -1144,6 +1144,9 @@ if test "x$DEBUGGING" = xyes; then
fi fi
AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes]) AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
if test "x$UNITTESTS" = xauto; then
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.16], [UNITTESTS=yes], [UNITTESTS=no])
fi
if test "x$UNITTESTS" = xyes; then if test "x$UNITTESTS" = xyes; then
AC_DEFINE(UNITTESTS, 1, [Enable unit tests]) AC_DEFINE(UNITTESTS, 1, [Enable unit tests])
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.16]) PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.16])
@ -1843,7 +1846,7 @@ if test "$KDRIVE" = yes; then
;; ;;
esac esac
KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.la' KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.la'
KDRIVE_LOCAL_LIBS="$DIX_LIB $MAIN_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB $CONFIG_LIB" KDRIVE_LOCAL_LIBS="$MAIN_LIB $DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB $CONFIG_LIB"
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS" KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB $OS_LIB" KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB $OS_LIB"
KDRIVE_LIBS="$TSLIB_LIBS $KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS" KDRIVE_LIBS="$TSLIB_LIBS $KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS"

View File

@ -58,11 +58,10 @@ typedef struct _DamageExt {
} DamageExtRec, *DamageExtPtr; } DamageExtRec, *DamageExtPtr;
#define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \ #define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \
pDamageExt = SecurityLookupIDByType (client, rid, DamageExtType, mode); \ int rc = dixLookupResourceByType((pointer *)&(pDamageExt), rid, \
if (!pDamageExt) { \ DamageExtType, client, mode); \
client->errorValue = rid; \ if (rc != Success) \
return DamageErrorBase + BadDamage; \ return (rc == BadValue) ? DamageErrorBase + BadDamage : rc; \
} \
} }
void void

View File

@ -411,20 +411,23 @@ ProcDbeDeallocateBackBufferName(ClientPtr client)
{ {
REQUEST(xDbeDeallocateBackBufferNameReq); REQUEST(xDbeDeallocateBackBufferNameReq);
DbeWindowPrivPtr pDbeWindowPriv; DbeWindowPrivPtr pDbeWindowPriv;
int i; int rc, i;
pointer val;
REQUEST_SIZE_MATCH(xDbeDeallocateBackBufferNameReq); REQUEST_SIZE_MATCH(xDbeDeallocateBackBufferNameReq);
/* Buffer name must be valid */ /* Buffer name must be valid */
if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, rc = dixLookupResourceByType((pointer *)&pDbeWindowPriv, stuff->buffer,
stuff->buffer, dbeWindowPrivResType, DixDestroyAccess)) || dbeWindowPrivResType, client,
!(SecurityLookupIDByType(client, stuff->buffer, dbeDrawableResType, DixDestroyAccess);
DixDestroyAccess))) if (rc != Success)
{ return (rc == BadValue) ? dbeErrorBase + DbeBadBuffer : rc;
client->errorValue = stuff->buffer;
return(dbeErrorBase + DbeBadBuffer); rc = dixLookupResourceByType(&val, stuff->buffer, dbeDrawableResType,
} client, DixDestroyAccess);
if (rc != Success)
return (rc == BadValue) ? dbeErrorBase + DbeBadBuffer : rc;
/* Make sure that the id is valid for the window. /* Make sure that the id is valid for the window.
* This is paranoid code since we already looked up the ID by type * This is paranoid code since we already looked up the ID by type
@ -833,19 +836,21 @@ ProcDbeGetBackBufferAttributes(ClientPtr client)
REQUEST(xDbeGetBackBufferAttributesReq); REQUEST(xDbeGetBackBufferAttributesReq);
xDbeGetBackBufferAttributesReply rep; xDbeGetBackBufferAttributesReply rep;
DbeWindowPrivPtr pDbeWindowPriv; DbeWindowPrivPtr pDbeWindowPriv;
int n; int rc, n;
REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq); REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq);
if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, rc = dixLookupResourceByType((pointer *)&pDbeWindowPriv, stuff->buffer,
stuff->buffer, dbeWindowPrivResType, DixGetAttrAccess))) dbeWindowPrivResType, client,
DixGetAttrAccess);
if (rc == Success)
{ {
rep.attributes = None; rep.attributes = pDbeWindowPriv->pWindow->drawable.id;
} }
else else
{ {
rep.attributes = pDbeWindowPriv->pWindow->drawable.id; rep.attributes = None;
} }
rep.type = X_Reply; rep.type = X_Reply;

View File

@ -893,9 +893,9 @@ AllocColor (ColormapPtr pmap,
if (pmap->mid != pmap->pScreen->defColormap && if (pmap->mid != pmap->pScreen->defColormap &&
pmap->pVisual->vid == pmap->pScreen->rootVisual) pmap->pVisual->vid == pmap->pScreen->rootVisual)
{ {
ColormapPtr prootmap = (ColormapPtr) ColormapPtr prootmap;
SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&prootmap, pmap->pScreen->defColormap,
RT_COLORMAP, DixReadAccess); RT_COLORMAP, clients[client], DixReadAccess);
if (pmap->class == prootmap->class) if (pmap->class == prootmap->class)
FindColorInRootCmap (prootmap, prootmap->red, entries, &rgb, FindColorInRootCmap (prootmap, prootmap->red, entries, &rgb,
@ -910,9 +910,9 @@ AllocColor (ColormapPtr pmap,
if (pmap->mid != pmap->pScreen->defColormap && if (pmap->mid != pmap->pScreen->defColormap &&
pmap->pVisual->vid == pmap->pScreen->rootVisual) pmap->pVisual->vid == pmap->pScreen->rootVisual)
{ {
ColormapPtr prootmap = (ColormapPtr) ColormapPtr prootmap;
SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&prootmap, pmap->pScreen->defColormap,
RT_COLORMAP, DixReadAccess); RT_COLORMAP, clients[client], DixReadAccess);
if (pmap->class == prootmap->class) if (pmap->class == prootmap->class)
{ {
@ -1550,12 +1550,14 @@ FreePixels(ColormapPtr pmap, int client)
int int
FreeClientPixels (pointer value, XID fakeid) FreeClientPixels (pointer value, XID fakeid)
{ {
ColormapPtr pmap; pointer pmap;
colorResource *pcr = (colorResource *)value; colorResource *pcr = value;
int rc;
pmap = (ColormapPtr) LookupIDByType(pcr->mid, RT_COLORMAP); rc = dixLookupResourceByType(&pmap, pcr->mid, RT_COLORMAP, serverClient,
if (pmap) DixRemoveAccess);
FreePixels(pmap, pcr->client); if (rc == Success)
FreePixels((ColormapPtr)pmap, pcr->client);
xfree(pcr); xfree(pcr);
return Success; return Success;
} }

View File

@ -545,8 +545,9 @@ CreateRootCursor(char *unused1, unsigned int unused2)
if (err != Success) if (err != Success)
return NullCursor; return NullCursor;
cursorfont = (FontPtr)LookupIDByType(fontID, RT_FONT); err = dixLookupResourceByType((pointer *)&cursorfont, fontID, RT_FONT,
if (!cursorfont) serverClient, DixReadAccess);
if (err != Success)
return NullCursor; return NullCursor;
if (AllocGlyphCursor(fontID, 0, fontID, 1, 0, 0, 0, ~0, ~0, ~0, if (AllocGlyphCursor(fontID, 0, fontID, 1, 0, 0, 0, ~0, ~0, ~0,
&curs, serverClient, (XID)0) != Success) &curs, serverClient, (XID)0) != Success)

View File

@ -148,14 +148,18 @@ SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes,
pointer pointer
LookupIDByType(XID id, RESTYPE rtype) LookupIDByType(XID id, RESTYPE rtype)
{ {
return SecurityLookupIDByType(NullClient, id, rtype, DixUnknownAccess); pointer val;
dixLookupResourceByType(&val, id, rtype, NullClient, DixUnknownAccess);
return val;
} }
/* replaced by dixLookupResourceByClass */ /* replaced by dixLookupResourceByClass */
pointer pointer
LookupIDByClass(XID id, RESTYPE classes) LookupIDByClass(XID id, RESTYPE classes)
{ {
return SecurityLookupIDByClass(NullClient, id, classes, DixUnknownAccess); pointer val;
dixLookupResourceByClass(&val, id, classes, NullClient, DixUnknownAccess);
return val;
} }
/* replaced by dixLookupResourceBy{Type,Class} */ /* replaced by dixLookupResourceBy{Type,Class} */

View File

@ -413,12 +413,6 @@ Dispatch(void)
} }
client->sequence++; client->sequence++;
#ifdef DEBUG
if (client->requestLogIndex == MAX_REQUEST_LOG)
client->requestLogIndex = 0;
client->requestLog[client->requestLogIndex] = MAJOROP;
client->requestLogIndex++;
#endif
#ifdef XSERVER_DTRACE #ifdef XSERVER_DTRACE
XSERVER_REQUEST_START(LookupMajorName(MAJOROP), MAJOROP, XSERVER_REQUEST_START(LookupMajorName(MAJOROP), MAJOROP,
((xReq *)client->requestBuffer)->length, ((xReq *)client->requestBuffer)->length,
@ -1252,12 +1246,13 @@ int
ProcCloseFont(ClientPtr client) ProcCloseFont(ClientPtr client)
{ {
FontPtr pFont; FontPtr pFont;
int rc;
REQUEST(xResourceReq); REQUEST(xResourceReq);
REQUEST_SIZE_MATCH(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq);
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, rc = dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT,
DixDestroyAccess); client, DixDestroyAccess);
if ( pFont != (FontPtr)NULL) /* id was valid */ if (rc == Success)
{ {
FreeResource(stuff->id, RT_NONE); FreeResource(stuff->id, RT_NONE);
return(client->noClientException); return(client->noClientException);
@ -1265,7 +1260,7 @@ ProcCloseFont(ClientPtr client)
else else
{ {
client->errorValue = stuff->id; client->errorValue = stuff->id;
return (BadFont); return (rc == BadValue) ? BadFont : rc;
} }
} }

View File

@ -137,8 +137,9 @@ SetDefaultFont(char *defaultfontname)
(unsigned) strlen(defaultfontname), defaultfontname); (unsigned) strlen(defaultfontname), defaultfontname);
if (err != Success) if (err != Success)
return FALSE; return FALSE;
pf = (FontPtr) LookupIDByType(fid, RT_FONT); err = dixLookupResourceByType((pointer *)&pf, fid, RT_FONT, serverClient,
if (pf == (FontPtr) NULL) DixReadAccess);
if (err != Success)
return FALSE; return FALSE;
defaultFont = pf; defaultFont = pf;
return TRUE; return TRUE;
@ -1201,17 +1202,18 @@ doPolyText(ClientPtr client, PTclosurePtr c)
} }
/* Make sure our drawable hasn't disappeared while we slept. */ /* Make sure our drawable hasn't disappeared while we slept. */
if (c->slept && if (c->slept && c->pDraw)
c->pDraw &&
c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did,
RC_DRAWABLE, DixWriteAccess))
{ {
/* Our drawable has disappeared. Treat like client died... ask DrawablePtr pDraw;
the FPE code to clean up after client and avoid further dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess);
rendering while we clean up after ourself. */ if (c->pDraw != pDraw) {
fpe = c->pGC->font->fpe; /* Our drawable has disappeared. Treat like client died... ask
(*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); the FPE code to clean up after client and avoid further
c->pDraw = (DrawablePtr)0; rendering while we clean up after ourself. */
fpe = c->pGC->font->fpe;
(*fpe_functions[fpe->type].client_died) ((pointer) client, fpe);
c->pDraw = (DrawablePtr)0;
}
} }
client_state = c->slept ? SLEEPING : NEVER_SLEPT; client_state = c->slept ? SLEEPING : NEVER_SLEPT;
@ -1233,12 +1235,11 @@ doPolyText(ClientPtr client, PTclosurePtr c)
| ((Font)*(c->pElt+3)) << 8 | ((Font)*(c->pElt+3)) << 8
| ((Font)*(c->pElt+2)) << 16 | ((Font)*(c->pElt+2)) << 16
| ((Font)*(c->pElt+1)) << 24; | ((Font)*(c->pElt+1)) << 24;
pFont = (FontPtr)SecurityLookupIDByType(client, fid, RT_FONT, err = dixLookupResourceByType((pointer *)&pFont, fid, RT_FONT,
DixReadAccess); client, DixReadAccess);
if (!pFont) if (err != Success)
{ {
client->errorValue = fid; err = (err == BadValue) ? BadFont : err;
err = BadFont;
/* restore pFont and fid for step 4 (described below) */ /* restore pFont and fid for step 4 (described below) */
pFont = oldpFont; pFont = oldpFont;
fid = oldfid; fid = oldfid;
@ -1486,17 +1487,18 @@ doImageText(ClientPtr client, ITclosurePtr c)
} }
/* Make sure our drawable hasn't disappeared while we slept. */ /* Make sure our drawable hasn't disappeared while we slept. */
if (c->slept && if (c->slept && c->pDraw)
c->pDraw &&
c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did,
RC_DRAWABLE, DixWriteAccess))
{ {
/* Our drawable has disappeared. Treat like client died... ask DrawablePtr pDraw;
the FPE code to clean up after client. */ dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess);
fpe = c->pGC->font->fpe; if (c->pDraw != pDraw) {
(*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); /* Our drawable has disappeared. Treat like client died... ask
err = Success; the FPE code to clean up after client. */
goto bail; fpe = c->pGC->font->fpe;
(*fpe_functions[fpe->type].client_died) ((pointer) client, fpe);
err = Success;
goto bail;
}
} }
lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data); lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data);
@ -2013,8 +2015,9 @@ FreeFonts(void)
FontPtr FontPtr
find_old_font(XID id) find_old_font(XID id)
{ {
return (FontPtr) SecurityLookupIDByType(NullClient, id, RT_NONE, pointer pFont;
DixUnknownAccess); dixLookupResourceByType(&pFont, id, RT_NONE, serverClient, DixReadAccess);
return (FontPtr)pFont;
} }
Font Font

View File

@ -240,14 +240,9 @@ dixLookupWindow(WindowPtr *pWin, XID id, ClientPtr client, Mask access)
int int
dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access) dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access)
{ {
GCPtr pTmp = (GCPtr)SecurityLookupIDByType(client, id, RT_GC, access); int rc;
if (pTmp) { rc = dixLookupResourceByType((pointer *)pGC, id, RT_GC, client, access);
*pGC = pTmp; return (rc == BadValue) ? BadGC : rc;
return Success;
}
client->errorValue = id;
*pGC = NULL;
return BadGC;
} }
int int

View File

@ -583,16 +583,17 @@ XineramaSetWindowPntrs(DeviceIntPtr pDev, WindowPtr pWin)
PanoramiXNumScreens*sizeof(WindowPtr)); PanoramiXNumScreens*sizeof(WindowPtr));
} else { } else {
PanoramiXRes *win; PanoramiXRes *win;
int i; int rc, i;
win = (PanoramiXRes*)LookupIDByType(pWin->drawable.id, XRT_WINDOW); rc = dixLookupResourceByType((pointer *)&win, pWin->drawable.id,
XRT_WINDOW, serverClient, DixReadAccess);
if(!win) if (rc != Success)
return FALSE; return FALSE;
for(i = 0; i < PanoramiXNumScreens; i++) { for(i = 0; i < PanoramiXNumScreens; i++) {
pSprite->windows[i] = LookupIDByType(win->info[i].id, RT_WINDOW); rc = dixLookupWindow(pSprite->windows + i, win->info[i].id,
if(!pSprite->windows[i]) /* window is being unmapped */ serverClient, DixReadAccess);
if (rc != Success) /* window is being unmapped */
return FALSE; return FALSE;
} }
} }
@ -664,7 +665,7 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev,
void void
SetMaskForEvent(int deviceid, Mask mask, int event) SetMaskForEvent(int deviceid, Mask mask, int event)
{ {
if (deviceid < 0 || deviceid > MAXDEVICES) if (deviceid < 0 || deviceid >= MAXDEVICES)
FatalError("SetMaskForEvent: bogus device id"); FatalError("SetMaskForEvent: bogus device id");
filters[deviceid][event] = mask; filters[deviceid][event] = mask;
} }
@ -4246,8 +4247,7 @@ CoreEnterLeaveEvent(
if ((type == EnterNotify) && (mask & KeymapStateMask)) if ((type == EnterNotify) && (mask & KeymapStateMask))
{ {
xKeymapEvent ke; xKeymapEvent ke;
ClientPtr client = grab ? rClient(grab) ClientPtr client = grab ? rClient(grab) : wClient(pWin);
: clients[CLIENT_ID(pWin->drawable.id)];
if (XaceHook(XACE_DEVICE_ACCESS, client, keybd, DixReadAccess)) if (XaceHook(XACE_DEVICE_ACCESS, client, keybd, DixReadAccess))
bzero((char *)&ke.map[0], 31); bzero((char *)&ke.map[0], 31);
else else
@ -4354,11 +4354,11 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask)) ((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask))
{ {
xKeymapEvent ke; xKeymapEvent ke;
ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)]; ClientPtr client = wClient(pWin);
if (XaceHook(XACE_DEVICE_ACCESS, client, dev, FALSE)) if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess))
memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
else
bzero((char *)&ke.map[0], 31); bzero((char *)&ke.map[0], 31);
else
memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
ke.type = KeymapNotify; ke.type = KeymapNotify;
DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1, DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1,
@ -5425,7 +5425,7 @@ DeleteWindowFromAnyEvents(WindowPtr pWin, Bool freeResources)
to None to None
*/ */
#ifdef NOTDEF #ifdef NOTDEF
|| clients[CLIENT_ID(parent->drawable.id)]->clientGone || wClient(parent)->clientGone
#endif #endif
); );
if (!ActivateFocusInGrab(keybd, pWin, parent)) if (!ActivateFocusInGrab(keybd, pWin, parent))

View File

@ -77,9 +77,12 @@ GetAccelerationProfile(DeviceVelocityPtr s, int profile_num);
#endif #endif
/******************************** /********************************
* Init/Uninit etc * Init/Uninit
*******************************/ *******************************/
/* some int which is not a profile number */
#define PROFILE_UNINITIALIZE (-100)
/** /**
* Init struct so it should match the average case * Init struct so it should match the average case
*/ */
@ -108,7 +111,7 @@ InitVelocityData(DeviceVelocityPtr s)
static void static void
FreeVelocityData(DeviceVelocityPtr s){ FreeVelocityData(DeviceVelocityPtr s){
xfree(s->tracker); xfree(s->tracker);
SetAccelerationProfile(s, -1); SetAccelerationProfile(s, PROFILE_UNINITIALIZE);
} }
@ -824,6 +827,16 @@ LinearProfile(
} }
static float
NoProfile(
DeviceVelocityPtr pVel,
float velocity,
float threshold,
float acc)
{
return 1.0f;
}
static PointerAccelerationProfileFunc static PointerAccelerationProfileFunc
GetAccelerationProfile( GetAccelerationProfile(
DeviceVelocityPtr s, DeviceVelocityPtr s,
@ -844,8 +857,8 @@ GetAccelerationProfile(
return PowerProfile; return PowerProfile;
case AccelProfileLinear: case AccelProfileLinear:
return LinearProfile; return LinearProfile;
case AccelProfileReserved: case AccelProfileNone:
/* reserved for future use, e.g. a user-defined profile */ return NoProfile;
default: default:
return NULL; return NULL;
} }
@ -856,8 +869,10 @@ GetAccelerationProfile(
* Intended to make profiles exchangeable at runtime. * Intended to make profiles exchangeable at runtime.
* If you created a profile, give it a number here and in the header to * If you created a profile, give it a number here and in the header to
* make it selectable. In case some profile-specific init is needed, here * make it selectable. In case some profile-specific init is needed, here
* would be a good place, since FreeVelocityData() also calls this with -1. * would be a good place, since FreeVelocityData() also calls this with
* returns FALSE (0) if profile number is unavailable. * PROFILE_UNINITIALIZE.
*
* returns FALSE if profile number is unavailable, TRUE otherwise.
*/ */
int int
SetAccelerationProfile( SetAccelerationProfile(
@ -867,7 +882,7 @@ SetAccelerationProfile(
PointerAccelerationProfileFunc profile; PointerAccelerationProfileFunc profile;
profile = GetAccelerationProfile(s, profile_num); profile = GetAccelerationProfile(s, profile_num);
if(profile == NULL && profile_num != -1) if(profile == NULL && profile_num != PROFILE_UNINITIALIZE)
return FALSE; return FALSE;
if(s->profile_private != NULL){ if(s->profile_private != NULL){
@ -955,6 +970,11 @@ acceleratePointerPredictable(
if (!num_valuators || !valuators || !velocitydata) if (!num_valuators || !valuators || !velocitydata)
return; return;
if (velocitydata->statistics.profile_number == AccelProfileNone &&
velocitydata->const_acceleration == 1.0f) {
return; /*we're inactive anyway, so skip the whole thing.*/
}
if (first_valuator == 0) { if (first_valuator == 0) {
dx = valuators[0]; dx = valuators[0];
px = &valuators[0]; px = &valuators[0];
@ -988,7 +1008,7 @@ acceleratePointerPredictable(
/* Since it may not be apparent: lrintf() does not offer /* Since it may not be apparent: lrintf() does not offer
* strong statements about rounding; however because we * strong statements about rounding; however because we
* process each axis conditionally, there's no danger * process each axis conditionally, there's no danger
* of a toggling remainder. Its lack of guarantees hopefully * of a toggling remainder. Its lack of guarantees likely
* makes it faster on the average target. */ * makes it faster on the average target. */
*px = lrintf(tmp); *px = lrintf(tmp);
pDev->last.remainder[0] = tmp - (float)*px; pDev->last.remainder[0] = tmp - (float)*px;

View File

@ -392,13 +392,16 @@ unsigned int
GetXIDList(ClientPtr pClient, unsigned count, XID *pids) GetXIDList(ClientPtr pClient, unsigned count, XID *pids)
{ {
unsigned int found = 0; unsigned int found = 0;
XID id = pClient->clientAsMask; XID rc, id = pClient->clientAsMask;
XID maxid; XID maxid;
pointer val;
maxid = id | RESOURCE_ID_MASK; maxid = id | RESOURCE_ID_MASK;
while ( (found < count) && (id <= maxid) ) while ( (found < count) && (id <= maxid) )
{ {
if (!LookupIDByClass(id, RC_ANY)) rc = dixLookupResourceByClass(&val, id, RC_ANY, serverClient,
DixGetAttrAccess);
if (rc == BadValue)
{ {
pids[found++] = id; pids[found++] = id;
} }
@ -826,6 +829,8 @@ FreeAllResources(void)
Bool Bool
LegalNewID(XID id, ClientPtr client) LegalNewID(XID id, ClientPtr client)
{ {
pointer val;
int rc;
#ifdef PANORAMIX #ifdef PANORAMIX
XID minid, maxid; XID minid, maxid;
@ -838,9 +843,16 @@ LegalNewID(XID id, ClientPtr client)
return TRUE; return TRUE;
} }
#endif /* PANORAMIX */ #endif /* PANORAMIX */
return ((client->clientAsMask == (id & ~RESOURCE_ID_MASK)) && if (client->clientAsMask == (id & ~RESOURCE_ID_MASK))
((clientTable[client->index].expectID <= id) || {
!LookupIDByClass(id, RC_ANY))); if (clientTable[client->index].expectID <= id)
return TRUE;
rc = dixLookupResourceByClass(&val, id, RC_ANY, serverClient,
DixGetAttrAccess);
return (rc == BadValue);
}
return FALSE;
} }
int int

View File

@ -2,25 +2,24 @@
Copyright (c) 2006, Red Hat, Inc. Copyright (c) 2006, Red Hat, Inc.
Permission to use, copy, modify, distribute, and sell this software and its Permission is hereby granted, free of charge, to any person obtaining a
documentation for any purpose is hereby granted without fee, provided that copy of this software and associated documentation files (the "Software"),
the above copyright notice appear in all copies and that both that to deal in the Software without restriction, including without limitation
copyright notice and this permission notice appear in supporting the rights to use, copy, modify, merge, publish, distribute, sublicense,
documentation. and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in The above copyright notice and this permission notice (including the next
all copies or substantial portions of the Software. paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
RED HAT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Red Hat shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from Red Hat.
Copyright 1987, 1998 The Open Group Copyright 1987, 1998 The Open Group
@ -2775,6 +2774,7 @@ UnrealizeTree(
WindowPtr pChild; WindowPtr pChild;
UnrealizeWindowProcPtr Unrealize; UnrealizeWindowProcPtr Unrealize;
MarkUnrealizedWindowProcPtr MarkUnrealizedWindow; MarkUnrealizedWindowProcPtr MarkUnrealizedWindow;
int rc;
Unrealize = pWin->drawable.pScreen->UnrealizeWindow; Unrealize = pWin->drawable.pScreen->UnrealizeWindow;
MarkUnrealizedWindow = pWin->drawable.pScreen->MarkUnrealizedWindow; MarkUnrealizedWindow = pWin->drawable.pScreen->MarkUnrealizedWindow;
@ -2788,9 +2788,10 @@ UnrealizeTree(
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension && !pChild->drawable.pScreen->myNum) { if(!noPanoramiXExtension && !pChild->drawable.pScreen->myNum) {
PanoramiXRes *win; PanoramiXRes *win;
win = (PanoramiXRes*)LookupIDByType(pChild->drawable.id, rc = dixLookupResourceByType((pointer *)&win,
XRT_WINDOW); pChild->drawable.id, XRT_WINDOW,
if(win) serverClient, DixWriteAccess);
if (rc == Success)
win->u.win.visibility = VisibilityNotViewable; win->u.win.visibility = VisibilityNotViewable;
} }
#endif #endif
@ -3052,7 +3053,7 @@ SendVisibilityNotify(WindowPtr pWin)
if(!noPanoramiXExtension) { if(!noPanoramiXExtension) {
PanoramiXRes *win; PanoramiXRes *win;
WindowPtr pWin2; WindowPtr pWin2;
int i, Scrnum; int rc, i, Scrnum;
Scrnum = pWin->drawable.pScreen->myNum; Scrnum = pWin->drawable.pScreen->myNum;
@ -3066,9 +3067,10 @@ SendVisibilityNotify(WindowPtr pWin)
for(i = 0; i < PanoramiXNumScreens; i++) { for(i = 0; i < PanoramiXNumScreens; i++) {
if(i == Scrnum) continue; if(i == Scrnum) continue;
pWin2 = (WindowPtr)LookupIDByType(win->info[i].id, RT_WINDOW); rc = dixLookupWindow(&pWin2, win->info[i].id, serverClient,
DixWriteAccess);
if (pWin2) { if (rc == Success) {
if(pWin2->visibility == VisibilityPartiallyObscured) if(pWin2->visibility == VisibilityPartiallyObscured)
return; return;
@ -3078,17 +3080,19 @@ SendVisibilityNotify(WindowPtr pWin)
break; break;
case VisibilityPartiallyObscured: case VisibilityPartiallyObscured:
if(Scrnum) { if(Scrnum) {
pWin2 = (WindowPtr)LookupIDByType(win->info[0].id, RT_WINDOW); rc = dixLookupWindow(&pWin2, win->info[0].id, serverClient,
if (pWin2) pWin = pWin2; DixWriteAccess);
if (rc == Success) pWin = pWin2;
} }
break; break;
case VisibilityFullyObscured: case VisibilityFullyObscured:
for(i = 0; i < PanoramiXNumScreens; i++) { for(i = 0; i < PanoramiXNumScreens; i++) {
if(i == Scrnum) continue; if(i == Scrnum) continue;
pWin2 = (WindowPtr)LookupIDByType(win->info[i].id, RT_WINDOW); rc = dixLookupWindow(&pWin2, win->info[i].id, serverClient,
DixWriteAccess);
if (pWin2) { if (rc == Success) {
if(pWin2->visibility != VisibilityFullyObscured) if(pWin2->visibility != VisibilityFullyObscured)
return; return;
@ -3704,7 +3708,7 @@ DrawLogo(WindowPtr pWin)
int x, y; int x, y;
unsigned int width, height, size; unsigned int width, height, size;
GC *pGC; GC *pGC;
int thin, gap, d31; int rc, thin, gap, d31;
DDXPointRec poly[4]; DDXPointRec poly[4];
ChangeGCVal fore[2], back[2]; ChangeGCVal fore[2], back[2];
xrgb rgb[2]; xrgb rgb[2];
@ -3725,20 +3729,23 @@ DrawLogo(WindowPtr pWin)
fore[0].val = pScreen->whitePixel; fore[0].val = pScreen->whitePixel;
else else
fore[0].val = pScreen->blackPixel; fore[0].val = pScreen->blackPixel;
if ((pWin->backgroundState == BackgroundPixel) && if (pWin->backgroundState == BackgroundPixel) {
(cmap = (ColormapPtr)LookupIDByType(wColormap (pWin), RT_COLORMAP))) { rc = dixLookupResourceByType((pointer *)&cmap, wColormap(pWin),
Pixel querypixels[2]; RT_COLORMAP, serverClient, DixReadAccess);
if (rc == Success) {
Pixel querypixels[2];
querypixels[0] = fore[0].val; querypixels[0] = fore[0].val;
querypixels[1] = pWin->background.pixel; querypixels[1] = pWin->background.pixel;
QueryColors(cmap, 2, querypixels, rgb); QueryColors(cmap, 2, querypixels, rgb);
if ((rgb[0].red == rgb[1].red) && if ((rgb[0].red == rgb[1].red) &&
(rgb[0].green == rgb[1].green) && (rgb[0].green == rgb[1].green) &&
(rgb[0].blue == rgb[1].blue)) { (rgb[0].blue == rgb[1].blue)) {
if (fore[0].val == pScreen->blackPixel) if (fore[0].val == pScreen->blackPixel)
fore[0].val = pScreen->whitePixel; fore[0].val = pScreen->whitePixel;
else else
fore[0].val = pScreen->blackPixel; fore[0].val = pScreen->blackPixel;
}
} }
} }
fore[1].val = FillSolid; fore[1].val = FillSolid;

View File

@ -219,7 +219,7 @@ turns on auto-repeat.
starts the stipple with the classic stipple and cursor visible. The default starts the stipple with the classic stipple and cursor visible. The default
is to start with a black root window, and to suppress display of the cursor is to start with a black root window, and to suppress display of the cursor
until the first time an application calls XDefineCursor(). For the Xorg until the first time an application calls XDefineCursor(). For the Xorg
server, this also changes the default for the DontZap option to FALSE. For server, this also sets the default for the DontZap option to FALSE. For
kdrive servers, this implies -zap. kdrive servers, this implies -zap.
.TP 8 .TP 8
.B \-s \fIminutes\fP .B \-s \fIminutes\fP

View File

@ -1048,6 +1048,50 @@ exaCreateScreenResources(ScreenPtr pScreen)
return TRUE; return TRUE;
} }
static void
ExaBlockHandler(int screenNum, pointer blockData, pointer pTimeout,
pointer pReadmask)
{
ScreenPtr pScreen = screenInfo.screens[screenNum];
ExaScreenPriv(pScreen);
unwrap(pExaScr, pScreen, BlockHandler);
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
wrap(pExaScr, pScreen, BlockHandler, ExaBlockHandler);
/* Try and keep the offscreen memory area tidy every now and then (at most
* once per second) when the server has been idle for at least 100ms.
*/
if (pExaScr->numOffscreenAvailable > 1) {
CARD32 now = GetTimeInMillis();
pExaScr->nextDefragment = now +
max(100, (INT32)(pExaScr->lastDefragment + 1000 - now));
AdjustWaitForDelay(pTimeout, pExaScr->nextDefragment - now);
}
}
static void
ExaWakeupHandler(int screenNum, pointer wakeupData, unsigned long result,
pointer pReadmask)
{
ScreenPtr pScreen = screenInfo.screens[screenNum];
ExaScreenPriv(pScreen);
unwrap(pExaScr, pScreen, WakeupHandler);
(*pScreen->WakeupHandler) (screenNum, wakeupData, result, pReadmask);
wrap(pExaScr, pScreen, WakeupHandler, ExaWakeupHandler);
if (result == 0 && pExaScr->numOffscreenAvailable > 1) {
CARD32 now = GetTimeInMillis();
if ((int)(now - pExaScr->nextDefragment) > 0) {
ExaOffscreenDefragment(pScreen);
pExaScr->lastDefragment = now;
}
}
}
/** /**
* exaCloseScreen() unwraps its wrapped screen functions and tears down EXA's * exaCloseScreen() unwraps its wrapped screen functions and tears down EXA's
* screen private, before calling down to the next CloseSccreen. * screen private, before calling down to the next CloseSccreen.
@ -1063,6 +1107,10 @@ exaCloseScreen(int i, ScreenPtr pScreen)
if (ps->Glyphs == exaGlyphs) if (ps->Glyphs == exaGlyphs)
exaGlyphsFini(pScreen); exaGlyphsFini(pScreen);
if (pScreen->BlockHandler == ExaBlockHandler)
unwrap(pExaScr, pScreen, BlockHandler);
if (pScreen->WakeupHandler == ExaWakeupHandler)
unwrap(pExaScr, pScreen, WakeupHandler);
unwrap(pExaScr, pScreen, CreateGC); unwrap(pExaScr, pScreen, CreateGC);
unwrap(pExaScr, pScreen, CloseScreen); unwrap(pExaScr, pScreen, CloseScreen);
unwrap(pExaScr, pScreen, GetImage); unwrap(pExaScr, pScreen, GetImage);
@ -1223,6 +1271,11 @@ exaDriverInit (ScreenPtr pScreen,
/* /*
* Replace various fb screen functions * Replace various fb screen functions
*/ */
if ((pExaScr->info->flags & EXA_OFFSCREEN_PIXMAPS) &&
!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) {
wrap(pExaScr, pScreen, BlockHandler, ExaBlockHandler);
wrap(pExaScr, pScreen, WakeupHandler, ExaWakeupHandler);
}
wrap(pExaScr, pScreen, CreateGC, exaCreateGC); wrap(pExaScr, pScreen, CreateGC, exaCreateGC);
wrap(pExaScr, pScreen, CloseScreen, exaCloseScreen); wrap(pExaScr, pScreen, CloseScreen, exaCloseScreen);
wrap(pExaScr, pScreen, GetImage, exaGetImage); wrap(pExaScr, pScreen, GetImage, exaGetImage);

View File

@ -66,6 +66,9 @@ struct _ExaOffscreenArea {
ExaOffscreenArea *next; ExaOffscreenArea *next;
unsigned eviction_cost; unsigned eviction_cost;
ExaOffscreenArea *prev; /* Double-linked list for defragmentation */
int align; /* required alignment */
}; };
/** /**
@ -744,6 +747,16 @@ typedef struct _ExaDriver {
*/ */
#define EXA_SUPPORTS_PREPARE_AUX (1 << 4) #define EXA_SUPPORTS_PREPARE_AUX (1 << 4)
/**
* EXA_SUPPORTS_OFFSCREEN_OVERLAPS indicates to EXA that the driver Copy hooks
* can handle the source and destination occupying overlapping offscreen memory
* areas. This allows the offscreen memory defragmentation code to defragment
* areas where the defragmented position overlaps the fragmented position.
*
* Typically this is supported by traditional 2D engines but not by 3D engines.
*/
#define EXA_SUPPORTS_OFFSCREEN_OVERLAPS (1 << 5)
/** @} */ /** @} */
/* in exa.c */ /* in exa.c */

View File

@ -406,7 +406,8 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable,
xfree(rects); xfree(rects);
if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask, if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask,
pGC->fillStyle, pGC->alu)) { pGC->fillStyle, pGC->alu,
pGC->clientClipType)) {
dstregion = REGION_CREATE(pScreen, NullBox, 0); dstregion = REGION_CREATE(pScreen, NullBox, 0);
REGION_COPY(pScreen, dstregion, srcregion); REGION_COPY(pScreen, dstregion, srcregion);
REGION_TRANSLATE(pScreen, dstregion, dst_off_x - dx - src_off_x, REGION_TRANSLATE(pScreen, dstregion, dst_off_x - dx - src_off_x,
@ -734,7 +735,8 @@ exaPolySegment (DrawablePtr pDrawable, GCPtr pGC, int nseg,
} }
static Bool exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, static Bool exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion,
Pixel pixel, CARD32 planemask, CARD32 alu); Pixel pixel, CARD32 planemask, CARD32 alu,
unsigned int clientClipType);
static void static void
exaPolyFillRect(DrawablePtr pDrawable, exaPolyFillRect(DrawablePtr pDrawable,
@ -787,10 +789,11 @@ exaPolyFillRect(DrawablePtr pDrawable,
if (((pGC->fillStyle == FillSolid || pGC->tileIsPixel) && if (((pGC->fillStyle == FillSolid || pGC->tileIsPixel) &&
exaFillRegionSolid(pDrawable, pReg, pGC->fillStyle == FillSolid ? exaFillRegionSolid(pDrawable, pReg, pGC->fillStyle == FillSolid ?
pGC->fgPixel : pGC->tile.pixel, pGC->planemask, pGC->fgPixel : pGC->tile.pixel, pGC->planemask,
pGC->alu)) || pGC->alu, pGC->clientClipType)) ||
(pGC->fillStyle == FillTiled && !pGC->tileIsPixel && (pGC->fillStyle == FillTiled && !pGC->tileIsPixel &&
exaFillRegionTiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg, exaFillRegionTiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg,
pGC->planemask, pGC->alu))) { pGC->planemask, pGC->alu,
pGC->clientClipType))) {
goto out; goto out;
} }
} }
@ -952,11 +955,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
} }
static Bool static Bool
exaFillRegionSolid (DrawablePtr pDrawable, exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel,
RegionPtr pRegion, CARD32 planemask, CARD32 alu, unsigned int clientClipType)
Pixel pixel,
CARD32 planemask,
CARD32 alu)
{ {
ExaScreenPriv(pDrawable->pScreen); ExaScreenPriv(pDrawable->pScreen);
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable); PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
@ -969,7 +969,8 @@ exaFillRegionSolid (DrawablePtr pDrawable,
pixmaps[0].as_src = FALSE; pixmaps[0].as_src = FALSE;
pixmaps[0].pPix = pPixmap; pixmaps[0].pPix = pPixmap;
pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid, pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid,
alu) ? NULL : pRegion; alu, clientClipType)
? NULL : pRegion;
exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff); exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
REGION_TRANSLATE(pScreen, pRegion, xoff, yoff); REGION_TRANSLATE(pScreen, pRegion, xoff, yoff);
@ -1032,12 +1033,9 @@ out:
* Based on fbFillRegionTiled(), fbTile(). * Based on fbFillRegionTiled(), fbTile().
*/ */
Bool Bool
exaFillRegionTiled (DrawablePtr pDrawable, exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
RegionPtr pRegion, DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
PixmapPtr pTile, unsigned int clientClipType)
DDXPointPtr pPatOrg,
CARD32 planemask,
CARD32 alu)
{ {
ExaScreenPriv(pDrawable->pScreen); ExaScreenPriv(pDrawable->pScreen);
PixmapPtr pPixmap; PixmapPtr pPixmap;
@ -1060,13 +1058,14 @@ exaFillRegionTiled (DrawablePtr pDrawable,
if (tileWidth == 1 && tileHeight == 1) if (tileWidth == 1 && tileHeight == 1)
return exaFillRegionSolid(pDrawable, pRegion, return exaFillRegionSolid(pDrawable, pRegion,
exaGetPixmapFirstPixel (pTile), planemask, exaGetPixmapFirstPixel (pTile), planemask,
alu); alu, clientClipType);
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE; pixmaps[0].as_src = FALSE;
pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable); pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled, pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled,
alu) ? NULL : pRegion; alu, clientClipType)
? NULL : pRegion;
pixmaps[1].as_dst = FALSE; pixmaps[1].as_dst = FALSE;
pixmaps[1].as_src = TRUE; pixmaps[1].as_src = TRUE;
pixmaps[1].pPix = pTile; pixmaps[1].pPix = pTile;

View File

@ -354,8 +354,14 @@ exaGlyphCacheHashRemove(ExaGlyphCachePtr cache,
* is to use the UploadToScreen() driver hook; this allows us to * is to use the UploadToScreen() driver hook; this allows us to
* pipeline glyph uploads and to avoid creating offscreen pixmaps for * pipeline glyph uploads and to avoid creating offscreen pixmaps for
* glyphs that we'll never use again. * glyphs that we'll never use again.
*
* If we can't do it with UploadToScreen (because the glyph is offscreen, etc),
* we fall back to CompositePicture.
*
* We need to damage the cache pixmap manually in either case because the damage
* layer unwrapped the picture screen before calling exaGlyphs.
*/ */
static Bool static void
exaGlyphCacheUploadGlyph(ScreenPtr pScreen, exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
ExaGlyphCachePtr cache, ExaGlyphCachePtr cache,
int pos, int pos,
@ -369,16 +375,16 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
ExaMigrationRec pixmaps[1]; ExaMigrationRec pixmaps[1];
if (!pExaScr->info->UploadToScreen || pExaScr->swappedOut || pExaPixmap->accel_blocked) if (!pExaScr->info->UploadToScreen || pExaScr->swappedOut || pExaPixmap->accel_blocked)
return FALSE; goto composite;
/* If the glyph pixmap is already uploaded, no point in doing /* If the glyph pixmap is already uploaded, no point in doing
* things this way */ * things this way */
if (exaPixmapIsOffscreen(pGlyphPixmap)) if (exaPixmapIsOffscreen(pGlyphPixmap))
return FALSE; goto composite;
/* UploadToScreen only works if bpp match */ /* UploadToScreen only works if bpp match */
if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel) if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel)
return FALSE; goto composite;
/* cache pixmap must be offscreen. */ /* cache pixmap must be offscreen. */
pixmaps[0].as_dst = TRUE; pixmaps[0].as_dst = TRUE;
@ -388,26 +394,37 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
exaDoMigration (pixmaps, 1, TRUE); exaDoMigration (pixmaps, 1, TRUE);
if (!exaPixmapIsOffscreen(pCachePixmap)) if (!exaPixmapIsOffscreen(pCachePixmap))
return FALSE; goto composite;
/* CACHE_{X,Y} are in pixmap coordinates, no need for cache{X,Y}off */ /* CACHE_{X,Y} are in pixmap coordinates, no need for cache{X,Y}off */
if (!pExaScr->info->UploadToScreen(pCachePixmap, if (pExaScr->info->UploadToScreen(pCachePixmap,
CACHE_X(pos), CACHE_X(pos),
CACHE_Y(pos), CACHE_Y(pos),
pGlyph->info.width, pGlyph->info.width,
pGlyph->info.height, pGlyph->info.height,
(char *)pExaPixmap->sys_ptr, (char *)pExaPixmap->sys_ptr,
pExaPixmap->sys_pitch)) pExaPixmap->sys_pitch))
return FALSE; goto damage;
/* This pixmap should never be bound to a window, so no need to offset coordinates. */ composite:
CompositePicture (PictOpSrc,
pGlyphPicture,
None,
cache->picture,
0, 0,
0, 0,
CACHE_X(pos),
CACHE_Y(pos),
pGlyph->info.width,
pGlyph->info.height);
damage:
/* The cache pixmap isn't a window, so no need to offset coordinates. */
exaPixmapDirty (pCachePixmap, exaPixmapDirty (pCachePixmap,
CACHE_X(pos), CACHE_X(pos),
CACHE_Y(pos), CACHE_Y(pos),
CACHE_X(pos) + pGlyph->info.width, CACHE_X(pos) + cache->glyphWidth,
CACHE_Y(pos) + pGlyph->info.height); CACHE_Y(pos) + cache->glyphHeight);
return TRUE;
} }
static ExaGlyphCacheResult static ExaGlyphCacheResult
@ -483,23 +500,7 @@ exaGlyphCacheBufferGlyph(ScreenPtr pScreen,
cache->evictionPosition = rand() % cache->size; cache->evictionPosition = rand() % cache->size;
} }
/* Now actually upload the glyph into the cache picture; if exaGlyphCacheUploadGlyph(pScreen, cache, pos, pGlyph);
* we can't do it with UploadToScreen (because the glyph is
* offscreen, etc), we fall back to CompositePicture.
*/
if (!exaGlyphCacheUploadGlyph(pScreen, cache, pos, pGlyph)) {
CompositePicture (PictOpSrc,
GlyphPicture(pGlyph)[pScreen->myNum],
None,
cache->picture,
0, 0,
0, 0,
CACHE_X(pos),
CACHE_Y(pos),
pGlyph->info.width,
pGlyph->info.height);
}
} }
buffer->mask = cache->picture; buffer->mask = cache->picture;

View File

@ -93,7 +93,7 @@ exaFindAreaToEvict(ExaScreenPrivPtr pExaScr, int size, int align)
{ {
ExaOffscreenArea *begin, *end, *best; ExaOffscreenArea *begin, *end, *best;
unsigned cost, best_cost; unsigned cost, best_cost;
int avail, real_size, tmp; int avail, real_size;
best_cost = UINT_MAX; best_cost = UINT_MAX;
begin = end = pExaScr->info->offScreenAreas; begin = end = pExaScr->info->offScreenAreas;
@ -111,10 +111,7 @@ exaFindAreaToEvict(ExaScreenPrivPtr pExaScr, int size, int align)
break; break;
/* adjust size needed to account for alignment loss for this area */ /* adjust size needed to account for alignment loss for this area */
real_size = size; real_size = size + (begin->base_offset + begin->size - size) % align;
tmp = begin->base_offset % align;
if (tmp)
real_size += (align - tmp);
while (avail < real_size && end != NULL) while (avail < real_size && end != NULL)
{ {
@ -172,7 +169,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
{ {
ExaOffscreenArea *area; ExaOffscreenArea *area;
ExaScreenPriv (pScreen); ExaScreenPriv (pScreen);
int tmp, real_size = 0; int real_size = 0, free_total = 0, largest_avail = 0;
#if DEBUG_OFFSCREEN #if DEBUG_OFFSCREEN
static int number = 0; static int number = 0;
ErrorF("================= ============ allocating a new pixmap %d\n", ++number); ErrorF("================= ============ allocating a new pixmap %d\n", ++number);
@ -205,14 +202,37 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
continue; continue;
/* adjust size to match alignment requirement */ /* adjust size to match alignment requirement */
real_size = size; real_size = size + (area->base_offset + area->size - size) % align;
tmp = area->base_offset % align;
if (tmp)
real_size += (align - tmp);
/* does it fit? */ /* does it fit? */
if (real_size <= area->size) if (real_size <= area->size)
break; break;
free_total += area->size;
if (area->size > largest_avail)
largest_avail = area->size;
}
if (!area && free_total >= size) {
CARD32 now = GetTimeInMillis();
/* Don't defragment more than once per second, to avoid adding more
* overhead than we're trying to prevent
*/
if (abs((INT32) (now - pExaScr->lastDefragment)) > 1000) {
area = ExaOffscreenDefragment(pScreen);
pExaScr->lastDefragment = now;
if (area) {
/* adjust size to match alignment requirement */
real_size = size + (area->base_offset + area->size - size) % align;
/* does it fit? */
if (real_size > area->size)
area = NULL;
}
}
} }
if (!area) if (!area)
@ -228,10 +248,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
} }
/* adjust size needed to account for alignment loss for this area */ /* adjust size needed to account for alignment loss for this area */
real_size = size; real_size = size + (area->base_offset + area->size - size) % align;
tmp = area->base_offset % align;
if (tmp)
real_size += (align - tmp);
/* /*
* Kick out first area if in use * Kick out first area if in use
@ -254,17 +271,27 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
ExaOffscreenArea *new_area = xalloc (sizeof (ExaOffscreenArea)); ExaOffscreenArea *new_area = xalloc (sizeof (ExaOffscreenArea));
if (!new_area) if (!new_area)
return NULL; return NULL;
new_area->base_offset = area->base_offset + real_size; new_area->base_offset = area->base_offset;
new_area->offset = new_area->base_offset; new_area->offset = new_area->base_offset;
new_area->align = 0;
new_area->size = area->size - real_size; new_area->size = area->size - real_size;
new_area->state = ExaOffscreenAvail; new_area->state = ExaOffscreenAvail;
new_area->save = NULL; new_area->save = NULL;
new_area->last_use = 0; new_area->last_use = 0;
new_area->eviction_cost = 0; new_area->eviction_cost = 0;
new_area->next = area->next; new_area->next = area;
area->next = new_area; new_area->prev = area->prev;
if (area->prev->next)
area->prev->next = new_area;
else
pExaScr->info->offScreenAreas = new_area;
area->prev = new_area;
area->base_offset = new_area->base_offset + new_area->size;
area->size = real_size; area->size = real_size;
} } else
pExaScr->numOffscreenAvailable--;
/* /*
* Mark this area as in use * Mark this area as in use
*/ */
@ -277,6 +304,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
area->last_use = pExaScr->offScreenCounter++; area->last_use = pExaScr->offScreenCounter++;
area->offset = (area->base_offset + align - 1); area->offset = (area->base_offset + align - 1);
area->offset -= area->offset % align; area->offset -= area->offset % align;
area->align = align;
ExaOffscreenValidate (pScreen); ExaOffscreenValidate (pScreen);
@ -391,7 +419,7 @@ exaEnableDisableFBAccess (int index, Bool enable)
/* merge the next free area into this one */ /* merge the next free area into this one */
static void static void
ExaOffscreenMerge (ExaOffscreenArea *area) ExaOffscreenMerge (ExaScreenPrivPtr pExaScr, ExaOffscreenArea *area)
{ {
ExaOffscreenArea *next = area->next; ExaOffscreenArea *next = area->next;
@ -399,7 +427,13 @@ ExaOffscreenMerge (ExaOffscreenArea *area)
area->size += next->size; area->size += next->size;
/* frob pointer */ /* frob pointer */
area->next = next->next; area->next = next->next;
if (area->next)
area->next->prev = area;
else
pExaScr->info->offScreenAreas->prev = area;
xfree (next); xfree (next);
pExaScr->numOffscreenAvailable--;
} }
/** /**
@ -436,19 +470,19 @@ exaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area)
if (area == pExaScr->info->offScreenAreas) if (area == pExaScr->info->offScreenAreas)
prev = NULL; prev = NULL;
else else
for (prev = pExaScr->info->offScreenAreas; prev; prev = prev->next) prev = area->prev;
if (prev->next == area)
break; pExaScr->numOffscreenAvailable++;
/* link with next area if free */ /* link with next area if free */
if (next && next->state == ExaOffscreenAvail) if (next && next->state == ExaOffscreenAvail)
ExaOffscreenMerge (area); ExaOffscreenMerge (pExaScr, area);
/* link with prev area if free */ /* link with prev area if free */
if (prev && prev->state == ExaOffscreenAvail) if (prev && prev->state == ExaOffscreenAvail)
{ {
area = prev; area = prev;
ExaOffscreenMerge (area); ExaOffscreenMerge (pExaScr, area);
} }
ExaOffscreenValidate (pScreen); ExaOffscreenValidate (pScreen);
@ -468,6 +502,167 @@ ExaOffscreenMarkUsed (PixmapPtr pPixmap)
pExaPixmap->area->last_use = pExaScr->offScreenCounter++; pExaPixmap->area->last_use = pExaScr->offScreenCounter++;
} }
/**
* Defragment offscreen memory by compacting allocated areas at the end of it,
* leaving the total amount of memory available as a single area at the
* beginning (when there are no pinned allocations).
*/
_X_HIDDEN ExaOffscreenArea*
ExaOffscreenDefragment (ScreenPtr pScreen)
{
ExaScreenPriv (pScreen);
ExaOffscreenArea *area, *largest_available = NULL;
int largest_size = 0;
PixmapPtr pDstPix;
ExaPixmapPrivPtr pExaDstPix;
pDstPix = (*pScreen->CreatePixmap) (pScreen, 0, 0, 0, 0);
if (!pDstPix)
return NULL;
pExaDstPix = ExaGetPixmapPriv (pDstPix);
pExaDstPix->offscreen = TRUE;
for (area = pExaScr->info->offScreenAreas->prev;
area != pExaScr->info->offScreenAreas;
)
{
ExaOffscreenArea *prev = area->prev;
PixmapPtr pSrcPix;
ExaPixmapPrivPtr pExaSrcPix;
Bool save_offscreen;
int save_pitch;
if (area->state != ExaOffscreenAvail ||
prev->state == ExaOffscreenLocked ||
(prev->state == ExaOffscreenRemovable &&
prev->save != exaPixmapSave)) {
area = prev;
continue;
}
if (prev->state == ExaOffscreenAvail) {
if (area == largest_available) {
largest_available = prev;
largest_size += prev->size;
}
area = prev;
ExaOffscreenMerge (pExaScr, area);
continue;
}
if (area->size > largest_size) {
largest_available = area;
largest_size = area->size;
}
pSrcPix = prev->privData;
pExaSrcPix = ExaGetPixmapPriv (pSrcPix);
pExaDstPix->fb_ptr = pExaScr->info->memoryBase +
area->base_offset + area->size - prev->size + prev->base_offset -
prev->offset;
pExaDstPix->fb_ptr -= (unsigned long)pExaDstPix->fb_ptr % prev->align;
if (pExaDstPix->fb_ptr <= pExaSrcPix->fb_ptr) {
area = prev;
continue;
}
if (!(pExaScr->info->flags & EXA_SUPPORTS_OFFSCREEN_OVERLAPS) &&
(pExaSrcPix->fb_ptr + prev->size) > pExaDstPix->fb_ptr) {
area = prev;
continue;
}
save_offscreen = pExaSrcPix->offscreen;
save_pitch = pSrcPix->devKind;
pExaSrcPix->offscreen = TRUE;
pSrcPix->devKind = pExaSrcPix->fb_pitch;
pDstPix->drawable.width = pSrcPix->drawable.width;
pDstPix->devKind = pSrcPix->devKind;
pDstPix->drawable.height = pSrcPix->drawable.height;
pDstPix->drawable.depth = pSrcPix->drawable.depth;
pDstPix->drawable.bitsPerPixel = pSrcPix->drawable.bitsPerPixel;
if (!pExaScr->info->PrepareCopy (pSrcPix, pDstPix, -1, -1, GXcopy, ~0)) {
pExaSrcPix->offscreen = save_offscreen;
pSrcPix->devKind = save_pitch;
area = prev;
continue;
}
pExaScr->info->Copy (pDstPix, 0, 0, 0, 0, pDstPix->drawable.width,
pDstPix->drawable.height);
pExaScr->info->DoneCopy (pDstPix);
exaMarkSync (pScreen);
DBG_OFFSCREEN(("Before swap: prev=0x%08x-0x%08x-0x%08x area=0x%08x-0x%08x-0x%08x\n",
prev->base_offset, prev->offset, prev->base_offset + prev->size,
area->base_offset, area->offset, area->base_offset + area->size));
/* Calculate swapped area offsets and sizes */
area->base_offset = prev->base_offset;
area->offset = area->base_offset;
prev->offset += pExaDstPix->fb_ptr - pExaSrcPix->fb_ptr;
assert(prev->offset >= pExaScr->info->offScreenBase &&
prev->offset < pExaScr->info->memorySize);
prev->base_offset = prev->offset;
if (area->next)
prev->size = area->next->base_offset - prev->base_offset;
else
prev->size = pExaScr->info->memorySize - prev->base_offset;
area->size = prev->base_offset - area->base_offset;
DBG_OFFSCREEN(("After swap: area=0x%08x-0x%08x-0x%08x prev=0x%08x-0x%08x-0x%08x\n",
area->base_offset, area->offset, area->base_offset + area->size,
prev->base_offset, prev->offset, prev->base_offset + prev->size));
/* Swap areas in list */
if (area->next)
area->next->prev = prev;
else
pExaScr->info->offScreenAreas->prev = prev;
if (prev->prev->next)
prev->prev->next = area;
else
pExaScr->info->offScreenAreas = area;
prev->next = area->next;
area->next = prev;
area->prev = prev->prev;
prev->prev = area;
if (!area->prev->next)
pExaScr->info->offScreenAreas = area;
#if DEBUG_OFFSCREEN
if (prev->prev == prev || prev->next == prev)
ErrorF("Whoops, prev points to itself!\n");
if (area->prev == area || area->next == area)
ErrorF("Whoops, area points to itself!\n");
#endif
pExaSrcPix->fb_ptr = pExaDstPix->fb_ptr;
pExaSrcPix->offscreen = save_offscreen;
pSrcPix->devKind = save_pitch;
}
pDstPix->drawable.width = 0;
pDstPix->drawable.height = 0;
pDstPix->drawable.depth = 0;
pDstPix->drawable.bitsPerPixel = 0;
(*pScreen->DestroyPixmap) (pDstPix);
if (area->state == ExaOffscreenAvail && area->size > largest_size)
return area;
return largest_available;
}
/** /**
* exaOffscreenInit initializes the offscreen memory manager. * exaOffscreenInit initializes the offscreen memory manager.
* *
@ -491,15 +686,18 @@ exaOffscreenInit (ScreenPtr pScreen)
area->state = ExaOffscreenAvail; area->state = ExaOffscreenAvail;
area->base_offset = pExaScr->info->offScreenBase; area->base_offset = pExaScr->info->offScreenBase;
area->offset = area->base_offset; area->offset = area->base_offset;
area->align = 0;
area->size = pExaScr->info->memorySize - area->base_offset; area->size = pExaScr->info->memorySize - area->base_offset;
area->save = NULL; area->save = NULL;
area->next = NULL; area->next = NULL;
area->prev = area;
area->last_use = 0; area->last_use = 0;
area->eviction_cost = 0; area->eviction_cost = 0;
/* Add it to the free areas */ /* Add it to the free areas */
pExaScr->info->offScreenAreas = area; pExaScr->info->offScreenAreas = area;
pExaScr->offScreenCounter = 1; pExaScr->offScreenCounter = 1;
pExaScr->numOffscreenAvailable = 1;
ExaOffscreenValidate (pScreen); ExaOffscreenValidate (pScreen);

View File

@ -145,6 +145,8 @@ typedef struct {
typedef void (*EnableDisableFBAccessProcPtr)(int, Bool); typedef void (*EnableDisableFBAccessProcPtr)(int, Bool);
typedef struct { typedef struct {
ExaDriverPtr info; ExaDriverPtr info;
ScreenBlockHandlerProcPtr SavedBlockHandler;
ScreenWakeupHandlerProcPtr SavedWakeupHandler;
CreateGCProcPtr SavedCreateGC; CreateGCProcPtr SavedCreateGC;
CloseScreenProcPtr SavedCloseScreen; CloseScreenProcPtr SavedCloseScreen;
GetImageProcPtr SavedGetImage; GetImageProcPtr SavedGetImage;
@ -170,6 +172,9 @@ typedef struct {
unsigned disableFbCount; unsigned disableFbCount;
Bool optimize_migration; Bool optimize_migration;
unsigned offScreenCounter; unsigned offScreenCounter;
unsigned numOffscreenAvailable;
CARD32 lastDefragment;
CARD32 nextDefragment;
/* Store all accessed pixmaps, so we can check for duplicates. */ /* Store all accessed pixmaps, so we can check for duplicates. */
PixmapPtr prepare_access[6]; PixmapPtr prepare_access[6];
@ -415,11 +420,12 @@ ExaCheckAddTraps (PicturePtr pPicture,
static _X_INLINE Bool static _X_INLINE Bool
exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask, exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask,
unsigned int fillStyle, unsigned char alu) unsigned int fillStyle, unsigned char alu,
unsigned int clientClipType)
{ {
return ((alu != GXcopy && alu != GXclear &&alu != GXset && return ((alu != GXcopy && alu != GXclear && alu != GXset &&
alu != GXcopyInverted) || fillStyle == FillStippled || alu != GXcopyInverted) || fillStyle == FillStippled ||
!EXA_PM_IS_SOLID(pDrawable, planemask)); clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask));
} }
void void
@ -427,7 +433,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
Bool Bool
exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu); DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
unsigned int clientClipType);
void void
exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h, exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
@ -458,6 +465,9 @@ ExaOffscreenSwapOut (ScreenPtr pScreen);
void void
ExaOffscreenSwapIn (ScreenPtr pScreen); ExaOffscreenSwapIn (ScreenPtr pScreen);
ExaOffscreenArea*
ExaOffscreenDefragment (ScreenPtr pScreen);
Bool Bool
exaOffscreenInit(ScreenPtr pScreen); exaOffscreenInit(ScreenPtr pScreen);

View File

@ -945,7 +945,7 @@ exaComposite(CARD8 op,
ret = exaFillRegionTiled(pDst->pDrawable, &region, ret = exaFillRegionTiled(pDst->pDrawable, &region,
(PixmapPtr)pSrc->pDrawable, (PixmapPtr)pSrc->pDrawable,
&patOrg, FB_ALLONES, GXcopy); &patOrg, FB_ALLONES, GXcopy, CT_NONE);
REGION_UNINIT(pDst->pDrawable->pScreen, &region); REGION_UNINIT(pDst->pDrawable->pScreen, &region);

View File

@ -106,7 +106,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
EXA_GC_PROLOGUE(pGC); EXA_GC_PROLOGUE(pGC);
EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable))); EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable)));
if (exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle, if (exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle,
pGC->alu)) pGC->alu, pGC->clientClipType))
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
else else
exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pExaPixmap->pDamage ? exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pExaPixmap->pDamage ?

View File

@ -85,8 +85,10 @@ fbUninstallColormap(ColormapPtr pmap)
{ {
if (pmap->mid != pmap->pScreen->defColormap) if (pmap->mid != pmap->pScreen->defColormap)
{ {
curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&curpmap,
RT_COLORMAP); pmap->pScreen->defColormap,
RT_COLORMAP,
serverClient, DixInstallAccess);
(*pmap->pScreen->InstallColormap)(curpmap); (*pmap->pScreen->InstallColormap)(curpmap);
} }
} }

View File

@ -159,22 +159,9 @@ fbComposite (CARD8 op,
{ {
pixman_image_t *src, *mask, *dest; pixman_image_t *src, *mask, *dest;
xDst += pDst->pDrawable->x; miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height);
yDst += pDst->pDrawable->y;
if (pSrc->pDrawable)
{
xSrc += pSrc->pDrawable->x;
ySrc += pSrc->pDrawable->y;
}
if (pMask && pMask->pDrawable)
{
xMask += pMask->pDrawable->x;
yMask += pMask->pDrawable->y;
}
miCompositeSourceValidate (pSrc, xSrc, ySrc, width, height);
if (pMask) if (pMask)
miCompositeSourceValidate (pMask, xMask, yMask, width, height); miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
src = image_from_pict (pSrc, TRUE); src = image_from_pict (pSrc, TRUE);
mask = image_from_pict (pMask, TRUE); mask = image_from_pict (pMask, TRUE);
@ -292,7 +279,8 @@ create_bits_picture (PicturePtr pict,
fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff); fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
bits = (FbBits*)((CARD8*)bits + yoff * stride * sizeof(FbBits) + xoff * (bpp / 8)); bits = (FbBits*)((CARD8*)bits +
pict->pDrawable->y * stride * sizeof(FbBits) + pict->pDrawable->x * (bpp / 8));
image = pixman_image_create_bits ( image = pixman_image_create_bits (
pict->format, pict->format,
@ -321,8 +309,12 @@ create_bits_picture (PicturePtr pict,
{ {
if (pict->clientClipType != CT_NONE) if (pict->clientClipType != CT_NONE)
pixman_image_set_has_client_clip (image, TRUE); pixman_image_set_has_client_clip (image, TRUE);
pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
pixman_image_set_clip_region (image, pict->pCompositeClip); pixman_image_set_clip_region (image, pict->pCompositeClip);
pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
} }
/* Indexed table */ /* Indexed table */

View File

@ -799,8 +799,8 @@ int __glXDisp_WaitX(__GLXclientState *cl, GLbyte *pc)
return error; return error;
} }
if (glxc && glxc->drawPriv->waitGL) if (glxc && glxc->drawPriv->waitX)
(*glxc->drawPriv->waitGL)(glxc->drawPriv); (*glxc->drawPriv->waitX)(glxc->drawPriv);
return Success; return Success;
} }

View File

@ -406,7 +406,7 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
int *out_count, void *loaderPrivate) int *out_count, void *loaderPrivate)
{ {
__GLXDRIdrawable *private = loaderPrivate; __GLXDRIdrawable *private = loaderPrivate;
DRI2BufferPtr buffers; DRI2BufferPtr *buffers;
int i; int i;
int j; int j;
@ -427,15 +427,59 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
/* Do not send the real front buffer of a window to the client. /* Do not send the real front buffer of a window to the client.
*/ */
if ((private->base.pDraw->type == DRAWABLE_WINDOW) if ((private->base.pDraw->type == DRAWABLE_WINDOW)
&& (buffers[i].attachment == DRI2BufferFrontLeft)) { && (buffers[i]->attachment == DRI2BufferFrontLeft)) {
continue; continue;
} }
private->buffers[j].attachment = buffers[i].attachment; private->buffers[j].attachment = buffers[i]->attachment;
private->buffers[j].name = buffers[i].name; private->buffers[j].name = buffers[i]->name;
private->buffers[j].pitch = buffers[i].pitch; private->buffers[j].pitch = buffers[i]->pitch;
private->buffers[j].cpp = buffers[i].cpp; private->buffers[j].cpp = buffers[i]->cpp;
private->buffers[j].flags = buffers[i].flags; private->buffers[j].flags = buffers[i]->flags;
j++;
}
*out_count = j;
return private->buffers;
}
static __DRIbuffer *
dri2GetBuffersWithFormat(__DRIdrawable *driDrawable,
int *width, int *height,
unsigned int *attachments, int count,
int *out_count, void *loaderPrivate)
{
__GLXDRIdrawable *private = loaderPrivate;
DRI2BufferPtr *buffers;
int i;
int j = 0;
buffers = DRI2GetBuffersWithFormat(private->base.pDraw,
width, height, attachments, count,
out_count);
if (*out_count > MAX_DRAWABLE_BUFFERS) {
*out_count = 0;
return NULL;
}
private->width = *width;
private->height = *height;
/* This assumes the DRI2 buffer attachment tokens matches the
* __DRIbuffer tokens. */
for (i = 0; i < *out_count; i++) {
/* Do not send the real front buffer of a window to the client.
*/
if ((private->base.pDraw->type == DRAWABLE_WINDOW)
&& (buffers[i]->attachment == DRI2BufferFrontLeft)) {
continue;
}
private->buffers[j].attachment = buffers[i]->attachment;
private->buffers[j].name = buffers[i]->name;
private->buffers[j].pitch = buffers[i]->pitch;
private->buffers[j].cpp = buffers[i]->cpp;
private->buffers[j].flags = buffers[i]->flags;
j++; j++;
} }
@ -454,6 +498,7 @@ static const __DRIdri2LoaderExtension loaderExtension = {
{ __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION }, { __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION },
dri2GetBuffers, dri2GetBuffers,
dri2FlushFrontBuffer, dri2FlushFrontBuffer,
dri2GetBuffersWithFormat,
}; };
static const __DRIextension *loader_extensions[] = { static const __DRIextension *loader_extensions[] = {

View File

@ -36,6 +36,7 @@
#include "glxserver.h" #include "glxserver.h"
#include <windowstr.h> #include <windowstr.h>
#include <propertyst.h> #include <propertyst.h>
#include <registry.h>
#include "privates.h" #include "privates.h"
#include <os.h> #include <os.h>
#include "g_disptab.h" #include "g_disptab.h"
@ -126,6 +127,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
__GLXcontext *c; __GLXcontext *c;
for (c = glxAllContexts; c; c = c->next) { for (c = glxAllContexts; c; c = c->next) {
if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
(*c->loseCurrent)(c);
__glXFlushContextCache();
}
if (c->drawPriv == glxPriv) if (c->drawPriv == glxPriv)
c->drawPriv = NULL; c->drawPriv = NULL;
if (c->readPriv == glxPriv) if (c->readPriv == glxPriv)
@ -313,6 +318,10 @@ void GlxExtensionInit(void)
__glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone); __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone);
__glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone); __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
RegisterResourceName(__glXContextRes, "GLXContext");
RegisterResourceName(__glXDrawableRes, "GLXDrawable");
RegisterResourceName(__glXSwapBarrierRes, "GLXSwapBarrier");
if (!dixRequestPrivate(glxClientPrivateKey, sizeof (__GLXclientState))) if (!dixRequestPrivate(glxClientPrivateKey, sizeof (__GLXclientState)))
return; return;
if (!AddCallback (&ClientStateCallback, glxClientCallback, 0)) if (!AddCallback (&ClientStateCallback, glxClientCallback, 0))

View File

@ -217,7 +217,8 @@ KdUninstallColormap (ColormapPtr pCmap)
return; return;
/* install default if on same fb */ /* install default if on same fb */
defMap = (ColormapPtr) LookupIDByType(defMapID, RT_COLORMAP); dixLookupResourceByType((pointer *)&defMap, defMapID, RT_COLORMAP,
serverClient, DixInstallAccess);
if (defMap && KdColormapFb (defMap) == fb) if (defMap && KdColormapFb (defMap) == fb)
(*pCmap->pScreen->InstallColormap)(defMap); (*pCmap->pScreen->InstallColormap)(defMap);
else else

View File

@ -508,8 +508,10 @@ vfbUninstallColormap(ColormapPtr pmap)
{ {
if (pmap->mid != pmap->pScreen->defColormap) if (pmap->mid != pmap->pScreen->defColormap)
{ {
curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&curpmap,
RT_COLORMAP); pmap->pScreen->defColormap,
RT_COLORMAP, serverClient,
DixInstallAccess);
(*pmap->pScreen->InstallColormap)(curpmap); (*pmap->pScreen->InstallColormap)(curpmap);
} }
} }

View File

@ -357,7 +357,8 @@ static __inline__ void stw_u(unsigned long r5, unsigned short * r11)
# endif # endif
} }
# define write_mem_barrier() __asm__ __volatile__("wmb" : : : "memory") # define mem_barrier() __asm__ __volatile__("mb" : : : "memory")
# define write_mem_barrier() __asm__ __volatile__("wmb" : : : "memory")
# elif defined(linux) && defined(__ia64__) # elif defined(linux) && defined(__ia64__)

View File

@ -726,7 +726,7 @@ static OptionInfoRec FlagOptions[] = {
{ FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN, { FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN,
{0}, FALSE }, {0}, FALSE },
{ FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN, { FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
{0}, TRUE }, {0}, FALSE },
{ FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN, { FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
{0}, FALSE }, {0}, FALSE },
{ FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN, { FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
@ -834,8 +834,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals); xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch); xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
if (!xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap)) xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
xf86Info.dontZap = !party_like_its_1989;
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom); xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI); xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
@ -1227,7 +1226,7 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
const char **driver = mousedrivers; const char **driver = mousedrivers;
confInput = xf86findInput(CONF_IMPLICIT_POINTER, confInput = xf86findInput(CONF_IMPLICIT_POINTER,
xf86configptr->conf_input_lst); xf86configptr->conf_input_lst);
while (driver && !confInput) { while (*driver && !confInput) {
confInput = xf86findInputByDriver(*driver, confInput = xf86findInputByDriver(*driver,
xf86configptr->conf_input_lst); xf86configptr->conf_input_lst);
driver++; driver++;

View File

@ -917,11 +917,6 @@ Bool
xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma) xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma)
{ {
MessageType from = X_DEFAULT; MessageType from = X_DEFAULT;
/* Pretend we succeeded if we support better a gamma system.
* This avoids a confusing message.
*/
if (xf86_crtc_supports_gamma(scrp))
return TRUE;
#if 0 #if 0
xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC); xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC);
#endif #endif
@ -953,6 +948,11 @@ xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma)
scrp->gamma.green = 1.0; scrp->gamma.green = 1.0;
scrp->gamma.blue = 1.0; scrp->gamma.blue = 1.0;
} }
/* Pretend we succeeded if we support better a gamma system.
* This avoids a confusing message.
*/
if (xf86_crtc_supports_gamma(scrp))
return TRUE;
xf86DrvMsg(scrp->scrnIndex, from, xf86DrvMsg(scrp->scrnIndex, from,
"Using gamma correction (%.1f, %.1f, %.1f)\n", "Using gamma correction (%.1f, %.1f, %.1f)\n",
scrp->gamma.red, scrp->gamma.green, scrp->gamma.blue); scrp->gamma.red, scrp->gamma.green, scrp->gamma.blue);

View File

@ -211,8 +211,8 @@ Bool xf86HandleColormaps(
ComputeGamma(pScreenPriv); ComputeGamma(pScreenPriv);
/* get the default map */ /* get the default map */
dixLookupResourceByType((pointer *)&pDefMap, pScreen->defColormap,
pDefMap = (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP); RT_COLORMAP, serverClient, DixInstallAccess);
if(!CMapAllocateColormapPrivate(pDefMap)) { if(!CMapAllocateColormapPrivate(pDefMap)) {
CMapUnwrapScreen(pScreen); CMapUnwrapScreen(pScreen);

View File

@ -533,7 +533,7 @@ struct detailed_monitor_section {
struct whitePoints wp[2]; /* 32 */ struct whitePoints wp[2]; /* 32 */
/* color management data */ /* color management data */
struct cvt_timings cvt[4]; /* 64 */ struct cvt_timings cvt[4]; /* 64 */
/* established timings III */ Uchar est_iii[6]; /* 6 */
} section; /* max: 80 */ } section; /* max: 80 */
}; };

View File

@ -3,22 +3,23 @@
* Copyright 2007 Red Hat, Inc. * Copyright 2007 Red Hat, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software") * copy of this software and associated documentation files (the "Software"),
* to deal in the software without restriction, including without limitation * to deal in the Software without restriction, including without limitation
* on the rights to use, copy, modify, merge, publish, distribute, sub * the rights to use, copy, modify, merge, publish, distribute, sublicense,
* license, and/or sell copies of the Software, and to permit persons to whom * and/or sell copies of the Software, and to permit persons to whom the
* them Software is furnished to do so, subject to the following conditions: * Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice (including the next * The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the * paragraph) shall be included in all copies or substantial portions of the
* Software. * Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTIBILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF OR IN * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
* *
* interpret_edid.c: interpret a primary EDID block * interpret_edid.c: interpret a primary EDID block
*/ */
@ -284,6 +285,8 @@ get_std_timing_section(Uchar *c, struct std_timings *r,
} }
} }
static const unsigned char empty_block[18];
static void static void
get_dt_md_section(Uchar *c, struct edid_version *ver, get_dt_md_section(Uchar *c, struct edid_version *ver,
struct detailed_monitor_section *det_mon) struct detailed_monitor_section *det_mon)
@ -327,6 +330,7 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
break; break;
case ADD_EST_TIMINGS: case ADD_EST_TIMINGS:
det_mon[i].type = DS_EST_III; det_mon[i].type = DS_EST_III;
memcpy(det_mon[i].section.est_iii, c + 6, 6);
break; break;
case ADD_DUMMY: case ADD_DUMMY:
det_mon[i].type = DS_DUMMY; det_mon[i].type = DS_DUMMY;
@ -335,10 +339,10 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
det_mon[i].type = DS_UNKOWN; det_mon[i].type = DS_UNKOWN;
break; break;
} }
if (c[3] <= 0x0F) { if (c[3] <= 0x0F && memcmp(c, empty_block, sizeof(empty_block))) {
det_mon[i].type = DS_VENDOR + c[3]; det_mon[i].type = DS_VENDOR + c[3];
} }
} else { } else {
det_mon[i].type = DT; det_mon[i].type = DT;
get_detailed_timing_section(c,&det_mon[i].section.d_timings); get_detailed_timing_section(c,&det_mon[i].section.d_timings);
} }

View File

@ -3,22 +3,23 @@
* Copyright 2007 Red Hat, Inc. * Copyright 2007 Red Hat, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software") * copy of this software and associated documentation files (the "Software"),
* to deal in the software without restriction, including without limitation * to deal in the Software without restriction, including without limitation
* on the rights to use, copy, modify, merge, publish, distribute, sub * the rights to use, copy, modify, merge, publish, distribute, sublicense,
* license, and/or sell copies of the Software, and to permit persons to whom * and/or sell copies of the Software, and to permit persons to whom the
* them Software is furnished to do so, subject to the following conditions: * Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice (including the next * The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the * paragraph) shall be included in all copies or substantial portions of the
* Software. * Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTIBILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF OR IN * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
* *
* print_edid.c: print out all information retrieved from display device * print_edid.c: print out all information retrieved from display device
*/ */

View File

@ -420,6 +420,7 @@ static int
ProcXDGAInstallColormap(ClientPtr client) ProcXDGAInstallColormap(ClientPtr client)
{ {
ColormapPtr cmap; ColormapPtr cmap;
int rc;
REQUEST(xXDGAInstallColormapReq); REQUEST(xXDGAInstallColormapReq);
if (stuff->screen > screenInfo.numScreens) if (stuff->screen > screenInfo.numScreens)
@ -430,13 +431,13 @@ ProcXDGAInstallColormap(ClientPtr client)
REQUEST_SIZE_MATCH(xXDGAInstallColormapReq); REQUEST_SIZE_MATCH(xXDGAInstallColormapReq);
cmap = (ColormapPtr)LookupIDByType(stuff->cmap, RT_COLORMAP); rc = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, RT_COLORMAP,
if (cmap) { client, DixInstallAccess);
if (rc == Success) {
DGAInstallCmap(cmap); DGAInstallCmap(cmap);
return (client->noClientException); return (client->noClientException);
} else { } else {
client->errorValue = stuff->cmap; return (rc == BadValue) ? BadColor : rc;
return (BadColor);
} }
return (client->noClientException); return (client->noClientException);
@ -858,6 +859,7 @@ static int
ProcXF86DGAInstallColormap(ClientPtr client) ProcXF86DGAInstallColormap(ClientPtr client)
{ {
ColormapPtr pcmp; ColormapPtr pcmp;
int rc;
REQUEST(xXF86DGAInstallColormapReq); REQUEST(xXF86DGAInstallColormapReq);
if (stuff->screen > screenInfo.numScreens) if (stuff->screen > screenInfo.numScreens)
@ -871,13 +873,13 @@ ProcXF86DGAInstallColormap(ClientPtr client)
if (!DGAActive(stuff->screen)) if (!DGAActive(stuff->screen))
return (DGAErrorBase + XF86DGADirectNotActivated); return (DGAErrorBase + XF86DGADirectNotActivated);
pcmp = (ColormapPtr )LookupIDByType(stuff->id, RT_COLORMAP); rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP,
if (pcmp) { client, DixInstallAccess);
if (rc == Success) {
DGAInstallCmap(pcmp); DGAInstallCmap(pcmp);
return (client->noClientException); return (client->noClientException);
} else { } else {
client->errorValue = stuff->id; return (rc == BadValue) ? BadColor : rc;
return (BadColor);
} }
} }

View File

@ -1541,6 +1541,7 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
{ {
CARD16 *ramp = NULL; CARD16 *ramp = NULL;
int n, length, i; int n, length, i;
size_t ramplen;
xXF86VidModeGetGammaRampReply rep; xXF86VidModeGetGammaRampReply rep;
REQUEST(xXF86VidModeGetGammaRampReq); REQUEST(xXF86VidModeGetGammaRampReq);
@ -1555,7 +1556,8 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
length = (stuff->size + 1) & ~1; length = (stuff->size + 1) & ~1;
if(stuff->size) { if(stuff->size) {
if(!(ramp = xalloc(length * 3 * sizeof(CARD16)))) ramplen = length * 3 * sizeof(CARD16);
if (!(ramp = xalloc(ramplen)))
return BadAlloc; return BadAlloc;
if (!VidModeGetGammaRamp(stuff->screen, stuff->size, if (!VidModeGetGammaRamp(stuff->screen, stuff->size,
@ -1573,13 +1575,12 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n); swapl(&rep.length, n);
swaps(&rep.size, n); swaps(&rep.size, n);
for(i = 0; i < length * 3; i++) SwapShorts(ramp, length * 3);
swaps(&ramp[i],n);
} }
WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), (char *)&rep); WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), (char *)&rep);
if(stuff->size) { if(stuff->size) {
WriteToClient(client, rep.length << 2, (char*)ramp); WriteToClient(client, ramplen, (char*)ramp);
xfree(ramp); xfree(ramp);
} }
@ -2060,7 +2061,6 @@ SProcXF86VidModeGetGamma(ClientPtr client)
static int static int
SProcXF86VidModeSetGammaRamp(ClientPtr client) SProcXF86VidModeSetGammaRamp(ClientPtr client)
{ {
CARD16 *ramp;
int length, n; int length, n;
REQUEST(xXF86VidModeSetGammaRampReq); REQUEST(xXF86VidModeSetGammaRampReq);
swaps(&stuff->length, n); swaps(&stuff->length, n);
@ -2069,11 +2069,7 @@ SProcXF86VidModeSetGammaRamp(ClientPtr client)
swaps(&stuff->screen, n); swaps(&stuff->screen, n);
length = ((stuff->size + 1) & ~1) * 6; length = ((stuff->size + 1) & ~1) * 6;
REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length);
ramp = (CARD16*)&stuff[1]; SwapRestS(stuff);
while(length--) {
swaps(ramp, n);
ramp++;
}
return ProcXF86VidModeSetGammaRamp(client); return ProcXF86VidModeSetGammaRamp(client);
} }

View File

@ -464,12 +464,11 @@ Default: off.
.TP 7 .TP 7
.BI "Option \*qDontZap\*q \*q" boolean \*q .BI "Option \*qDontZap\*q \*q" boolean \*q
This disallows the use of the This disallows the use of the
.B Ctrl+Alt+Backspace .B Terminate_Server
sequence. XKB action (usually on Ctrl+Alt+Backspace, depending on XKB options).
That sequence is normally used to terminate the __xservername__ server. This action is normally used to terminate the __xservername__ server.
When this option is enabled (as per default), that key sequence has no When this option is enabled, the action has no effect.
special meaning. Default: off.
Default: on.
.TP 7 .TP 7
.BI "Option \*qDontZoom\*q \*q" boolean \*q .BI "Option \*qDontZoom\*q \*q" boolean \*q
This disallows the use of the This disallows the use of the

View File

@ -1363,11 +1363,12 @@ Bool
DRIDrawablePrivDelete(pointer pResource, XID id) DRIDrawablePrivDelete(pointer pResource, XID id)
{ {
WindowPtr pWin; WindowPtr pWin;
int rc;
id = (XID)pResource; id = (XID)pResource;
pWin = LookupIDByType(id, RT_WINDOW); rc = dixLookupWindow(&pWin, id, serverClient, DixGetAttrAccess);
if (pWin) { if (rc == Success) {
DRIDrawablePrivPtr pDRIDrwPriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin); DRIDrawablePrivPtr pDRIDrwPriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin);
if (!pDRIDrwPriv) if (!pDRIDrwPriv)

View File

@ -53,7 +53,7 @@ typedef struct _DRI2Drawable {
unsigned int refCount; unsigned int refCount;
int width; int width;
int height; int height;
DRI2BufferPtr buffers; DRI2BufferPtr *buffers;
int bufferCount; int bufferCount;
unsigned int pendingSequence; unsigned int pendingSequence;
} DRI2DrawableRec, *DRI2DrawablePtr; } DRI2DrawableRec, *DRI2DrawablePtr;
@ -63,8 +63,8 @@ typedef struct _DRI2Screen {
const char *deviceName; const char *deviceName;
int fd; int fd;
unsigned int lastSequence; unsigned int lastSequence;
DRI2CreateBuffersProcPtr CreateBuffers; DRI2CreateBufferProcPtr CreateBuffer;
DRI2DestroyBuffersProcPtr DestroyBuffers; DRI2DestroyBufferProcPtr DestroyBuffer;
DRI2CopyRegionProcPtr CopyRegion; DRI2CopyRegionProcPtr CopyRegion;
HandleExposuresProcPtr HandleExposures; HandleExposuresProcPtr HandleExposures;
@ -132,71 +132,135 @@ DRI2CreateDrawable(DrawablePtr pDraw)
return Success; return Success;
} }
DRI2BufferPtr static int
DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, find_attachment(DRI2BufferPtr *buffer_list, int count, unsigned attachment)
unsigned int *attachments, int count, int *out_count) {
int i;
if (buffer_list == NULL) {
return -1;
}
for (i = 0; i < count; i++) {
if ((buffer_list[i] != NULL)
&& (buffer_list[i]->attachment == attachment)) {
return i;
}
}
return -1;
}
static DRI2BufferPtr
allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds,
DRI2DrawablePtr pPriv,
unsigned int attachment, unsigned int format,
int dimensions_match)
{
DRI2BufferPtr buffer;
int old_buf;
old_buf = find_attachment(pPriv->buffers, pPriv->bufferCount, attachment);
if ((old_buf < 0)
|| !dimensions_match
|| (pPriv->buffers[old_buf]->format != format)) {
buffer = (*ds->CreateBuffer)(pDraw, attachment, format);
} else {
buffer = pPriv->buffers[old_buf];
pPriv->buffers[old_buf] = NULL;
}
return buffer;
}
static DRI2BufferPtr *
do_get_buffers(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count,
int has_format)
{ {
DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen);
DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw);
DRI2BufferPtr buffers; DRI2BufferPtr *buffers;
unsigned int temp_buf[32]; int need_real_front = 0;
unsigned int *temp = temp_buf; int need_fake_front = 0;
int have_fake_front = 0; int have_fake_front = 0;
int front_format = 0;
const int dimensions_match = (pDraw->width == pPriv->width)
&& (pDraw->height == pPriv->height);
int i;
/* If the drawable is a window and the front-buffer is requested, silently buffers = xalloc((count + 1) * sizeof(buffers[0]));
* add the fake front-buffer to the list of requested attachments. The
* counting logic in the loop accounts for the case where the client
* requests both the fake and real front-buffer.
*/
if (pDraw->type == DRAWABLE_WINDOW) {
int need_fake_front = 0;
int i;
if ((count + 1) > 32) { for (i = 0; i < count; i++) {
temp = xalloc((count + 1) * sizeof(temp[0])); const unsigned attachment = *(attachments++);
const unsigned format = (has_format) ? *(attachments++) : 0;
buffers[i] = allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment,
format, dimensions_match);
/* If the drawable is a window and the front-buffer is requested,
* silently add the fake front-buffer to the list of requested
* attachments. The counting logic in the loop accounts for the case
* where the client requests both the fake and real front-buffer.
*/
if (attachment == DRI2BufferBackLeft) {
need_real_front++;
front_format = format;
} }
for (i = 0; i < count; i++) { if (attachment == DRI2BufferFrontLeft) {
if (attachments[i] == DRI2BufferFrontLeft) { need_real_front--;
front_format = format;
if (pDraw->type == DRAWABLE_WINDOW) {
need_fake_front++; need_fake_front++;
} }
}
if (attachments[i] == DRI2BufferFakeFrontLeft) { if (pDraw->type == DRAWABLE_WINDOW) {
if (attachment == DRI2BufferFakeFrontLeft) {
need_fake_front--; need_fake_front--;
have_fake_front = 1; have_fake_front = 1;
} }
temp[i] = attachments[i];
}
if (need_fake_front > 0) {
temp[i] = DRI2BufferFakeFrontLeft;
count++;
have_fake_front = 1;
attachments = temp;
} }
} }
if (need_real_front > 0) {
if (pPriv->buffers == NULL || buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
pDraw->width != pPriv->width || pDraw->height != pPriv->height) DRI2BufferFrontLeft,
{ front_format, dimensions_match);
buffers = (*ds->CreateBuffers)(pDraw, attachments, count);
(*ds->DestroyBuffers)(pDraw, pPriv->buffers, pPriv->bufferCount);
pPriv->buffers = buffers;
pPriv->bufferCount = count;
pPriv->width = pDraw->width;
pPriv->height = pDraw->height;
} }
if (temp != temp_buf) { if (need_fake_front > 0) {
xfree(temp); buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
DRI2BufferFakeFrontLeft,
front_format, dimensions_match);
have_fake_front = 1;
} }
*out_count = i;
if (pPriv->buffers != NULL) {
for (i = 0; i < pPriv->bufferCount; i++) {
if (pPriv->buffers[i] != NULL) {
(*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
}
}
xfree(pPriv->buffers);
}
pPriv->buffers = buffers;
pPriv->bufferCount = *out_count;
pPriv->width = pDraw->width;
pPriv->height = pDraw->height;
*width = pPriv->width; *width = pPriv->width;
*height = pPriv->height; *height = pPriv->height;
*out_count = pPriv->bufferCount;
/* If the client is getting a fake front-buffer, pre-fill it with the /* If the client is getting a fake front-buffer, pre-fill it with the
@ -220,6 +284,22 @@ DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height,
return pPriv->buffers; return pPriv->buffers;
} }
DRI2BufferPtr *
DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count)
{
return do_get_buffers(pDraw, width, height, attachments, count,
out_count, FALSE);
}
DRI2BufferPtr *
DRI2GetBuffersWithFormat(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count)
{
return do_get_buffers(pDraw, width, height, attachments, count,
out_count, TRUE);
}
int int
DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion, DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion,
unsigned int dest, unsigned int src) unsigned int dest, unsigned int src)
@ -237,10 +317,10 @@ DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion,
pSrcBuffer = NULL; pSrcBuffer = NULL;
for (i = 0; i < pPriv->bufferCount; i++) for (i = 0; i < pPriv->bufferCount; i++)
{ {
if (pPriv->buffers[i].attachment == dest) if (pPriv->buffers[i]->attachment == dest)
pDestBuffer = &pPriv->buffers[i]; pDestBuffer = pPriv->buffers[i];
if (pPriv->buffers[i].attachment == src) if (pPriv->buffers[i]->attachment == src)
pSrcBuffer = &pPriv->buffers[i]; pSrcBuffer = pPriv->buffers[i];
} }
if (pSrcBuffer == NULL || pDestBuffer == NULL) if (pSrcBuffer == NULL || pDestBuffer == NULL)
return BadValue; return BadValue;
@ -266,7 +346,16 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
if (pPriv->refCount > 0) if (pPriv->refCount > 0)
return; return;
(*ds->DestroyBuffers)(pDraw, pPriv->buffers, pPriv->bufferCount); if (pPriv->buffers != NULL) {
int i;
for (i = 0; i < pPriv->bufferCount; i++) {
(*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
}
xfree(pPriv->buffers);
}
xfree(pPriv); xfree(pPriv);
if (pDraw->type == DRAWABLE_WINDOW) if (pDraw->type == DRAWABLE_WINDOW)
@ -320,11 +409,18 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
if (!ds) if (!ds)
return FALSE; return FALSE;
if ((info->version < 2)
|| (info->CreateBuffer == NULL)
|| (info->DestroyBuffer == NULL)) {
return FALSE;
}
ds->fd = info->fd; ds->fd = info->fd;
ds->driverName = info->driverName; ds->driverName = info->driverName;
ds->deviceName = info->deviceName; ds->deviceName = info->deviceName;
ds->CreateBuffers = info->CreateBuffers; ds->CreateBuffer = info->CreateBuffer;
ds->DestroyBuffers = info->DestroyBuffers; ds->DestroyBuffer = info->DestroyBuffer;
ds->CopyRegion = info->CopyRegion; ds->CopyRegion = info->CopyRegion;
dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, ds); dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, ds);
@ -371,7 +467,7 @@ static XF86ModuleVersionInfo DRI2VersRec =
MODINFOSTRING1, MODINFOSTRING1,
MODINFOSTRING2, MODINFOSTRING2,
XORG_VERSION_CURRENT, XORG_VERSION_CURRENT,
1, 0, 0, 1, 1, 0,
ABI_CLASS_EXTENSION, ABI_CLASS_EXTENSION,
ABI_EXTENSION_VERSION, ABI_EXTENSION_VERSION,
MOD_CLASS_NONE, MOD_CLASS_NONE,
@ -380,3 +476,12 @@ static XF86ModuleVersionInfo DRI2VersRec =
_X_EXPORT XF86ModuleData dri2ModuleData = { &DRI2VersRec, DRI2Setup, NULL }; _X_EXPORT XF86ModuleData dri2ModuleData = { &DRI2VersRec, DRI2Setup, NULL };
void
DRI2Version(int *major, int *minor)
{
if (major != NULL)
*major = DRI2VersRec.majorversion;
if (minor != NULL)
*minor = DRI2VersRec.minorversion;
}

View File

@ -41,6 +41,7 @@ typedef struct {
unsigned int pitch; unsigned int pitch;
unsigned int cpp; unsigned int cpp;
unsigned int flags; unsigned int flags;
unsigned int format;
void *driverPrivate; void *driverPrivate;
} DRI2BufferRec, *DRI2BufferPtr; } DRI2BufferRec, *DRI2BufferPtr;
@ -58,8 +59,19 @@ typedef void (*DRI2CopyRegionProcPtr)(DrawablePtr pDraw,
typedef void (*DRI2WaitProcPtr)(WindowPtr pWin, typedef void (*DRI2WaitProcPtr)(WindowPtr pWin,
unsigned int sequence); unsigned int sequence);
typedef DRI2BufferPtr (*DRI2CreateBufferProcPtr)(DrawablePtr pDraw,
unsigned int attachment,
unsigned int format);
typedef void (*DRI2DestroyBufferProcPtr)(DrawablePtr pDraw,
DRI2BufferPtr buffer);
/**
* Version of the DRI2InfoRec structure defined in this header
*/
#define DRI2INFOREC_VERSION 2
typedef struct { typedef struct {
unsigned int version; /* Version of this struct */ unsigned int version; /**< Version of this struct */
int fd; int fd;
const char *driverName; const char *driverName;
const char *deviceName; const char *deviceName;
@ -69,6 +81,14 @@ typedef struct {
DRI2CopyRegionProcPtr CopyRegion; DRI2CopyRegionProcPtr CopyRegion;
DRI2WaitProcPtr Wait; DRI2WaitProcPtr Wait;
/**
* \name Fields added in version 2 of the structure.
*/
/*@{*/
DRI2CreateBufferProcPtr CreateBuffer;
DRI2DestroyBufferProcPtr DestroyBuffer;
/*@}*/
} DRI2InfoRec, *DRI2InfoPtr; } DRI2InfoRec, *DRI2InfoPtr;
extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen, extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen,
@ -88,7 +108,7 @@ extern _X_EXPORT int DRI2CreateDrawable(DrawablePtr pDraw);
extern _X_EXPORT void DRI2DestroyDrawable(DrawablePtr pDraw); extern _X_EXPORT void DRI2DestroyDrawable(DrawablePtr pDraw);
extern _X_EXPORT DRI2BufferPtr DRI2GetBuffers(DrawablePtr pDraw, extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw,
int *width, int *width,
int *height, int *height,
unsigned int *attachments, unsigned int *attachments,
@ -100,4 +120,26 @@ extern _X_EXPORT int DRI2CopyRegion(DrawablePtr pDraw,
unsigned int dest, unsigned int dest,
unsigned int src); unsigned int src);
/**
* Determine the major and minor version of the DRI2 extension.
*
* Provides a mechanism to other modules (e.g., 2D drivers) to determine the
* version of the DRI2 extension. While it is possible to peek directly at
* the \c XF86ModuleData from a layered module, such a module will fail to
* load (due to an unresolved symbol) if the DRI2 extension is not loaded.
*
* \param major Location to store the major verion of the DRI2 extension
* \param minor Location to store the minor verion of the DRI2 extension
*
* \note
* This interface was added some time after the initial release of the DRI2
* module. Layered modules that wish to use this interface must first test
* its existance by calling \c xf86LoaderCheckSymbol.
*/
extern _X_EXPORT void DRI2Version(int *major, int *minor);
extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffersWithFormat(DrawablePtr pDraw,
int *width, int *height, unsigned int *attachments, int count,
int *out_count);
#endif #endif

View File

@ -80,7 +80,7 @@ ProcDRI2QueryVersion(ClientPtr client)
rep.length = 0; rep.length = 0;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.majorVersion = 1; rep.majorVersion = 1;
rep.minorVersion = 0; rep.minorVersion = 1;
if (client->swapped) { if (client->swapped) {
swaps(&rep.sequenceNumber, n); swaps(&rep.sequenceNumber, n);
@ -192,32 +192,20 @@ ProcDRI2DestroyDrawable(ClientPtr client)
return client->noClientException; return client->noClientException;
} }
static int
ProcDRI2GetBuffers(ClientPtr client) static void
send_buffers_reply(ClientPtr client, DrawablePtr pDrawable,
DRI2BufferPtr *buffers, int count, int width, int height)
{ {
REQUEST(xDRI2GetBuffersReq);
xDRI2GetBuffersReply rep; xDRI2GetBuffersReply rep;
DrawablePtr pDrawable; int skip = 0;
DRI2BufferPtr buffers; int i;
int i, status, width, height, count;
unsigned int *attachments;
xDRI2Buffer buffer;
int skip;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
return status;
attachments = (unsigned int *) &stuff[1];
buffers = DRI2GetBuffers(pDrawable, &width, &height,
attachments, stuff->count, &count);
skip = 0;
if (pDrawable->type == DRAWABLE_WINDOW) { if (pDrawable->type == DRAWABLE_WINDOW) {
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
/* Do not send the real front buffer of a window to the client. /* Do not send the real front buffer of a window to the client.
*/ */
if (buffers[i].attachment == DRI2BufferFrontLeft) { if (buffers[i]->attachment == DRI2BufferFrontLeft) {
skip++; skip++;
continue; continue;
} }
@ -233,20 +221,66 @@ ProcDRI2GetBuffers(ClientPtr client)
WriteToClient(client, sizeof(xDRI2GetBuffersReply), &rep); WriteToClient(client, sizeof(xDRI2GetBuffersReply), &rep);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
xDRI2Buffer buffer;
/* Do not send the real front buffer of a window to the client. /* Do not send the real front buffer of a window to the client.
*/ */
if ((pDrawable->type == DRAWABLE_WINDOW) if ((pDrawable->type == DRAWABLE_WINDOW)
&& (buffers[i].attachment == DRI2BufferFrontLeft)) { && (buffers[i]->attachment == DRI2BufferFrontLeft)) {
continue; continue;
} }
buffer.attachment = buffers[i].attachment; buffer.attachment = buffers[i]->attachment;
buffer.name = buffers[i].name; buffer.name = buffers[i]->name;
buffer.pitch = buffers[i].pitch; buffer.pitch = buffers[i]->pitch;
buffer.cpp = buffers[i].cpp; buffer.cpp = buffers[i]->cpp;
buffer.flags = buffers[i].flags; buffer.flags = buffers[i]->flags;
WriteToClient(client, sizeof(xDRI2Buffer), &buffer); WriteToClient(client, sizeof(xDRI2Buffer), &buffer);
} }
}
static int
ProcDRI2GetBuffers(ClientPtr client)
{
REQUEST(xDRI2GetBuffersReq);
DrawablePtr pDrawable;
DRI2BufferPtr *buffers;
int status, width, height, count;
unsigned int *attachments;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
return status;
attachments = (unsigned int *) &stuff[1];
buffers = DRI2GetBuffers(pDrawable, &width, &height,
attachments, stuff->count, &count);
send_buffers_reply(client, pDrawable, buffers, count, width, height);
return client->noClientException;
}
static int
ProcDRI2GetBuffersWithFormat(ClientPtr client)
{
REQUEST(xDRI2GetBuffersReq);
DrawablePtr pDrawable;
DRI2BufferPtr *buffers;
int status, width, height, count;
unsigned int *attachments;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * (2 * 4));
if (!validDrawable(client, stuff->drawable, &pDrawable, &status))
return status;
attachments = (unsigned int *) &stuff[1];
buffers = DRI2GetBuffersWithFormat(pDrawable, &width, &height,
attachments, stuff->count, &count);
send_buffers_reply(client, pDrawable, buffers, count, width, height);
return client->noClientException; return client->noClientException;
} }
@ -313,6 +347,8 @@ ProcDRI2Dispatch (ClientPtr client)
return ProcDRI2GetBuffers(client); return ProcDRI2GetBuffers(client);
case X_DRI2CopyRegion: case X_DRI2CopyRegion:
return ProcDRI2CopyRegion(client); return ProcDRI2CopyRegion(client);
case X_DRI2GetBuffersWithFormat:
return ProcDRI2GetBuffersWithFormat(client);
default: default:
return BadRequest; return BadRequest;
} }

View File

@ -223,7 +223,7 @@ LoaderOpen(const char *module, const char *cname, int handle,
* Find a free handle. * Find a free handle.
*/ */
new_handle = 1; new_handle = 1;
while (refCount[new_handle] && new_handle < MAX_HANDLE) while (new_handle < MAX_HANDLE && refCount[new_handle])
new_handle++; new_handle++;
if (new_handle == MAX_HANDLE) { if (new_handle == MAX_HANDLE) {

View File

@ -399,7 +399,7 @@ BEGIN {
sub(/[^a-zA-Z0-9_].*/, "", symbol); sub(/[^a-zA-Z0-9_].*/, "", symbol);
#print; #print;
printf(" &%s,\n", symbol); printf(" (void *) &%s,\n", symbol);
} }
} }

View File

@ -353,7 +353,7 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
} }
/* Only upload when needed, to avoid unneeded delays. */ /* Only upload when needed, to avoid unneeded delays. */
if (!crtc->active) if (crtc->active)
crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green, crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
crtc->gamma_blue, crtc->gamma_size); crtc->gamma_blue, crtc->gamma_size);
@ -2228,19 +2228,19 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
red[i] = i << 8; red[i] = i << 8;
else else
red[i] = (CARD16)(pow((double)i/(double)(size - 1), red[i] = (CARD16)(pow((double)i/(double)(size - 1),
(double)gamma_red) * (double)(size - 1) * 256); 1. / (double)gamma_red) * (double)(size - 1) * 256);
if (gamma_green == 1.0) if (gamma_green == 1.0)
green[i] = i << 8; green[i] = i << 8;
else else
green[i] = (CARD16)(pow((double)i/(double)(size - 1), green[i] = (CARD16)(pow((double)i/(double)(size - 1),
(double)gamma_green) * (double)(size - 1) * 256); 1. / (double)gamma_green) * (double)(size - 1) * 256);
if (gamma_blue == 1.0) if (gamma_blue == 1.0)
blue[i] = i << 8; blue[i] = i << 8;
else else
blue[i] = (CARD16)(pow((double)i/(double)(size - 1), blue[i] = (CARD16)(pow((double)i/(double)(size - 1),
(double)gamma_blue) * (double)(size - 1) * 256); 1. / (double)gamma_blue) * (double)(size - 1) * 256);
} }
/* Default size is 256, so anything else is failure. */ /* Default size is 256, so anything else is failure. */
@ -2549,18 +2549,23 @@ Bool
xf86SetDesiredModes (ScrnInfoPtr scrn) xf86SetDesiredModes (ScrnInfoPtr scrn)
{ {
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
xf86CrtcPtr crtc = config->crtc[0];
int c; int c;
xf86PrepareOutputs(scrn); /* A driver with this hook will take care of this */
xf86PrepareCrtcs(scrn); if (!crtc->funcs->set_mode_major) {
xf86PrepareOutputs(scrn);
xf86PrepareCrtcs(scrn);
}
for (c = 0; c < config->num_crtc; c++) for (c = 0; c < config->num_crtc; c++)
{ {
xf86CrtcPtr crtc = config->crtc[c];
xf86OutputPtr output = NULL; xf86OutputPtr output = NULL;
int o; int o;
RRTransformPtr transform; RRTransformPtr transform;
crtc = config->crtc[c];
/* Skip disabled CRTCs */ /* Skip disabled CRTCs */
if (!crtc->enabled) if (!crtc->enabled)
continue; continue;

View File

@ -160,6 +160,11 @@ static Bool quirk_detailed_v_in_cm (int scrnIndex, xf86MonPtr DDC)
DDC->vendor.prod_id == 47360) DDC->vendor.prod_id == 47360)
return TRUE; return TRUE;
/* Bug #21750: Samsung Syncmaster 2333HD */
if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
DDC->vendor.prod_id == 1157)
return TRUE;
return FALSE; return FALSE;
} }
@ -636,6 +641,85 @@ DDCModesFromCVT(int scrnIndex, struct cvt_timings *t)
} }
#endif #endif
static const struct {
short w;
short h;
short r;
short rb;
} EstIIIModes[] = {
/* byte 6 */
{ 640, 350, 85, 0 },
{ 640, 400, 85, 0 },
{ 720, 400, 85, 0 },
{ 640, 480, 85, 0 },
{ 848, 480, 60, 0 },
{ 800, 600, 85, 0 },
{ 1024, 768, 85, 0 },
{ 1152, 864, 75, 0 },
/* byte 7 */
{ 1280, 768, 60, 1 },
{ 1280, 768, 60, 0 },
{ 1280, 768, 75, 0 },
{ 1280, 768, 85, 0 },
{ 1280, 960, 60, 0 },
{ 1280, 960, 85, 0 },
{ 1280, 1024, 60, 0 },
{ 1280, 1024, 85, 0 },
/* byte 8 */
{ 1360, 768, 60, 0 },
{ 1440, 900, 60, 1 },
{ 1440, 900, 60, 0 },
{ 1440, 900, 75, 0 },
{ 1440, 900, 85, 0 },
{ 1400, 1050, 60, 1 },
{ 1400, 1050, 60, 0 },
{ 1400, 1050, 75, 0 },
/* byte 9 */
{ 1400, 1050, 85, 0 },
{ 1680, 1050, 60, 1 },
{ 1680, 1050, 60, 0 },
{ 1680, 1050, 75, 0 },
{ 1680, 1050, 85, 0 },
{ 1600, 1200, 60, 0 },
{ 1600, 1200, 65, 0 },
{ 1600, 1200, 70, 0 },
/* byte 10 */
{ 1600, 1200, 75, 0 },
{ 1600, 1200, 85, 0 },
{ 1792, 1344, 60, 0 },
{ 1792, 1344, 85, 0 },
{ 1856, 1392, 60, 0 },
{ 1856, 1392, 75, 0 },
{ 1920, 1200, 60, 1 },
{ 1920, 1200, 60, 0 },
/* byte 11 */
{ 1920, 1200, 75, 0 },
{ 1920, 1200, 85, 0 },
{ 1920, 1440, 60, 0 },
{ 1920, 1440, 75, 0 },
};
static DisplayModePtr
DDCModesFromEstIII(unsigned char *est)
{
DisplayModePtr modes = NULL;
int i, j, m;
for (i = 0; i < 6; i++) {
for (j = 7; j > 0; j--) {
if (est[i] & (1 << j)) {
m = (i * 8) + (7 - j);
modes = xf86ModesAdd(modes,
FindDMTMode(EstIIIModes[m].w,
EstIIIModes[m].h,
EstIIIModes[m].r,
EstIIIModes[m].rb));
}
}
}
return modes;
}
/* /*
* This is only valid when the sink claims to be continuous-frequency * This is only valid when the sink claims to be continuous-frequency
@ -806,6 +890,7 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
for (i = 0; i < DET_TIMINGS; i++) { for (i = 0; i < DET_TIMINGS; i++) {
struct detailed_monitor_section *det_mon = &DDC->det_mon[i]; struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
Mode = NULL;
switch (det_mon->type) { switch (det_mon->type) {
case DT: case DT:
Mode = DDCModeFromDetailedTiming(scrnIndex, Mode = DDCModeFromDetailedTiming(scrnIndex,
@ -813,22 +898,23 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
preferred, preferred,
quirks); quirks);
preferred = FALSE; preferred = FALSE;
Modes = xf86ModesAdd(Modes, Mode);
break; break;
case DS_STD_TIMINGS: case DS_STD_TIMINGS:
Mode = DDCModesFromStandardTiming(det_mon->section.std_t, Mode = DDCModesFromStandardTiming(det_mon->section.std_t,
quirks, timing_level, rb); quirks, timing_level, rb);
Modes = xf86ModesAdd(Modes, Mode);
break; break;
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0) #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
case DS_CVT: case DS_CVT:
Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt); Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt);
Modes = xf86ModesAdd(Modes, Mode);
break; break;
#endif #endif
case DS_EST_III:
Mode = DDCModesFromEstIII(det_mon->section.est_iii);
break;
default: default:
break; break;
} }
Modes = xf86ModesAdd(Modes, Mode);
} }
/* Add established timings */ /* Add established timings */

View File

@ -55,6 +55,13 @@ typedef struct _xf86RandR12Info {
int pointerY; int pointerY;
Rotation rotation; /* current mode */ Rotation rotation; /* current mode */
Rotation supported_rotations; /* driver supported */ Rotation supported_rotations; /* driver supported */
/* Used to wrap EnterVT so we can re-probe the outputs when a laptop unsuspends
* (actually, any time that we switch back into our VT).
*
* See https://bugs.freedesktop.org/show_bug.cgi?id=21554
*/
xf86EnterVTProc *orig_EnterVT;
} XF86RandRInfoRec, *XF86RandRInfoPtr; } XF86RandRInfoRec, *XF86RandRInfoPtr;
#ifdef RANDR_12_INTERFACE #ifdef RANDR_12_INTERFACE
@ -1703,7 +1710,7 @@ gamma_to_ramp(float gamma, CARD16 *ramp, int size)
if (gamma == 1.0) if (gamma == 1.0)
ramp[i] = i << 8; ramp[i] = i << 8;
else else
ramp[i] = (CARD16)(pow((double)i / (double)(size - 1), gamma) ramp[i] = (CARD16)(pow((double)i / (double)(size - 1), 1. / gamma)
* (double)(size - 1) * 256); * (double)(size - 1) * 256);
} }
} }
@ -1740,14 +1747,31 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
xfree(points); xfree(points);
pScrn->gamma = gamma;
return Success; return Success;
} }
static Bool
xf86RandR12EnterVT (int screen_index, int flags)
{
ScreenPtr pScreen = screenInfo.screens[screen_index];
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
if (randrp->orig_EnterVT) {
if (!randrp->orig_EnterVT (screen_index, flags))
return FALSE;
}
return RRGetInfo (pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */
}
static Bool static Bool
xf86RandR12Init12 (ScreenPtr pScreen) xf86RandR12Init12 (ScreenPtr pScreen)
{ {
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
rrScrPrivPtr rp = rrGetScrPriv(pScreen); rrScrPrivPtr rp = rrGetScrPriv(pScreen);
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
rp->rrGetInfo = xf86RandR12GetInfo12; rp->rrGetInfo = xf86RandR12GetInfo12;
rp->rrScreenSetSize = xf86RandR12ScreenSetSize; rp->rrScreenSetSize = xf86RandR12ScreenSetSize;
@ -1765,6 +1789,10 @@ xf86RandR12Init12 (ScreenPtr pScreen)
rp->rrSetConfig = NULL; rp->rrSetConfig = NULL;
pScrn->PointerMoved = xf86RandR12PointerMoved; pScrn->PointerMoved = xf86RandR12PointerMoved;
pScrn->ChangeGamma = xf86RandR12ChangeGamma; pScrn->ChangeGamma = xf86RandR12ChangeGamma;
randrp->orig_EnterVT = pScrn->EnterVT;
pScrn->EnterVT = xf86RandR12EnterVT;
if (!xf86RandR12CreateObjects12 (pScreen)) if (!xf86RandR12CreateObjects12 (pScreen))
return FALSE; return FALSE;

View File

@ -168,7 +168,8 @@
#endif /* !defined(DEBUGPCI) */ #endif /* !defined(DEBUGPCI) */
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
defined(__OpenBSD__) || defined(__NetBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GNU__) defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
#define ARCH_PCI_INIT bsdPciInit #define ARCH_PCI_INIT bsdPciInit
#endif #endif

View File

@ -63,6 +63,10 @@
# include "xf86_OSlib.h" # include "xf86_OSlib.h"
# include "inputstr.h" # include "inputstr.h"
#ifdef HAVE_STROPTS_H
# include <stropts.h>
#endif
/* /*
* Linux libc5 defines FASYNC, but not O_ASYNC. Don't know if it is * Linux libc5 defines FASYNC, but not O_ASYNC. Don't know if it is
* functional or not. * functional or not.
@ -139,6 +143,7 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
struct sigaction osa; struct sigaction osa;
int i; int i;
int blocked; int blocked;
int installed = FALSE;
for (i = 0; i < MAX_FUNCS; i++) for (i = 0; i < MAX_FUNCS; i++)
{ {
@ -147,15 +152,30 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
if (xf86IsPipe (fd)) if (xf86IsPipe (fd))
return 0; return 0;
blocked = xf86BlockSIGIO(); blocked = xf86BlockSIGIO();
#ifdef O_ASYNC
if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_ASYNC) == -1) { if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_ASYNC) == -1) {
xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n", xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n",
fd, strerror(errno)); fd, strerror(errno));
xf86UnblockSIGIO(blocked); } else {
return 0; if (fcntl(fd, F_SETOWN, getpid()) == -1) {
xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n",
fd, strerror(errno));
} else {
installed = TRUE;
}
} }
if (fcntl(fd, F_SETOWN, getpid()) == -1) { #endif
xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", #ifdef I_SETSIG /* System V Streams - used on Solaris for input devices */
fd, strerror(errno)); if (!installed && isastream(fd)) {
if (ioctl(fd, I_SETSIG, S_INPUT | S_ERROR | S_HANGUP) == -1) {
xf86Msg(X_WARNING, "fcntl(%d, I_SETSIG): %s\n",
fd, strerror(errno));
} else {
installed = TRUE;
}
}
#endif
if (!installed) {
xf86UnblockSIGIO(blocked); xf86UnblockSIGIO(blocked);
return 0; return 0;
} }
@ -221,7 +241,17 @@ xf86RemoveSIGIOHandler(int fd)
} }
if (ret) if (ret)
{ {
#ifdef O_ASYNC
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_ASYNC); fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_ASYNC);
#endif
#ifdef I_SETSIG
if (isastream(fd)) {
if (ioctl(fd, I_SETSIG, 0) == -1) {
xf86Msg(X_WARNING, "fcntl(%d, I_SETSIG, 0): %s\n",
fd, strerror(errno));
}
}
#endif
xf86SigIOMax = max; xf86SigIOMax = max;
xf86SigIOMaxFd = maxfd; xf86SigIOMaxFd = maxfd;
if (!max) if (!max)

View File

@ -43,7 +43,8 @@
/* Avoid Imakefile changes */ /* Avoid Imakefile changes */
#include "bus/Pci.h" #include "bus/Pci.h"
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
defined(__NetBSD__) || defined(__OpenBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GNU__) defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
#define xf86StdAccResFromOS xf86AccResFromOS #define xf86StdAccResFromOS xf86AccResFromOS
#endif #endif

View File

@ -4,12 +4,11 @@ else
VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
endif endif
# TODO: Don't build agpgart on SPARC if AGP
#if defined(i386Architecture) || defined(AMD64Architecture)
AGP_SRC = sun_agp.c AGP_SRC = sun_agp.c
#else else
#AGP_SRC = $(srcdir)/../shared/agp_noop.c AGP_SRC = $(srcdir)/../shared/agp_noop.c
#endif endif
SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
@ -21,13 +20,14 @@ noinst_LTLIBRARIES = libsolaris.la
libsolaris_la_SOURCES = sun_init.c \ libsolaris_la_SOURCES = sun_init.c \
sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \ sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
$(srcdir)/../shared/kmod_noop.c \ $(srcdir)/../shared/kmod_noop.c \
$(srcdir)/../shared/posix_tty.c $(srcdir)/../shared/sigiostubs.c \ $(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/sigio.c \
$(srcdir)/../shared/stdResource.c \ $(srcdir)/../shared/stdResource.c \
$(srcdir)/../shared/vidmem.c \ $(srcdir)/../shared/vidmem.c \
$(VTSW_SRC) $(VTSW_SRC)
nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC) nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
sdk_HEADERS = agpgart.h sdk_HEADERS =
nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il
AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS) AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)

View File

@ -1,108 +0,0 @@
/*
* AGPGART module version 0.99
* Copyright (C) 1999 Jeff Hartmann
* Copyright (C) 1999 Precision Insight, Inc.
* Copyright (C) 1999 Xi Graphics, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, and/or sell copies of the Software, and to permit persons
* to whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
*/
#ifndef _AGPGART_H
#define _AGPGART_H
#pragma ident "@(#)agpgart.h 1.1 05/04/04 SMI"
typedef struct _agp_version {
uint16_t agpv_major;
uint16_t agpv_minor;
} agp_version_t;
typedef struct _agp_info {
agp_version_t agpi_version;
uint32_t agpi_devid; /* bridge vendor + device */
uint32_t agpi_mode; /* mode of bridge */
ulong_t agpi_aperbase; /* base of aperture */
size_t agpi_apersize; /* aperture range size */
uint32_t agpi_pgtotal; /* max number of pages in aperture */
uint32_t agpi_pgsystem; /* same as pg_total */
uint32_t agpi_pgused; /* NUMBER of currently used pages */
} agp_info_t;
typedef struct _agp_setup {
uint32_t agps_mode;
} agp_setup_t;
typedef struct _agp_allocate {
int32_t agpa_key;
uint32_t agpa_pgcount;
uint32_t agpa_type;
uint32_t agpa_physical; /* for i810/830 driver */
} agp_allocate_t;
typedef struct _agp_bind {
int32_t agpb_key;
uint32_t agpb_pgstart;
} agp_bind_t;
typedef struct _agp_unbind {
int32_t agpu_key;
uint32_t agpu_pri; /* no use in solaris */
} agp_unbind_t;
#define AGPIOC_BASE 'G'
#define AGPIOC_INFO _IOR(AGPIOC_BASE, 0, 100)
#define AGPIOC_ACQUIRE _IO(AGPIOC_BASE, 1)
#define AGPIOC_RELEASE _IO(AGPIOC_BASE, 2)
#define AGPIOC_SETUP _IOW(AGPIOC_BASE, 3, agp_setup_t)
#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 4, agp_allocate_t)
#define AGPIOC_DEALLOCATE _IOW(AGPIOC_BASE, 5, int)
#define AGPIOC_BIND _IOW(AGPIOC_BASE, 6, agp_bind_t)
#define AGPIOC_UNBIND _IOW(AGPIOC_BASE, 7, agp_unbind_t)
#define AGP_DEVICE "/dev/agpgart"
#endif /* _AGPGART_H */

View File

@ -32,7 +32,7 @@
#define _ASM #define _ASM
#include <sys/asm_linkage.h> #include <sys/asm_linkage.h>
#define FUNCTION_START(f,n) ENTRY(f) #define FUNCTION_START(f,n) ENTRY(f)
#define FUNCTION_END(f) SET_SIZE(f) #define FUNCTION_END(f) ret; SET_SIZE(f)
#endif #endif
FUNCTION_START(inb,4) FUNCTION_START(inb,4)

View File

@ -32,7 +32,7 @@
#define _ASM #define _ASM
#include <sys/asm_linkage.h> #include <sys/asm_linkage.h>
#define FUNCTION_START(f,n) ENTRY(f) #define FUNCTION_START(f,n) ENTRY(f)
#define FUNCTION_END(f) SET_SIZE(f) #define FUNCTION_END(f) ret; SET_SIZE(f)
#endif #endif
FUNCTION_START(inb,4) FUNCTION_START(inb,4)

View File

@ -33,7 +33,7 @@
#define _ASM #define _ASM
#include <sys/asm_linkage.h> #include <sys/asm_linkage.h>
#define FUNCTION_START(f,n) ENTRY(f) #define FUNCTION_START(f,n) ENTRY(f)
#define FUNCTION_END(f) SET_SIZE(f) #define FUNCTION_END(f) retl; nop; SET_SIZE(f)
#endif #endif
/* Converted from common/compiler.h gcc inline format to Sun cc inline /* Converted from common/compiler.h gcc inline format to Sun cc inline

View File

@ -34,8 +34,6 @@
* of the copyright holder. * of the copyright holder.
*/ */
#pragma ident "@(#)sun_agp.c 1.1 05/04/04 SMI"
#ifdef HAVE_XORG_CONFIG_H #ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h> #include <xorg-config.h>
#endif #endif
@ -49,11 +47,8 @@
#include <sys/ioccom.h> #include <sys/ioccom.h>
#include <sys/types.h> #include <sys/types.h>
#include <fcntl.h> #include <fcntl.h>
#include "agpgart.h" #include <sys/agpgart.h>
#ifndef AGP_DEVICE
#define AGP_DEVICE "/dev/agpgart"
#endif
/* AGP page size is independent of the host page size. */ /* AGP page size is independent of the host page size. */
#ifndef AGP_PAGE_SIZE #ifndef AGP_PAGE_SIZE
#define AGP_PAGE_SIZE 4096 #define AGP_PAGE_SIZE 4096

View File

@ -277,8 +277,8 @@ vgaUninstallColormap(pmap)
if ( pmap != miInstalledMaps[pmap->pScreen->myNum] ) if ( pmap != miInstalledMaps[pmap->pScreen->myNum] )
return; return;
defColormap = (ColormapPtr) LookupIDByType( pmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&defColormap, pmap->pScreen->defColormap,
RT_COLORMAP); RT_COLORMAP, serverClient, DixInstallAccess);
if (defColormap == miInstalledMaps[pmap->pScreen->myNum]) if (defColormap == miInstalledMaps[pmap->pScreen->myNum])
return; return;

View File

@ -4,9 +4,9 @@
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation * to deal in the Software without restriction, including without limitation
* on the rights to use, copy, modify, merge, publish, distribute, sub * the rights to use, copy, modify, merge, publish, distribute, sublicense,
* license, and/or sell copies of the Software, and to permit persons to whom * and/or sell copies of the Software, and to permit persons to whom the
* the Software is furnished to do so, subject to the following conditions: * Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice (including the next * The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the * paragraph) shall be included in all copies or substantial portions of the
@ -14,10 +14,11 @@
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
#ifndef _CFB8_16_H #ifndef _CFB8_16_H

View File

@ -4,9 +4,9 @@
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation * to deal in the Software without restriction, including without limitation
* on the rights to use, copy, modify, merge, publish, distribute, sub * the rights to use, copy, modify, merge, publish, distribute, sublicense,
* license, and/or sell copies of the Software, and to permit persons to whom * and/or sell copies of the Software, and to permit persons to whom the
* the Software is furnished to do so, subject to the following conditions: * Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice (including the next * The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the * paragraph) shall be included in all copies or substantial portions of the
@ -14,10 +14,11 @@
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
#ifdef HAVE_XORG_CONFIG_H #ifdef HAVE_XORG_CONFIG_H

View File

@ -242,16 +242,16 @@ xnestSetInstalledColormapWindows(ScreenPtr pScreen)
WindowPtr pWin; WindowPtr pWin;
Visual *visual; Visual *visual;
ColormapPtr pCmap; ColormapPtr pCmap;
pWin = xnestWindowPtr(icws.windows[0]); pWin = xnestWindowPtr(icws.windows[0]);
visual = xnestVisualFromID(pScreen, wVisual(pWin)); visual = xnestVisualFromID(pScreen, wVisual(pWin));
if (visual == xnestDefaultVisual(pScreen)) if (visual == xnestDefaultVisual(pScreen))
pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin),
RT_COLORMAP); RT_COLORMAP, serverClient, DixUseAccess);
else else
pCmap = (ColormapPtr)LookupIDByType(pScreen->defColormap, dixLookupResourceByType((pointer *)&pCmap, pScreen->defColormap,
RT_COLORMAP); RT_COLORMAP, serverClient, DixUseAccess);
XSetWindowColormap(xnestDisplay, XSetWindowColormap(xnestDisplay,
xnestDefaultWindows[pScreen->myNum], xnestDefaultWindows[pScreen->myNum],
@ -302,7 +302,8 @@ xnestDirectInstallColormaps(ScreenPtr pScreen)
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
ColormapPtr pCmap; ColormapPtr pCmap;
pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP); dixLookupResourceByType((pointer *)&pCmap, pCmapIDs[i], RT_COLORMAP,
serverClient, DixInstallAccess);
if (pCmap) if (pCmap)
XInstallColormap(xnestDisplay, xnestColormap(pCmap)); XInstallColormap(xnestDisplay, xnestColormap(pCmap));
} }
@ -321,7 +322,8 @@ xnestDirectUninstallColormaps(ScreenPtr pScreen)
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
ColormapPtr pCmap; ColormapPtr pCmap;
pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP); dixLookupResourceByType((pointer *)&pCmap, pCmapIDs[i], RT_COLORMAP,
serverClient, DixUninstallAccess);
if (pCmap) if (pCmap)
XUninstallColormap(xnestDisplay, xnestColormap(pCmap)); XUninstallColormap(xnestDisplay, xnestColormap(pCmap));
} }
@ -365,8 +367,10 @@ xnestUninstallColormap(ColormapPtr pCmap)
{ {
if (pCmap->mid != pCmap->pScreen->defColormap) if (pCmap->mid != pCmap->pScreen->defColormap)
{ {
pCurCmap = (ColormapPtr)LookupIDByType(pCmap->pScreen->defColormap, dixLookupResourceByType((pointer *)&pCurCmap,
RT_COLORMAP); pCmap->pScreen->defColormap,
RT_COLORMAP,
serverClient, DixInstallAccess);
(*pCmap->pScreen->InstallColormap)(pCurCmap); (*pCmap->pScreen->InstallColormap)(pCurCmap);
} }
} }

View File

@ -93,7 +93,8 @@ xnestCreateWindow(WindowPtr pWin)
visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin)); visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin));
mask |= CWColormap; mask |= CWColormap;
if (pWin->optional->colormap) { if (pWin->optional->colormap) {
pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP); dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin),
RT_COLORMAP, serverClient, DixUseAccess);
attributes.colormap = xnestColormap(pCmap); attributes.colormap = xnestColormap(pCmap);
} }
else else
@ -104,7 +105,8 @@ xnestCreateWindow(WindowPtr pWin)
} }
else { /* root windows have their own colormaps at creation time */ else { /* root windows have their own colormaps at creation time */
visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin)); visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin));
pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP); dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin),
RT_COLORMAP, serverClient, DixUseAccess);
mask |= CWColormap; mask |= CWColormap;
attributes.colormap = xnestColormap(pCmap); attributes.colormap = xnestColormap(pCmap);
} }
@ -338,7 +340,8 @@ xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
if (mask & CWColormap) { if (mask & CWColormap) {
ColormapPtr pCmap; ColormapPtr pCmap;
pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP); dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin), RT_COLORMAP,
serverClient, DixUseAccess);
attributes.colormap = xnestColormap(pCmap); attributes.colormap = xnestColormap(pCmap);

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,18 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.050000190734863"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data> <data>
<int key="IBDocument.SystemTarget">1050</int> <int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A222</string> <string key="IBDocument.SystemVersion">10A314</string>
<string key="IBDocument.InterfaceBuilderVersion">708</string> <string key="IBDocument.InterfaceBuilderVersion">718</string>
<string key="IBDocument.AppKitVersion">994.5</string> <string key="IBDocument.AppKitVersion">1013</string>
<string key="IBDocument.HIToolboxVersion">404.00</string> <string key="IBDocument.HIToolboxVersion">415.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">708</string> <string key="NS.object.0">718</string>
</object> </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<integer value="348"/>
</object> </object>
<object class="NSArray" key="IBDocument.PluginDependencies"> <object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -20,7 +19,7 @@
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.Metadata"> <object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
@ -194,7 +193,7 @@
</object> </object>
<object class="NSMenuItem" id="868031522"> <object class="NSMenuItem" id="868031522">
<reference key="NSMenu" ref="524015605"/> <reference key="NSMenu" ref="524015605"/>
<string type="base64-UTF8" key="NSTitle">UHJvZ3JhbW1hJ3M</string> <string key="NSTitle">Programma's</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -202,7 +201,7 @@
<reference key="NSMixedImage" ref="351811234"/> <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="981161348"> <object class="NSMenu" key="NSSubmenu" id="981161348">
<string type="base64-UTF8" key="NSTitle">UHJvZ3JhbW1hJ3M</string> <string key="NSTitle">Programma's</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="390088328"> <object class="NSMenuItem" id="390088328">
@ -398,10 +397,10 @@
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957"> <object class="NSView" key="NSWindowView" id="941366957">
<reference key="NSNextResponder"/> <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews"> <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -461,9 +460,7 @@
<object class="NSTextFieldCell" key="NSCell" id="391919450"> <object class="NSTextFieldCell" key="NSCell" id="391919450">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QWxzIHUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBrYW4gaGV0IGdlYnJ1aWsgdmFuIHRvZXRzY29tYmlu <string key="NSContents">Als u deze optie inschakelt, kan het gebruik van toetscombinaties voor menucommado's conflicteren met X11-programma's die de Meta-modifier gebruiken.</string>
YXRpZXMgdm9vciBtZW51Y29tbWFkbydzIGNvbmZsaWN0ZXJlbiBtZXQgWDExLXByb2dyYW1tYSdzIGRp
ZSBkZSBNZXRhLW1vZGlmaWVyIGdlYnJ1aWtlbi4</string>
<object class="NSFont" key="NSSupport" id="26"> <object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double> <double key="NSSize">11</double>
@ -475,9 +472,9 @@ ZSBkZSBNZXRhLW1vZGlmaWVyIGdlYnJ1aWtlbi4</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string> <string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="891756173"> <object class="NSColor" key="NSColor" id="925765112">
<int key="NSColorSpace">3</int> <int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2OQA</bytes> <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object> </object>
</object> </object>
<object class="NSColor" key="NSTextColor" id="930815747"> <object class="NSColor" key="NSTextColor" id="930815747">
@ -619,9 +616,7 @@ ZW4uCg</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599"> <object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">Vm9vciBYMTEtZ2VsdWlkc3NpZ25hbGVuIHdvcmR0IGhldCB3YWFyc2NodXdpbmdzc2lnbmFhbCB2YW4g <string key="NSContents">Voor X11-geluidssignalen wordt het waarschuwingssignaal van het systeem gebruikt, zoals ingesteld in het tabblad 'Geluidseffecten' van het systeemvoorkeurenpaneel 'Geluid'.</string>
aGV0IHN5c3RlZW0gZ2VicnVpa3QsIHpvYWxzIGluZ2VzdGVsZCBpbiBoZXQgdGFiYmxhZCAnR2VsdWlk
c2VmZmVjdGVuJyB2YW4gaGV0IHN5c3RlZW12b29ya2V1cmVucGFuZWVsICdHZWx1aWQnLg</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/> <reference key="NSControlView" ref="1039016593"/>
@ -861,9 +856,7 @@ c2VmZmVjdGVuJyB2YW4gaGV0IHN5c3RlZW12b29ya2V1cmVucGFuZWVsICdHZWx1aWQnLg</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492"> <object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">SGllcm1lZSBzY2hha2VsdCB1IGhldCBtZW51b25kZXJkZWVsICJrb3BpZWVyIiBpbiBlbiBtYWFrdCB1 <string key="NSContents">Hiermee schakelt u het menuonderdeel "kopieer" in en maakt u synchronisatie mogelijk tussen het klembord van OS X en de CLIPBOARD- en PRIMARY-buffer van X11.</string>
IHN5bmNocm9uaXNhdGllIG1vZ2VsaWprIHR1c3NlbiBoZXQga2xlbWJvcmQgdmFuIE9TIFggZW4gZGUg
Q0xJUEJPQVJELSBlbiBQUklNQVJZLWJ1ZmZlciB2YW4gWDExLg</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/> <reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -983,8 +976,7 @@ Q0xJUEJPQVJELSBlbiBQUklNQVJZLWJ1ZmZlciB2YW4gWDExLg</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858"> <object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">VmFud2VnZSBiZXBlcmtpbmdlbiBpbiBoZXQgWDExLXByb3RvY29sIHdlcmt0IGRlemUgb3B0aWUgbW9n <string key="NSContents">Vanwege beperkingen in het X11-protocol werkt deze optie mogelijk niet altijd in alle programma's.</string>
ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/> <reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -1114,7 +1106,7 @@ ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990"> <object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string key="NSContents">Indien ingeschakeld, wordt bij aanmaak van een nieuw X11-venster X11.app op de voorgrond geplaatst (in plaats van Finder.app, Terminal.app, enz.)</string> <string key="NSContents">Indien ingeschakeld, wordt bij aanmaak van een nieuw X11-venster X11.app op de voorgrond geplaatst (in plaats van Finder.app, Terminal.app, enz.).</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/> <reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -1187,10 +1179,7 @@ ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865"> <object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">V2FubmVlciB1IFgxMSBzdGFydCwgd29yZGVuIGVyIFhhdXRob3JpdHktdG9lZ2FuZ3Njb250cm9sZXNs <string key="NSContents">Wanneer u X11 start, worden er Xauthority-toegangscontrolesleutels aangemaakt. Als het IP-adres van het systeem wordt gewijzigd, worden deze toetsen ongeldig waardoor het mogelijk is dat X11-programma's niet kunnen worden gestart.</string>
ZXV0ZWxzIGFhbmdlbWFha3QuIEFscyBoZXQgSVAtYWRyZXMgdmFuIGhldCBzeXN0ZWVtIHdvcmR0IGdl
d2lqemlnZCwgd29yZGVuIGRlemUgdG9ldHNlbiBvbmdlbGRpZyB3YWFyZG9vciBoZXQgbW9nZWxpamsg
aXMgZGF0IFgxMS1wcm9ncmFtbWEncyBuaWV0IGt1bm5lbiB3b3JkZW4gZ2VzdGFydC4</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/> <reference key="NSControlView" ref="168436707"/>
@ -1207,10 +1196,7 @@ aXMgZGF0IFgxMS1wcm9ncmFtbWEncyBuaWV0IGt1bm5lbiB3b3JkZW4gZ2VzdGFydC4</string>
<object class="NSTextFieldCell" key="NSCell" id="390084685"> <object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QWxzIHUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBtb2V0ICdWb2VyIGlkZW50aXRlaXRzY29udHJvbGUg <string key="NSContents">Als u deze optie inschakelt, moet 'Voer identiteitscontrole uit voor verbindingen' ook worden ingeschakeld ter beveiliging van het systeem. Als deze optie is uitgeschakeld, worden verbindingen van externe programma's niet toegestaan.</string>
dWl0IHZvb3IgdmVyYmluZGluZ2VuJyBvb2sgd29yZGVuIGluZ2VzY2hha2VsZCB0ZXIgYmV2ZWlsaWdp
bmcgdmFuIGhldCBzeXN0ZWVtLiBBbHMgZGV6ZSBvcHRpZSBpcyB1aXRnZXNjaGFrZWxkLCB3b3JkZW4g
dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/> <reference key="NSControlView" ref="363817195"/>
@ -1255,11 +1241,10 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
</object> </object>
<string key="NSFrameSize">{564, 308}</string> <string key="NSFrameSize">{564, 308}</string>
<reference key="NSSuperview"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string> <string key="NSFrameAutosaveName">x11_prefs</string>
</object> </object>
<object class="NSWindowTemplate" id="604417141"> <object class="NSWindowTemplate" id="604417141">
@ -1272,7 +1257,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634"> <object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -1361,8 +1346,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<double key="NSMinWidth">62.730998992919922</double> <double key="NSMinWidth">62.730998992919922</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string key="NSContents">Naam</string> <string key="NSContents">Naam</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566"> <object class="NSColor" key="NSBackgroundColor" id="113872566">
@ -1399,8 +1384,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<double key="NSMinWidth">40</double> <double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string key="NSContents">Commando</string> <string key="NSContents">Commando</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/> <reference key="NSBackgroundColor" ref="113872566"/>
@ -1426,8 +1411,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<double key="NSMinWidth">10</double> <double key="NSMinWidth">10</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string key="NSContents">Toetsen</string> <string key="NSContents">Toetsen</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor"> <object class="NSColor" key="NSBackgroundColor">
@ -1454,7 +1439,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string> <string key="NSColorName">controlBackgroundColor</string>
<reference key="NSColor" ref="891756173"/> <reference key="NSColor" ref="925765112"/>
</object> </object>
<reference key="NSTextColor" ref="930815747"/> <reference key="NSTextColor" ref="930815747"/>
</object> </object>
@ -1484,6 +1469,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<int key="NSDraggingSourceMaskForLocal">-1</int> <int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int> <int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool> <bool key="NSAllowsTypeSelect">YES</bool>
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object> </object>
</object> </object>
<string key="NSFrame">{{1, 17}, {301, 198}}</string> <string key="NSFrame">{{1, 17}, {301, 198}}</string>
@ -1567,7 +1553,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string> <string key="NSFrameAutosaveName">x11_apps</string>
</object> </object>
<object class="NSMenu" id="294137138"> <object class="NSMenu" id="294137138">
@ -1587,7 +1573,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
<object class="NSMenuItem" id="511651072"> <object class="NSMenuItem" id="511651072">
<reference key="NSMenu" ref="294137138"/> <reference key="NSMenu" ref="294137138"/>
<string type="base64-UTF8" key="NSTitle">UHJvZ3JhbW1hJ3M</string> <string key="NSTitle">Programma's</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -1595,7 +1581,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<reference key="NSMixedImage" ref="351811234"/> <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="48278059"> <object class="NSMenu" key="NSSubmenu" id="48278059">
<string type="base64-UTF8" key="NSTitle">UHJvZ3JhbW1hJ3M</string> <string key="NSTitle">Programma's</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="563798000"> <object class="NSMenuItem" id="563798000">
@ -1611,7 +1597,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
<object class="NSMenuItem" id="1032342329"> <object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/> <reference key="NSMenu" ref="48278059"/>
<string type="base64-UTF8" key="NSTitle">UGFzIGFhbuKApg</string> <string key="NSTitle">Pas aan…</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -2186,28 +2172,26 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<object class="NSArray" key="object" id="330408435"> <reference key="object" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="904585544"/> <reference key="children" ref="904585544"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-2</int> <int key="objectID">-2</int>
<reference key="object" ref="815810918"/> <reference key="object" ref="815810918"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> <string key="objectName">File's Owner</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-1</int> <int key="objectID">-1</int>
<reference key="object" ref="941939442"/> <reference key="object" ref="941939442"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string> <string key="objectName">First Responder</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-3</int> <int key="objectID">-3</int>
<reference key="object" ref="951368722"/> <reference key="object" ref="951368722"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">Application</string> <string key="objectName">Application</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2221,7 +2205,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<reference ref="868031522"/> <reference ref="868031522"/>
<reference ref="551174276"/> <reference ref="551174276"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string> <string key="objectName">MainMenu</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2466,7 +2450,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">196</int> <int key="objectID">196</int>
<reference key="object" ref="485884620"/> <reference key="object" ref="485884620"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string> <string key="objectName">X11Controller</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2476,7 +2460,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/> <reference ref="941366957"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string> <string key="objectName">PrefsPanel</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2740,7 +2724,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/> <reference ref="85544634"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string> <string key="objectName">EditPrograms</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2763,7 +2747,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<reference ref="318286212"/> <reference ref="318286212"/>
<reference ref="511651072"/> <reference ref="511651072"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string> <string key="objectName">DockMenu</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -3317,6 +3301,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string> <string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string> <string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string> <string>100293.IBPluginDependency</string>
@ -3606,6 +3591,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -3673,9 +3659,9 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string> <string>{{271, 666}, {301, 153}}</string>
<string>{{437, 672}, {564, 308}}</string> <string>{{325, 672}, {564, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{437, 672}, {564, 308}}</string> <string>{{325, 672}, {564, 308}}</string>
<integer value="1"/> <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string> <string>{{184, 290}, {481, 345}}</string>
<integer value="0"/> <integer value="0"/>
@ -3896,9 +3882,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -3906,9 +3890,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations"> <object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -3946,6 +3928,15 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4</string>
</object> </object>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string> <string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data> </data>

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.05">
<data> <data>
<int key="IBDocument.SystemTarget">1050</int> <int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">9C31</string> <string key="IBDocument.SystemVersion">10A222</string>
<string key="IBDocument.InterfaceBuilderVersion">677</string> <string key="IBDocument.InterfaceBuilderVersion">708</string>
<string key="IBDocument.AppKitVersion">949.26</string> <string key="IBDocument.AppKitVersion">994.5</string>
<string key="IBDocument.HIToolboxVersion">352.00</string> <string key="IBDocument.HIToolboxVersion">404.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">708</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -393,7 +397,7 @@
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957"> <object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -428,7 +432,7 @@
<string key="NSContents">Drei Maustasten nachbilden</string> <string key="NSContents">Drei Maustasten nachbilden</string>
<object class="NSFont" key="NSSupport" id="463863101"> <object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">1.300000e+01</double> <double key="NSSize">13</double>
<int key="NSfFlags">1044</int> <int key="NSfFlags">1044</int>
</object> </object>
<reference key="NSControlView" ref="119157981"/> <reference key="NSControlView" ref="119157981"/>
@ -461,7 +465,7 @@ bsO8bGVpc3RlIGRpZSBYMTEtUHJvZ3JhbW1lIHN0w7ZyZW4sIGRpZSBNZXRhLVNvbmRlcnRhc3RlbiB2
ZXJ3ZW5kZW4uA</string> ZXJ3ZW5kZW4uA</string>
<object class="NSFont" key="NSSupport" id="26"> <object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">1.100000e+01</double> <double key="NSSize">11</double>
<int key="NSfFlags">3100</int> <int key="NSfFlags">3100</int>
</object> </object>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
@ -470,9 +474,9 @@ ZXJ3ZW5kZW4uA</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string> <string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="764920908"> <object class="NSColor" key="NSColor" id="705970636">
<int key="NSColorSpace">3</int> <int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2OQA</bytes> <bytes key="NSWhite">MC42NjY2NjY2NwA</bytes>
</object> </object>
</object> </object>
<object class="NSColor" key="NSTextColor" id="930815747"> <object class="NSColor" key="NSTextColor" id="930815747">
@ -639,7 +643,7 @@ LCB3aWUgaW4gZGVyIFN5c3RlbWVpbnN0ZWxsdW5nIOKAnlRvbmVmZmVrdGXigJwgZmVzdGdlbGVndC4<
<int key="NSButtonFlags2">1</int> <int key="NSButtonFlags2">1</int>
<object class="NSFont" key="NSAlternateImage"> <object class="NSFont" key="NSAlternateImage">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">1.300000e+01</double> <double key="NSSize">13</double>
<int key="NSfFlags">16</int> <int key="NSfFlags">16</int>
</object> </object>
<string key="NSAlternateContents"/> <string key="NSAlternateContents"/>
@ -706,6 +710,7 @@ LCB3aWUgaW4gZGVyIFN5c3RlbWVpbnN0ZWxsdW5nIOKAnlRvbmVmZmVrdGXigJwgZmVzdGdlbGVndC4<
<reference key="NSTarget" ref="633115429"/> <reference key="NSTarget" ref="633115429"/>
</object> </object>
</object> </object>
<reference key="NSMenuFont" ref="463863101"/>
</object> </object>
<int key="NSPreferredEdge">3</int> <int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool> <bool key="NSUsesItemFromMenu">YES</bool>
@ -1262,7 +1267,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string> <string key="NSFrameAutosaveName">x11_prefs</string>
</object> </object>
<object class="NSWindowTemplate" id="604417141"> <object class="NSWindowTemplate" id="604417141">
@ -1275,7 +1280,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634"> <object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -1360,9 +1365,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<object class="NSMutableArray" key="NSTableColumns"> <object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="938444323"> <object class="NSTableColumn" id="938444323">
<double key="NSWidth">1.227310e+02</double> <double key="NSWidth">122.73099999999999</double>
<double key="NSMinWidth">6.273100e+01</double> <double key="NSMinWidth">62.731000000000002</double>
<double key="NSMaxWidth">1.000000e+03</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628032</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
@ -1398,9 +1403,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<reference key="NSTableView" ref="905092943"/> <reference key="NSTableView" ref="905092943"/>
</object> </object>
<object class="NSTableColumn" id="84282687"> <object class="NSTableColumn" id="84282687">
<double key="NSWidth">1.000000e+02</double> <double key="NSWidth">100</double>
<double key="NSMinWidth">4.000000e+01</double> <double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1.000000e+03</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628032</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
@ -1425,9 +1430,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<reference key="NSTableView" ref="905092943"/> <reference key="NSTableView" ref="905092943"/>
</object> </object>
<object class="NSTableColumn" id="242608782"> <object class="NSTableColumn" id="242608782">
<double key="NSWidth">6.900000e+01</double> <double key="NSWidth">69</double>
<double key="NSMinWidth">1.000000e+01</double> <double key="NSMinWidth">10</double>
<double key="NSMaxWidth">1.000000e+03</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
@ -1447,7 +1452,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<string key="NSContents">Textzelle</string> <string key="NSContents">Textzelle</string>
<object class="NSFont" key="NSSupport"> <object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">1.200000e+01</double> <double key="NSSize">12</double>
<int key="NSfFlags">16</int> <int key="NSfFlags">16</int>
</object> </object>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
@ -1457,7 +1462,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string> <string key="NSColorName">controlBackgroundColor</string>
<reference key="NSColor" ref="764920908"/> <reference key="NSColor" ref="705970636"/>
</object> </object>
<reference key="NSTextColor" ref="930815747"/> <reference key="NSTextColor" ref="930815747"/>
</object> </object>
@ -1467,8 +1472,8 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<reference key="NSTableView" ref="905092943"/> <reference key="NSTableView" ref="905092943"/>
</object> </object>
</object> </object>
<double key="NSIntercellSpacingWidth">3.000000e+00</double> <double key="NSIntercellSpacingWidth">3</double>
<double key="NSIntercellSpacingHeight">2.000000e+00</double> <double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="822946413"/> <reference key="NSBackgroundColor" ref="822946413"/>
<object class="NSColor" key="NSGridColor"> <object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
@ -1479,8 +1484,10 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<bytes key="NSWhite">MC41AA</bytes> <bytes key="NSWhite">MC41AA</bytes>
</object> </object>
</object> </object>
<double key="NSRowHeight">1.700000e+01</double> <double key="NSRowHeight">17</double>
<int key="NSTvFlags">1379958784</int> <int key="NSTvFlags">1379958784</int>
<reference key="NSDelegate"/>
<reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">1</int> <int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">-1</int> <int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int> <int key="NSDraggingSourceMaskForNonLocal">0</int>
@ -1501,7 +1508,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSTarget" ref="1063387772"/> <reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string> <string key="NSAction">_doScroller:</string>
<double key="NSPercent">9.949238e-01</double> <double key="NSPercent">0.99492380000000002</double>
</object> </object>
<object class="NSScroller" id="17278747"> <object class="NSScroller" id="17278747">
<reference key="NSNextResponder" ref="1063387772"/> <reference key="NSNextResponder" ref="1063387772"/>
@ -1511,7 +1518,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<int key="NSsFlags">1</int> <int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/> <reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string> <string key="NSAction">_doScroller:</string>
<double key="NSPercent">6.885246e-01</double> <double key="NSPercent">0.68852460000000004</double>
</object> </object>
<object class="NSClipView" id="672307654"> <object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/> <reference key="NSNextResponder" ref="1063387772"/>
@ -1568,7 +1575,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string> <string key="NSFrameAutosaveName">x11_apps</string>
</object> </object>
<object class="NSMenu" id="294137138"> <object class="NSMenu" id="294137138">
@ -3316,11 +3323,8 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
</object> </object>
<object class="NSMutableDictionary" key="flattenedProperties"> <object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string> <string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string> <string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string> <string>100293.IBPluginDependency</string>
@ -3375,7 +3379,6 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<string>169.editorWindowContentRectSynchronizationRect</string> <string>169.editorWindowContentRectSynchronizationRect</string>
<string>19.IBPluginDependency</string> <string>19.IBPluginDependency</string>
<string>19.ImportedFromIB2</string> <string>19.ImportedFromIB2</string>
<string>196.IBPluginDependency</string>
<string>196.ImportedFromIB2</string> <string>196.ImportedFromIB2</string>
<string>200295.IBPluginDependency</string> <string>200295.IBPluginDependency</string>
<string>200295.IBShouldRemoveOnLegacySave</string> <string>200295.IBShouldRemoveOnLegacySave</string>
@ -3390,6 +3393,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<string>24.ImportedFromIB2</string> <string>24.ImportedFromIB2</string>
<string>24.editorWindowContentRectSynchronizationRect</string> <string>24.editorWindowContentRectSynchronizationRect</string>
<string>244.IBEditorWindowLastContentRect</string> <string>244.IBEditorWindowLastContentRect</string>
<string>244.IBPluginDependency</string>
<string>244.IBViewEditorWindowController.showingLayoutRectangles</string> <string>244.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>244.IBWindowTemplateEditedContentRect</string> <string>244.IBWindowTemplateEditedContentRect</string>
<string>244.ImportedFromIB2</string> <string>244.ImportedFromIB2</string>
@ -3409,6 +3413,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<string>272.IBPluginDependency</string> <string>272.IBPluginDependency</string>
<string>272.ImportedFromIB2</string> <string>272.ImportedFromIB2</string>
<string>285.IBEditorWindowLastContentRect</string> <string>285.IBEditorWindowLastContentRect</string>
<string>285.IBPluginDependency</string>
<string>285.IBViewEditorWindowController.showingBoundsRectangles</string> <string>285.IBViewEditorWindowController.showingBoundsRectangles</string>
<string>285.IBViewEditorWindowController.showingLayoutRectangles</string> <string>285.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>285.IBWindowTemplateEditedContentRect</string> <string>285.IBWindowTemplateEditedContentRect</string>
@ -3608,14 +3613,11 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1" id="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -3636,265 +3638,266 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{168, 821}, {113, 23}}</string> <string>{{168, 821}, {113, 23}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{202, 626}, {154, 153}}</string> <string>{{202, 626}, {154, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>{{349, 858}, {315, 153}}</string> <string>{{349, 858}, {315, 153}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string> <string>{{271, 666}, {301, 153}}</string>
<string>{{325, 198}, {613, 302}}</string> <string>{{325, 198}, {613, 302}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO"/> <boolean value="NO"/>
<string>{{325, 198}, {613, 302}}</string> <string>{{325, 198}, {613, 302}}</string>
<reference ref="9"/> <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string> <string>{{184, 290}, {481, 345}}</string>
<integer value="0" id="8"/> <integer value="0"/>
<reference ref="9"/> <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string> <string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string> <string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{58, 803}, {155, 33}}</string> <string>{{58, 803}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{100, 746}, {155, 33}}</string> <string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{68, 585}, {512, 271}}</string> <string>{{68, 585}, {512, 271}}</string>
<reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<integer value="1"/>
<string>{{68, 585}, {512, 271}}</string> <string>{{68, 585}, {512, 271}}</string>
<reference ref="9"/> <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string> <string>{{433, 406}, {486, 327}}</string>
<reference ref="8"/> <integer value="0"/>
<reference ref="9"/> <integer value="1"/>
<string>{3.40282e+38, 3.40282e+38}</string> <string>{3.40282e+38, 3.40282e+38}</string>
<string>{320, 240}</string> <string>{320, 240}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{145, 836}, {375, 20}}</string> <string>{{145, 836}, {375, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{67, 819}, {336, 20}}</string> <string>{{67, 819}, {336, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{20, 641}, {218, 203}}</string> <string>{{20, 641}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>{{79, 616}, {218, 203}}</string> <string>{{79, 616}, {218, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/> <integer value="1"/>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>76</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.050000190734863"> <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data> <data>
<int key="IBDocument.SystemTarget">1050</int> <int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10A222</string> <string key="IBDocument.SystemVersion">10A314</string>
<string key="IBDocument.InterfaceBuilderVersion">708</string> <string key="IBDocument.InterfaceBuilderVersion">718</string>
<string key="IBDocument.AppKitVersion">994.5</string> <string key="IBDocument.AppKitVersion">1013</string>
<string key="IBDocument.HIToolboxVersion">404.00</string> <string key="IBDocument.HIToolboxVersion">415.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">708</string> <string key="NS.object.0">718</string>
</object> </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -19,7 +19,7 @@
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.Metadata"> <object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
@ -229,7 +229,7 @@
</object> </object>
<object class="NSMenuItem" id="200491363"> <object class="NSMenuItem" id="200491363">
<reference key="NSMenu" ref="524015605"/> <reference key="NSMenu" ref="524015605"/>
<string type="base64-UTF8" key="NSTitle">RWRpY2nDs24</string> <string key="NSTitle">Edición</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -237,7 +237,7 @@
<reference key="NSMixedImage" ref="351811234"/> <reference key="NSMixedImage" ref="351811234"/>
<string key="NSAction">submenuAction:</string> <string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="526778998"> <object class="NSMenu" key="NSSubmenu" id="526778998">
<string type="base64-UTF8" key="NSTitle">RWRpY2nDs24</string> <string key="NSTitle">Edición</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="185296989"> <object class="NSMenuItem" id="185296989">
@ -314,7 +314,7 @@
</object> </object>
<object class="NSMenuItem" id="369641893"> <object class="NSMenuItem" id="369641893">
<reference key="NSMenu" ref="96874957"/> <reference key="NSMenu" ref="96874957"/>
<string type="base64-UTF8" key="NSTitle">UmVjb3JyZXIgdmVudGFuYXMgYWwgcmV2w6lzA</string> <string key="NSTitle">Recorrer ventanas al revés</string>
<string key="NSKeyEquiv">~</string> <string key="NSKeyEquiv">~</string>
<int key="NSKeyEquivModMask">1179914</int> <int key="NSKeyEquivModMask">1179914</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -397,10 +397,10 @@
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="941366957"> <object class="NSView" key="NSWindowView" id="941366957">
<nil key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews"> <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -409,6 +409,7 @@
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{13, 10}, {593, 292}}</string> <string key="NSFrame">{{13, 10}, {593, 292}}</string>
<reference key="NSSuperview" ref="941366957"/> <reference key="NSSuperview" ref="941366957"/>
<reference key="NSWindow"/>
<object class="NSMutableArray" key="NSTabViewItems"> <object class="NSMutableArray" key="NSTabViewItems">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTabViewItem" id="287591690"> <object class="NSTabViewItem" id="287591690">
@ -425,11 +426,12 @@
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 210}, {402, 18}}</string> <string key="NSFrame">{{18, 210}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="990762273"> <object class="NSButtonCell" key="NSCell" id="990762273">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">U2ltdWxhciByYXTDs24gZGUgdHJlcyBib3RvbmVzA</string> <string key="NSContents">Simular ratón de tres botones</string>
<object class="NSFont" key="NSSupport" id="463863101"> <object class="NSFont" key="NSSupport" id="463863101">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double> <double key="NSSize">13</double>
@ -456,13 +458,12 @@
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 40}, {501, 42}}</string> <string key="NSFrame">{{36, 40}, {501, 42}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="391919450"> <object class="NSTextFieldCell" key="NSCell" id="391919450">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">Q3VhbmRvIGVzdGEgb3BjacOzbiBlc3TDoSBhY3RpdmFkYSwgcHVlZGUgcXVlIGxvcyBlcXVpdmFsZW50 <string key="NSContents">Cuando esta opción está activada, puede que los equivalentes de teclado de la barra de menús interfieran con las aplicaciones X11 que usen el modificador Meta.</string>
ZXMgZGUgdGVjbGFkbyBkZSBsYSBiYXJyYSBkZSBtZW7DunMgaW50ZXJmaWVyYW4gY29uIGxhcyBhcGxp
Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA</string>
<object class="NSFont" key="NSSupport" id="26"> <object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string> <string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double> <double key="NSSize">11</double>
@ -474,16 +475,16 @@ Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string> <string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="92723341"> <object class="NSColor" key="NSColor" id="193651701">
<int key="NSColorSpace">3</int> <int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2OQA</bytes> <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object> </object>
</object> </object>
<object class="NSColor" key="NSTextColor" id="930815747"> <object class="NSColor" key="NSTextColor" id="930815747">
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string> <string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor" id="214098874"> <object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int> <int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes> <bytes key="NSWhite">MAA</bytes>
</object> </object>
@ -495,6 +496,7 @@ Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 170}, {501, 34}}</string> <string key="NSFrame">{{36, 170}, {501, 34}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="649334366"> <object class="NSTextFieldCell" key="NSCell" id="649334366">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
@ -513,6 +515,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 88}, {402, 18}}</string> <string key="NSFrame">{{18, 88}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="940564599"> <object class="NSButtonCell" key="NSCell" id="940564599">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
@ -535,12 +538,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA</strin
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{36, 112}, {501, 28}}</string> <string key="NSFrame">{{36, 112}, {501, 28}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="666057093"> <object class="NSTextFieldCell" key="NSCell" id="666057093">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">UGVybWl0ZSBxdWUgbG9zIGNhbWJpb3MgZW4gZWwgbWVuw7ogZGUgdGVjbGFkbyByZWVtcGxhY2VuIGxh <string key="NSContents">Permite que los cambios en el menú de teclado reemplacen la distribución de teclas actual de X11.</string>
IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="31160162"/> <reference key="NSControlView" ref="31160162"/>
@ -553,11 +556,12 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{18, 146}, {402, 18}}</string> <string key="NSFrame">{{18, 146}, {402, 18}}</string>
<reference key="NSSuperview" ref="596750588"/> <reference key="NSSuperview" ref="596750588"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="967619578"> <object class="NSButtonCell" key="NSCell" id="967619578">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">U2VndWlyIGxhIGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFkbyBkZWwgc2lzdGVtYQ</string> <string key="NSContents">Seguir la distribución de teclado del sistema</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="179949713"/> <reference key="NSControlView" ref="179949713"/>
<int key="NSButtonFlags">1211912703</int> <int key="NSButtonFlags">1211912703</int>
@ -573,6 +577,7 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA</string>
</object> </object>
<string key="NSFrame">{{10, 33}, {573, 246}}</string> <string key="NSFrame">{{10, 33}, {573, 246}}</string>
<reference key="NSSuperview" ref="448510093"/> <reference key="NSSuperview" ref="448510093"/>
<reference key="NSWindow"/>
</object> </object>
<string key="NSLabel">Entrada</string> <string key="NSLabel">Entrada</string>
<reference key="NSColor" ref="57160303"/> <reference key="NSColor" ref="57160303"/>
@ -618,9 +623,7 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="624655599"> <object class="NSTextFieldCell" key="NSCell" id="624655599">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">TG9zIHNvbmlkb3MgZGUgWDExIHVzYXLDoW4gZWwgc29uaWRvIGRlIGFsZXJ0YSBlc3TDoW5kYXIgZGVs <string key="NSContents">Los sonidos de X11 usarán el sonido de alerta estándar del sistema definido en la pestaña “Efectos de sonido” del panel Sonido de Preferencias del Sistema.</string>
IHNpc3RlbWEgZGVmaW5pZG8gZW4gZWwgcGFuZWwg4oCcRWZlY3RvcyBkZSBzb25pZG/igJ0gZGUgUHJl
ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="1039016593"/> <reference key="NSControlView" ref="1039016593"/>
@ -654,7 +657,7 @@ ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg</string>
<int key="NSPeriodicInterval">75</int> <int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="616492372"> <object class="NSMenuItem" key="NSMenuItem" id="616492372">
<reference key="NSMenu" ref="341113515"/> <reference key="NSMenu" ref="341113515"/>
<string key="NSTitle">Los de la pantalla</string> <string key="NSTitle">Desde la pantalla</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -744,8 +747,7 @@ ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg</string>
<object class="NSTextFieldCell" key="NSCell" id="311969422"> <object class="NSTextFieldCell" key="NSCell" id="311969422">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">RXN0YSBvcGNpw7NuIHNlcsOhIGVmZWN0aXZhIGxhIHByw7N4aW1hIHZleiBxdWUgc2UgaW5pY2llIFgx <string key="NSContents">Esta opción será efectiva la próxima vez que se inicie X11.</string>
MS4</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="86150604"/> <reference key="NSControlView" ref="86150604"/>
@ -784,8 +786,7 @@ MS4</string>
<object class="NSButtonCell" key="NSCell" id="917248662"> <object class="NSButtonCell" key="NSCell" id="917248662">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">TW9zdHJhIGJhcnJhIGRlIG1lbsO6cyBhdXRvbcOhdGljYW1lbnRlIGVuIGxhIG1vZGFsaWRhZCBkZSBw <string key="NSContents">Mostra barra de menús automáticamente en la modalidad de pantalla completa </string>
YW50YWxsYSBjb21wbGV0YSA</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="57246850"/> <reference key="NSControlView" ref="57246850"/>
<int key="NSButtonFlags">1211912703</int> <int key="NSButtonFlags">1211912703</int>
@ -807,9 +808,7 @@ YW50YWxsYSBjb21wbGV0YSA</string>
<object class="NSTextFieldCell" key="NSCell" id="761107402"> <object class="NSTextFieldCell" key="NSCell" id="761107402">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QWN0aXZhIGxhIHZlbnRhbmEgcmHDrXogZGUgWDExLiBVc2UgbGEgY29tYmluYWNpw7NuIGRlIHRlY2xh <string key="NSContents">Activa la ventana raíz de X11. Use la combinación de teclas Comando + Opción + A para entrar o salir de la modalidad de pantalla completa.</string>
cyBDb21hbmRvICsgT3BjacOzbiArIEEgcGFyYSBlbnRyYXIgbyBzYWxpciBkZSBsYSBtb2RhbGlkYWQg
ZGUgcGFudGFsbGEgY29tcGxldGEuA</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="298603383"/> <reference key="NSControlView" ref="298603383"/>
@ -842,7 +841,7 @@ ZGUgcGFudGFsbGEgY29tcGxldGEuA</string>
<object class="NSButtonCell" key="NSCell" id="718083688"> <object class="NSButtonCell" key="NSCell" id="718083688">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">QWN0aXZhciBzaW5jcm9uaXphY2nDs24</string> <string key="NSContents">Activar sincronización</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="878106058"/> <reference key="NSControlView" ref="878106058"/>
<int key="NSButtonFlags">1211912703</int> <int key="NSButtonFlags">1211912703</int>
@ -864,9 +863,7 @@ ZGUgcGFudGFsbGEgY29tcGxldGEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="572508492"> <object class="NSTextFieldCell" key="NSCell" id="572508492">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QWN0aXZhIGVsIMOtdGVtIGRlIG1lbsO6ICJjb3BpYXIiIHkgcGVybWl0ZSBzaW5jcm9uaXphciBlbCBw <string key="NSContents">Activa el ítem de menú “copiar” y permite sincronizar el portapapeles de OSX y los búfers CLIPBOARD y PRIMARY de X11.</string>
b3J0YXBhcGVsZXMgZGUgT1NYIHkgbG9zIGLDumZlcnMgQ0xJUEJPQVJEIHkgUFJJTUFSWSBkZSBYMTEu
A</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="386152084"/> <reference key="NSControlView" ref="386152084"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -904,8 +901,7 @@ A</string>
<object class="NSButtonCell" key="NSCell" id="510771323"> <object class="NSButtonCell" key="NSCell" id="510771323">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">QWN0dWFsaXphciBlbCBQUklNQVJZIChjbGljIGNvbiBlbCBib3TDs24gY2VudHJhbCkgY3VhbmRvIGNh <string key="NSContents">Actualizar el PRIMARY (clic con el botón central) cuando cambie el portapapeles.</string>
bWJpZSBlbCBwb3J0YXBhcGVsZXMuA</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="765780304"/> <reference key="NSControlView" ref="765780304"/>
<int key="NSButtonFlags">1211912703</int> <int key="NSButtonFlags">1211912703</int>
@ -971,8 +967,7 @@ bWJpZSBlbCBwb3J0YXBhcGVsZXMuA</string>
<object class="NSTextFieldCell" key="NSCell" id="461823902"> <object class="NSTextFieldCell" key="NSCell" id="461823902">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">RGVzYWN0aXZlIGVzdGEgb3BjacOzbiBzaSBkZXNlYSB1c2FyIHhjbGlwYm9hcmQsIGtsaXBwZXIgbyBj <string key="NSContents">Desactive esta opción si desea usar xclipboard, klipper o cualquier otro gestor de portapapeles de X11.</string>
dWFscXVpZXIgb3RybyBnZXN0b3IgZGUgcG9ydGFwYXBlbGVzIGRlIFgxMS4</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="620944856"/> <reference key="NSControlView" ref="620944856"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -988,8 +983,7 @@ dWFscXVpZXIgb3RybyBnZXN0b3IgZGUgcG9ydGFwYXBlbGVzIGRlIFgxMS4</string>
<object class="NSTextFieldCell" key="NSCell" id="994587858"> <object class="NSTextFieldCell" key="NSCell" id="994587858">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QSBjYXVzYSBkZSBsYXMgbGltaXRhY2lvbmVzIGRlbCBwcm90b2NvbG8gZGUgWDExLCBwdWVkZSBxdWUg <string key="NSContents">A causa de las limitaciones del protocolo de X11, puede que esta opción no funcione siempre en algunas aplicaciones.</string>
ZXN0YSBvcGNpw7NuIG5vIGZ1bmNpb25lIHNpZW1wcmUgZW4gYWxndW5hcyBhcGxpY2FjaW9uZXMuA</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="522511724"/> <reference key="NSControlView" ref="522511724"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -1043,9 +1037,7 @@ ZXN0YSBvcGNpw7NuIG5vIGZ1bmNpb25lIHNpZW1wcmUgZW4gYWxndW5hcyBhcGxpY2FjaW9uZXMuA</s
<object class="NSTextFieldCell" key="NSCell" id="399127858"> <object class="NSTextFieldCell" key="NSCell" id="399127858">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">Q3VhbmRvIGVzdMOhIGFjdGl2YWRhLCBhbCBoYWNlciBjbGljIGVuIHVuYSB2ZW50YW5hIGluYWN0aXZh <string key="NSContents">Cuando está activada, al hacer clic en una ventana inactiva, la ventana se activa y además el clic del ratón se transmite a ella.</string>
LCBsYSB2ZW50YW5hIHNlIGFjdGl2YSB5IGFkZW3DoXMgZWwgY2xpYyBkZWwgcmF0w7NuIHNlIHRyYW5z
bWl0ZSBhIGVsbGEuA</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="290578835"/> <reference key="NSControlView" ref="290578835"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -1061,7 +1053,7 @@ bWl0ZSBhIGVsbGEuA</string>
<object class="NSButtonCell" key="NSCell" id="959555182"> <object class="NSButtonCell" key="NSCell" id="959555182">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">0</int>
<string type="base64-UTF8" key="NSContents">RW5mb2NhciBsYSBwb3NpY2nDs24gZGVsIHJhdMOzbg</string> <string key="NSContents">Enfocar la posición del ratón</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="992839333"/> <reference key="NSControlView" ref="992839333"/>
<int key="NSButtonFlags">1211912703</int> <int key="NSButtonFlags">1211912703</int>
@ -1121,9 +1113,7 @@ bWl0ZSBhIGVsbGEuA</string>
<object class="NSTextFieldCell" key="NSCell" id="989804990"> <object class="NSTextFieldCell" key="NSCell" id="989804990">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">Q3VhbmRvIGVzdMOhIGFjdGl2YWRhLCBhbCBjcmVhciB1bmEgbnVldmEgdmVudGFuYSBkZSBYMTEgZWwg <string key="NSContents">Cuando está activada, al crear una nueva ventana de X11 el archivo X11.app se sitúa en primer plano (por encima de Finder.app, Terminal.app, etc.)</string>
YXJjaGl2byBYMTEuYXBwIHNlIHNpdMO6YSBlbiBwcmltZXIgcGxhbm8gKHBvciBlbmNpbWEgZGUgRmlu
ZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="57161931"/> <reference key="NSControlView" ref="57161931"/>
<reference key="NSBackgroundColor" ref="57160303"/> <reference key="NSBackgroundColor" ref="57160303"/>
@ -1196,10 +1186,7 @@ ZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ</string>
<object class="NSTextFieldCell" key="NSCell" id="53243865"> <object class="NSTextFieldCell" key="NSCell" id="53243865">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">QWwgaW5pY2lhciBYMTEgc2UgY3JlYXLDoW4gdW5hcyBjbGF2ZXMgZGUgY29udHJvbCBkZSBhY2Nlc28g <string key="NSContents">Al iniciar X11 se crearán unas claves de control de acceso Xauthority. Si la dirección IP del sistema cambia, estas claves dejarán de ser válidas, lo que impediría que pudiesen ejecutarse las aplicaciones X11.</string>
WGF1dGhvcml0eS4gU2kgbGEgZGlyZWNjacOzbiBJUCBkZWwgc2lzdGVtYSBjYW1iaWEsIGVzdGFzIGNs
YXZlcyBkZWphcsOhbiBkZSBzZXIgdsOhbGlkYXMsIGxvIHF1ZSBpbXBlZGlyw61hIHF1ZSBwdWRpZXNl
biBlamVjdXRhcnNlIGxhcyBhcGxpY2FjaW9uZXMgWDExLg</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="168436707"/> <reference key="NSControlView" ref="168436707"/>
@ -1216,10 +1203,7 @@ biBlamVjdXRhcnNlIGxhcyBhcGxpY2FjaW9uZXMgWDExLg</string>
<object class="NSTextFieldCell" key="NSCell" id="390084685"> <object class="NSTextFieldCell" key="NSCell" id="390084685">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">U2kgZXN0YSBvcGNpw7NuIGVzdMOhIGFjdGl2YWRhLCBsYSBvcGNpw7NuIOKAnEF1dGVudGljYXIgY29u <string key="NSContents">Si esta opción está activada, la opción “Autenticar conexiones” también debe estarlo para garantizar la seguridad del sistema. Si está desactivada, las conexiones de aplicaciones remotas no están permitidas.</string>
ZXhpb25lc+KAnSB0YW1iacOpbiBkZWJlIGVzdGFybG8gcGFyYSBnYXJhbnRpemFyIGxhIHNlZ3VyaWRh
ZCBkZWwgc2lzdGVtYS4gU2kgZXN0w6EgZGVzYWN0aXZhZGEsIGxhcyBjb25leGlvbmVzIGRlIGFwbGlj
YWNpb25lcyByZW1vdGFzIG5vIGVzdMOhbiBwZXJtaXRpZGFzLg</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="363817195"/> <reference key="NSControlView" ref="363817195"/>
@ -1236,8 +1220,7 @@ YWNpb25lcyByZW1vdGFzIG5vIGVzdMOhbiBwZXJtaXRpZGFzLg</string>
<object class="NSTextFieldCell" key="NSCell" id="283628678"> <object class="NSTextFieldCell" key="NSCell" id="283628678">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">4194304</int> <int key="NSCellFlags2">4194304</int>
<string type="base64-UTF8" key="NSContents">RXN0YXMgb3BjaW9uZXMgc2Vyw6FuIGVmZWN0aXZhcyBsYSBwcsOzeGltYSB2ZXogcXVlIHNlIGluaWNp <string key="NSContents">Estas opciones serán efectivas la próxima vez que se inicie X11.</string>
ZSBYMTEuA</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<string key="NSPlaceholderString"/> <string key="NSPlaceholderString"/>
<reference key="NSControlView" ref="223835729"/> <reference key="NSControlView" ref="223835729"/>
@ -1265,10 +1248,12 @@ ZSBYMTEuA</string>
</object> </object>
</object> </object>
<string key="NSFrameSize">{619, 308}</string> <string key="NSFrameSize">{619, 308}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_prefs</string> <string key="NSFrameAutosaveName">x11_prefs</string>
</object> </object>
<object class="NSWindowTemplate" id="604417141"> <object class="NSWindowTemplate" id="604417141">
@ -1276,15 +1261,15 @@ ZSBYMTEuA</string>
<int key="NSWindowBacking">2</int> <int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{302, 440}, {454, 271}}</string> <string key="NSWindowRect">{{302, 440}, {454, 271}}</string>
<int key="NSWTFlags">1350041600</int> <int key="NSWTFlags">1350041600</int>
<string type="base64-UTF8" key="NSWindowTitle">TWVuw7ogZGUgYXBsaWNhY2lvbmVzIFgxMQ</string> <string key="NSWindowTitle">Menú de aplicaciones X11</string>
<string key="NSWindowClass">NSPanel</string> <string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass"> <object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters> <characters key="NS.bytes">View</characters>
</object> </object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{320, 240}</string> <string key="NSWindowContentMinSize">{320, 240}</string>
<object class="NSView" key="NSWindowView" id="85544634"> <object class="NSView" key="NSWindowView" id="85544634">
<nil key="NSNextResponder"/> <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews"> <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -1293,6 +1278,7 @@ ZSBYMTEuA</string>
<int key="NSvFlags">265</int> <int key="NSvFlags">265</int>
<string key="NSFrame">{{340, 191}, {110, 32}}</string> <string key="NSFrame">{{340, 191}, {110, 32}}</string>
<reference key="NSSuperview" ref="85544634"/> <reference key="NSSuperview" ref="85544634"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="143554520"> <object class="NSButtonCell" key="NSCell" id="143554520">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
@ -1316,6 +1302,7 @@ ZSBYMTEuA</string>
<int key="NSvFlags">265</int> <int key="NSvFlags">265</int>
<string key="NSFrame">{{340, 159}, {110, 32}}</string> <string key="NSFrame">{{340, 159}, {110, 32}}</string>
<reference key="NSSuperview" ref="85544634"/> <reference key="NSSuperview" ref="85544634"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="8201128"> <object class="NSButtonCell" key="NSCell" id="8201128">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">67239424</int>
@ -1349,12 +1336,14 @@ ZSBYMTEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{301, 198}</string> <string key="NSFrameSize">{301, 198}</string>
<reference key="NSSuperview" ref="580565898"/> <reference key="NSSuperview" ref="580565898"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="792419186"> <object class="NSTableHeaderView" key="NSHeaderView" id="792419186">
<reference key="NSNextResponder" ref="672307654"/> <reference key="NSNextResponder" ref="672307654"/>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrameSize">{301, 17}</string> <string key="NSFrameSize">{301, 17}</string>
<reference key="NSSuperview" ref="672307654"/> <reference key="NSSuperview" ref="672307654"/>
<reference key="NSWindow"/>
<reference key="NSTableView" ref="905092943"/> <reference key="NSTableView" ref="905092943"/>
</object> </object>
<object class="_NSCornerView" key="NSCornerView" id="898633680"> <object class="_NSCornerView" key="NSCornerView" id="898633680">
@ -1362,6 +1351,7 @@ ZSBYMTEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{302, 0}, {16, 17}}</string> <string key="NSFrame">{{302, 0}, {16, 17}}</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSWindow"/>
</object> </object>
<object class="NSMutableArray" key="NSTableColumns"> <object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -1370,19 +1360,22 @@ ZSBYMTEuA</string>
<double key="NSMinWidth">62.730998992919922</double> <double key="NSMinWidth">62.730998992919922</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string key="NSContents">Nombre</string> <string key="NSContents">Nombre</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor" id="113872566"> <object class="NSColor" key="NSBackgroundColor" id="113872566">
<int key="NSColorSpace">3</int> <int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes> <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object> </object>
<object class="NSColor" key="NSTextColor" id="249576247"> <object class="NSColor" key="NSTextColor" id="336770154">
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">headerTextColor</string> <string key="NSColorName">disabledControlTextColor</string>
<reference key="NSColor" ref="214098874"/> <object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes>
</object>
</object> </object>
</object> </object>
<object class="NSTextFieldCell" key="NSDataCell" id="825378892"> <object class="NSTextFieldCell" key="NSDataCell" id="825378892">
@ -1405,16 +1398,16 @@ ZSBYMTEuA</string>
<string key="NSHeaderToolTip"/> <string key="NSHeaderToolTip"/>
</object> </object>
<object class="NSTableColumn" id="84282687"> <object class="NSTableColumn" id="84282687">
<double key="NSWidth">99</double> <double key="NSWidth">88</double>
<double key="NSMinWidth">40</double> <double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string key="NSContents">Comando</string> <string key="NSContents">Comando</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="113872566"/> <reference key="NSBackgroundColor" ref="113872566"/>
<reference key="NSTextColor" ref="249576247"/> <reference key="NSTextColor" ref="336770154"/>
</object> </object>
<object class="NSTextFieldCell" key="NSDataCell" id="432610585"> <object class="NSTextFieldCell" key="NSDataCell" id="432610585">
<int key="NSCellFlags">338820672</int> <int key="NSCellFlags">338820672</int>
@ -1433,13 +1426,13 @@ ZSBYMTEuA</string>
<string key="NSHeaderToolTip"/> <string key="NSHeaderToolTip"/>
</object> </object>
<object class="NSTableColumn" id="242608782"> <object class="NSTableColumn" id="242608782">
<double key="NSWidth">71</double> <double key="NSWidth">82</double>
<double key="NSMinWidth">10</double> <double key="NSMinWidth">10</double>
<double key="NSMaxWidth">1000</double> <double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell"> <object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">67239424</int> <int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">0</int> <int key="NSCellFlags2">2048</int>
<string type="base64-UTF8" key="NSContents">RnVuY2nDs24gcsOhcGlkYQ</string> <string key="NSContents">Función rápida</string>
<reference key="NSSupport" ref="26"/> <reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor"> <object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
@ -1447,7 +1440,7 @@ ZSBYMTEuA</string>
<string key="NSColorName">headerColor</string> <string key="NSColorName">headerColor</string>
<reference key="NSColor" ref="822946413"/> <reference key="NSColor" ref="822946413"/>
</object> </object>
<reference key="NSTextColor" ref="249576247"/> <reference key="NSTextColor" ref="336770154"/>
</object> </object>
<object class="NSTextFieldCell" key="NSDataCell" id="34714764"> <object class="NSTextFieldCell" key="NSDataCell" id="34714764">
<int key="NSCellFlags">338820672</int> <int key="NSCellFlags">338820672</int>
@ -1465,7 +1458,7 @@ ZSBYMTEuA</string>
<int key="NSColorSpace">6</int> <int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string> <string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string> <string key="NSColorName">controlBackgroundColor</string>
<reference key="NSColor" ref="92723341"/> <reference key="NSColor" ref="193651701"/>
</object> </object>
<reference key="NSTextColor" ref="930815747"/> <reference key="NSTextColor" ref="930815747"/>
</object> </object>
@ -1496,10 +1489,12 @@ ZSBYMTEuA</string>
<int key="NSDraggingSourceMaskForLocal">-1</int> <int key="NSDraggingSourceMaskForLocal">-1</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int> <int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool> <bool key="NSAllowsTypeSelect">YES</bool>
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object> </object>
</object> </object>
<string key="NSFrame">{{1, 17}, {301, 198}}</string> <string key="NSFrame">{{1, 17}, {301, 198}}</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="905092943"/> <reference key="NSNextKeyView" ref="905092943"/>
<reference key="NSDocView" ref="905092943"/> <reference key="NSDocView" ref="905092943"/>
<reference key="NSBGColor" ref="812484075"/> <reference key="NSBGColor" ref="812484075"/>
@ -1510,6 +1505,7 @@ ZSBYMTEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{302, 17}, {15, 198}}</string> <string key="NSFrame">{{302, 17}, {15, 198}}</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSWindow"/>
<reference key="NSTarget" ref="1063387772"/> <reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string> <string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99492377042770386</double> <double key="NSPercent">0.99492377042770386</double>
@ -1519,10 +1515,11 @@ ZSBYMTEuA</string>
<int key="NSvFlags">256</int> <int key="NSvFlags">256</int>
<string key="NSFrame">{{1, 215}, {301, 15}}</string> <string key="NSFrame">{{1, 215}, {301, 15}}</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSWindow"/>
<int key="NSsFlags">1</int> <int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1063387772"/> <reference key="NSTarget" ref="1063387772"/>
<string key="NSAction">_doScroller:</string> <string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.68852460384368896</double> <double key="NSPercent">0.99668874172185429</double>
</object> </object>
<object class="NSClipView" id="672307654"> <object class="NSClipView" id="672307654">
<reference key="NSNextResponder" ref="1063387772"/> <reference key="NSNextResponder" ref="1063387772"/>
@ -1533,6 +1530,7 @@ ZSBYMTEuA</string>
</object> </object>
<string key="NSFrame">{{1, 0}, {301, 17}}</string> <string key="NSFrame">{{1, 0}, {301, 17}}</string>
<reference key="NSSuperview" ref="1063387772"/> <reference key="NSSuperview" ref="1063387772"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="792419186"/> <reference key="NSNextKeyView" ref="792419186"/>
<reference key="NSDocView" ref="792419186"/> <reference key="NSDocView" ref="792419186"/>
<reference key="NSBGColor" ref="812484075"/> <reference key="NSBGColor" ref="812484075"/>
@ -1542,6 +1540,7 @@ ZSBYMTEuA</string>
</object> </object>
<string key="NSFrame">{{20, 20}, {318, 231}}</string> <string key="NSFrame">{{20, 20}, {318, 231}}</string>
<reference key="NSSuperview" ref="85544634"/> <reference key="NSSuperview" ref="85544634"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="580565898"/> <reference key="NSNextKeyView" ref="580565898"/>
<int key="NSsFlags">50</int> <int key="NSsFlags">50</int>
<reference key="NSVScroller" ref="842897584"/> <reference key="NSVScroller" ref="842897584"/>
@ -1556,11 +1555,12 @@ ZSBYMTEuA</string>
<int key="NSvFlags">265</int> <int key="NSvFlags">265</int>
<string key="NSFrame">{{340, 223}, {114, 32}}</string> <string key="NSFrame">{{340, 223}, {114, 32}}</string>
<reference key="NSSuperview" ref="85544634"/> <reference key="NSSuperview" ref="85544634"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool> <bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1025474039"> <object class="NSButtonCell" key="NSCell" id="1025474039">
<int key="NSCellFlags">-2080244224</int> <int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">137887744</int> <int key="NSCellFlags2">137887744</int>
<string type="base64-UTF8" key="NSContents">QcOxYWRpciDDrXRlbQ</string> <string key="NSContents">Añadir ítem</string>
<reference key="NSSupport" ref="463863101"/> <reference key="NSSupport" ref="463863101"/>
<reference key="NSControlView" ref="758204686"/> <reference key="NSControlView" ref="758204686"/>
<int key="NSButtonFlags">-2038284033</int> <int key="NSButtonFlags">-2038284033</int>
@ -1576,14 +1576,16 @@ ZSBYMTEuA</string>
</object> </object>
</object> </object>
<string key="NSFrameSize">{454, 271}</string> <string key="NSFrameSize">{454, 271}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object> </object>
<string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string>
<string key="NSMinSize">{320, 262}</string> <string key="NSMinSize">{320, 262}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">x11_apps</string> <string key="NSFrameAutosaveName">x11_apps</string>
</object> </object>
<object class="NSMenu" id="294137138"> <object class="NSMenu" id="294137138">
<string type="base64-UTF8" key="NSTitle">TWVuw7o</string> <string key="NSTitle">Menú</string>
<object class="NSMutableArray" key="NSMenuItems"> <object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="318286212"> <object class="NSMenuItem" id="318286212">
@ -1623,7 +1625,7 @@ ZSBYMTEuA</string>
</object> </object>
<object class="NSMenuItem" id="1032342329"> <object class="NSMenuItem" id="1032342329">
<reference key="NSMenu" ref="48278059"/> <reference key="NSMenu" ref="48278059"/>
<string type="base64-UTF8" key="NSTitle">UGVyc29uYWxpemFy4oCmA</string> <string key="NSTitle">Personalizar…</string>
<string key="NSKeyEquiv"/> <string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int> <int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int> <int key="NSMnemonicLoc">2147483647</int>
@ -2198,28 +2200,26 @@ ZSBYMTEuA</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<object class="NSArray" key="object" id="330408435"> <reference key="object" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="904585544"/> <reference key="children" ref="904585544"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-2</int> <int key="objectID">-2</int>
<reference key="object" ref="815810918"/> <reference key="object" ref="815810918"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> <string key="objectName">File's Owner</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-1</int> <int key="objectID">-1</int>
<reference key="object" ref="941939442"/> <reference key="object" ref="941939442"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">First Responder</string> <string key="objectName">First Responder</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-3</int> <int key="objectID">-3</int>
<reference key="object" ref="951368722"/> <reference key="object" ref="951368722"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">Application</string> <string key="objectName">Application</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2233,7 +2233,7 @@ ZSBYMTEuA</string>
<reference ref="868031522"/> <reference ref="868031522"/>
<reference ref="551174276"/> <reference ref="551174276"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">MainMenu</string> <string key="objectName">MainMenu</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2478,7 +2478,7 @@ ZSBYMTEuA</string>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">196</int> <int key="objectID">196</int>
<reference key="object" ref="485884620"/> <reference key="object" ref="485884620"/>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">X11Controller</string> <string key="objectName">X11Controller</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2488,7 +2488,7 @@ ZSBYMTEuA</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="941366957"/> <reference ref="941366957"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">PrefsPanel</string> <string key="objectName">PrefsPanel</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2752,7 +2752,7 @@ ZSBYMTEuA</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="85544634"/> <reference ref="85544634"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">EditPrograms</string> <string key="objectName">EditPrograms</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -2775,7 +2775,7 @@ ZSBYMTEuA</string>
<reference ref="318286212"/> <reference ref="318286212"/>
<reference ref="511651072"/> <reference ref="511651072"/>
</object> </object>
<reference key="parent" ref="330408435"/> <reference key="parent" ref="0"/>
<string key="objectName">DockMenu</string> <string key="objectName">DockMenu</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
@ -3329,6 +3329,7 @@ ZSBYMTEuA</string>
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-3.IBPluginDependency</string>
<string>-3.ImportedFromIB2</string> <string>-3.ImportedFromIB2</string>
<string>100292.IBPluginDependency</string> <string>100292.IBPluginDependency</string>
<string>100293.IBPluginDependency</string> <string>100293.IBPluginDependency</string>
@ -3618,6 +3619,7 @@ ZSBYMTEuA</string>
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -3685,10 +3687,10 @@ ZSBYMTEuA</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<string>{{271, 666}, {301, 153}}</string> <string>{{271, 666}, {301, 153}}</string>
<string>{{438, 548}, {619, 308}}</string> <string>{{300, 409}, {619, 308}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO"/> <boolean value="YES"/>
<string>{{438, 548}, {619, 308}}</string> <string>{{300, 409}, {619, 308}}</string>
<integer value="1"/> <integer value="1"/>
<string>{{184, 290}, {481, 345}}</string> <string>{{184, 290}, {481, 345}}</string>
<integer value="0"/> <integer value="0"/>
@ -3705,11 +3707,11 @@ ZSBYMTEuA</string>
<string>{{100, 746}, {155, 33}}</string> <string>{{100, 746}, {155, 33}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string> <string>{{68, 453}, {454, 271}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/> <integer value="1"/>
<integer value="1"/> <integer value="1"/>
<string>{{68, 585}, {454, 271}}</string> <string>{{68, 453}, {454, 271}}</string>
<integer value="1"/> <integer value="1"/>
<string>{{433, 406}, {486, 327}}</string> <string>{{433, 406}, {486, 327}}</string>
<integer value="0"/> <integer value="0"/>
@ -3910,9 +3912,7 @@ ZSBYMTEuA</string>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -3920,9 +3920,7 @@ ZSBYMTEuA</string>
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations"> <object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -3960,6 +3958,15 @@ ZSBYMTEuA</string>
</object> </object>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string> <string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
</data> </data>

View File

@ -9,6 +9,6 @@
<key>LprojRevisionLevel</key> <key>LprojRevisionLevel</key>
<string>1</string> <string>1</string>
<key>LprojVersion</key> <key>LprojVersion</key>
<string>73</string> <string>83</string>
</dict> </dict>
</plist> </plist>

Some files were not shown because too many files have changed in this diff Show More