From 7d0f7518c2235a9dc783029971259ddaada2db20 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Thu, 23 Apr 2009 08:42:38 -0700 Subject: Fix byte swapping of XF86VidMode{Get,Set}GammaRamp Fixes OpenSolaris Bug 8315: Xorg segfaults when screensaver fades in cross-endian xdmcp session Signed-off-by: Alan Coopersmith --- hw/xfree86/dixmods/extmod/xf86vmode.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c index ea8089e94..10b9ed370 100644 --- a/hw/xfree86/dixmods/extmod/xf86vmode.c +++ b/hw/xfree86/dixmods/extmod/xf86vmode.c @@ -1541,6 +1541,7 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) { CARD16 *ramp = NULL; int n, length, i; + size_t ramplen; xXF86VidModeGetGammaRampReply rep; REQUEST(xXF86VidModeGetGammaRampReq); @@ -1555,7 +1556,8 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) length = (stuff->size + 1) & ~1; if(stuff->size) { - if(!(ramp = xalloc(length * 3 * sizeof(CARD16)))) + ramplen = length * 3 * sizeof(CARD16); + if (!(ramp = xalloc(ramplen))) return BadAlloc; if (!VidModeGetGammaRamp(stuff->screen, stuff->size, @@ -1573,13 +1575,12 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); swaps(&rep.size, n); - for(i = 0; i < length * 3; i++) - swaps(&ramp[i],n); + SwapShorts(ramp, length * 3); } WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), (char *)&rep); if(stuff->size) { - WriteToClient(client, rep.length << 2, (char*)ramp); + WriteToClient(client, ramplen, (char*)ramp); xfree(ramp); } @@ -2060,7 +2061,6 @@ SProcXF86VidModeGetGamma(ClientPtr client) static int SProcXF86VidModeSetGammaRamp(ClientPtr client) { - CARD16 *ramp; int length, n; REQUEST(xXF86VidModeSetGammaRampReq); swaps(&stuff->length, n); @@ -2069,11 +2069,7 @@ SProcXF86VidModeSetGammaRamp(ClientPtr client) swaps(&stuff->screen, n); length = ((stuff->size + 1) & ~1) * 6; REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); - ramp = (CARD16*)&stuff[1]; - while(length--) { - swaps(ramp, n); - ramp++; - } + SwapRestS(stuff); return ProcXF86VidModeSetGammaRamp(client); } -- cgit v1.2.3 From 0c467b1f990f156a34d5ef117bd825df6b633114 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 24 Apr 2009 00:05:28 -0700 Subject: Add casts to generated entries in sdksyms.c to silence type mismatch warnings Signed-off-by: Alan Coopersmith --- hw/xfree86/loader/sdksyms.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh index be0b0ee6f..b320661c7 100755 --- a/hw/xfree86/loader/sdksyms.sh +++ b/hw/xfree86/loader/sdksyms.sh @@ -399,7 +399,7 @@ BEGIN { sub(/[^a-zA-Z0-9_].*/, "", symbol); #print; - printf(" &%s,\n", symbol); + printf(" (void *) &%s,\n", symbol); } } -- cgit v1.2.3 From 64b7f96dca23d2b33e0b8a8785d628d9a2f50e7b Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 24 Apr 2009 00:14:12 -0700 Subject: Add SIGIO/SIGPOLL support for Solaris Signed-off-by: Alan Coopersmith --- configure.ac | 2 +- hw/xfree86/os-support/shared/sigio.c | 42 ++++++++++++++++++++++++++----- hw/xfree86/os-support/solaris/Makefile.am | 3 ++- include/xorg-config.h.in | 3 +++ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index ef5062705..f0317bd76 100644 --- a/configure.ac +++ b/configure.ac @@ -113,7 +113,7 @@ AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"]) AC_HEADER_DIRENT 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. AC_C_CONST diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c index 54c02cc8e..256578289 100644 --- a/hw/xfree86/os-support/shared/sigio.c +++ b/hw/xfree86/os-support/shared/sigio.c @@ -63,6 +63,10 @@ # include "xf86_OSlib.h" # include "inputstr.h" +#ifdef HAVE_STROPTS_H +# include +#endif + /* * Linux libc5 defines FASYNC, but not O_ASYNC. Don't know if it is * functional or not. @@ -139,6 +143,7 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure) struct sigaction osa; int i; int blocked; + int installed = FALSE; for (i = 0; i < MAX_FUNCS; i++) { @@ -147,15 +152,30 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure) if (xf86IsPipe (fd)) return 0; blocked = xf86BlockSIGIO(); +#ifdef O_ASYNC 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)); - xf86UnblockSIGIO(blocked); - return 0; + } else { + 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) { - xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", - fd, strerror(errno)); +#endif +#ifdef I_SETSIG /* System V Streams - used on Solaris for input devices */ + 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); return 0; } @@ -221,7 +241,17 @@ xf86RemoveSIGIOHandler(int fd) } if (ret) { +#ifdef 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; xf86SigIOMaxFd = maxfd; if (!max) diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am index a4ef67b91..bcb987490 100644 --- a/hw/xfree86/os-support/solaris/Makefile.am +++ b/hw/xfree86/os-support/solaris/Makefile.am @@ -21,7 +21,8 @@ noinst_LTLIBRARIES = libsolaris.la libsolaris_la_SOURCES = sun_init.c \ sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.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/vidmem.c \ $(VTSW_SRC) diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in index f9b77d03d..ebeb44a37 100644 --- a/include/xorg-config.h.in +++ b/include/xorg-config.h.in @@ -54,6 +54,9 @@ /* Solaris 8 or later? */ #undef __SOL8__ +/* Define to 1 if you have the header file. */ +#undef HAVE_STROPTS_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_KD_H -- cgit v1.2.3 From a1c98f7fa9aa0cd5075ef2054c5d2be4d1e740f0 Mon Sep 17 00:00:00 2001 From: Joel Bosveld Date: Fri, 24 Apr 2009 10:12:26 -0700 Subject: Correct fcntl(F_SETOWN) error check in non-Solaris sigio code commit 64b7f96dca accidentally inverted the comparison, could result in crashes on some systems later on. Signed-off-by: Alan Coopersmith --- hw/xfree86/os-support/shared/sigio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c index 256578289..5ba0b7e1c 100644 --- a/hw/xfree86/os-support/shared/sigio.c +++ b/hw/xfree86/os-support/shared/sigio.c @@ -157,7 +157,7 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure) xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n", fd, strerror(errno)); } else { - if (fcntl(fd, F_SETOWN, getpid()) != -1) { + if (fcntl(fd, F_SETOWN, getpid()) == -1) { xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", fd, strerror(errno)); } else { -- cgit v1.2.3 From 28ddfc88d8d547941c7f4713db527a3c2f9ec35a Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 24 Apr 2009 12:09:21 -0700 Subject: DRI2: Add interface for drivers to query DRI2 extension version Signed-off-by: Ian Romanick --- hw/xfree86/dri2/dri2.c | 9 +++++++++ hw/xfree86/dri2/dri2.h | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 0b52a0f8c..80de18f86 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -380,3 +380,12 @@ static XF86ModuleVersionInfo DRI2VersRec = _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; +} diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h index 847e57c68..9d7d6dc80 100644 --- a/hw/xfree86/dri2/dri2.h +++ b/hw/xfree86/dri2/dri2.h @@ -100,4 +100,22 @@ extern _X_EXPORT int DRI2CopyRegion(DrawablePtr pDraw, unsigned int dest, 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); + #endif -- cgit v1.2.3 From ff6c7764c2909e4126403b7211faa6c58556b341 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 24 Apr 2009 12:49:19 -0700 Subject: DRI2: Implement protocol for DRI2GetBuffersWithFormat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change implements the protocol for DRI2GetBuffersWithFormat, but the bulk of the differences are the changes to the extension / driver interface to make this function work. The old CreateBuffers and DeleteBuffers routines are replaced with CreateBuffer and DeleteBuffer (both singular). This allows drivers to allocate buffers for a drawable one at a time. As a result, 3D drivers can now allocate the (fake) front-buffer for a window only when it is needed. Since 3D drivers only ask for the front-buffer on demand, the real front-buffer is always created. This allows CopyRegion impelemenations of SwapBuffers to continue working. As with previous version of this code, if the client asks for the front-buffer for a window, we instead give it the fake front-buffer. Signed-off-by: Ian Romanick Reviewed-by: Kristian Høgsberg --- configure.ac | 2 +- glx/glxdri2.c | 59 ++++++++++++-- hw/xfree86/dri2/dri2.c | 195 +++++++++++++++++++++++++++++++++------------- hw/xfree86/dri2/dri2.h | 28 ++++++- hw/xfree86/dri2/dri2ext.c | 88 ++++++++++++++------- 5 files changed, 284 insertions(+), 88 deletions(-) diff --git a/configure.ac b/configure.ac index f0317bd76..9eadabced 100644 --- a/configure.ac +++ b/configure.ac @@ -886,7 +886,7 @@ if test "x$DRI" = xyes; then AC_SUBST(DRIPROTO_CFLAGS) fi -PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= 1.99.3], +PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= 2.1], [HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no]) case "$DRI2,$HAVE_DRI2PROTO" in yes,no) diff --git a/glx/glxdri2.c b/glx/glxdri2.c index 612defb3f..529b2df10 100644 --- a/glx/glxdri2.c +++ b/glx/glxdri2.c @@ -406,7 +406,7 @@ dri2GetBuffers(__DRIdrawable *driDrawable, int *out_count, void *loaderPrivate) { __GLXDRIdrawable *private = loaderPrivate; - DRI2BufferPtr buffers; + DRI2BufferPtr *buffers; int i; int j; @@ -427,15 +427,59 @@ dri2GetBuffers(__DRIdrawable *driDrawable, /* Do not send the real front buffer of a window to the client. */ if ((private->base.pDraw->type == DRAWABLE_WINDOW) - && (buffers[i].attachment == DRI2BufferFrontLeft)) { + && (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; + 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++; + } + + *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++; } @@ -454,6 +498,7 @@ static const __DRIdri2LoaderExtension loaderExtension = { { __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION }, dri2GetBuffers, dri2FlushFrontBuffer, + dri2GetBuffersWithFormat, }; static const __DRIextension *loader_extensions[] = { diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 80de18f86..9ded048eb 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -53,7 +53,7 @@ typedef struct _DRI2Drawable { unsigned int refCount; int width; int height; - DRI2BufferPtr buffers; + DRI2BufferPtr *buffers; int bufferCount; unsigned int pendingSequence; } DRI2DrawableRec, *DRI2DrawablePtr; @@ -63,8 +63,8 @@ typedef struct _DRI2Screen { const char *deviceName; int fd; unsigned int lastSequence; - DRI2CreateBuffersProcPtr CreateBuffers; - DRI2DestroyBuffersProcPtr DestroyBuffers; + DRI2CreateBufferProcPtr CreateBuffer; + DRI2DestroyBufferProcPtr DestroyBuffer; DRI2CopyRegionProcPtr CopyRegion; HandleExposuresProcPtr HandleExposures; @@ -132,71 +132,130 @@ DRI2CreateDrawable(DrawablePtr pDraw) return Success; } -DRI2BufferPtr -DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, - unsigned int *attachments, int count, int *out_count) +static int +find_attachment(DRI2BufferPtr *buffer_list, int count, unsigned attachment) +{ + 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); DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); - DRI2BufferPtr buffers; - unsigned int temp_buf[32]; - unsigned int *temp = temp_buf; + DRI2BufferPtr *buffers; + int need_real_front = 0; + int need_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 - * 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; + buffers = xalloc((count + 1) * sizeof(buffers[0])); - if ((count + 1) > 32) { - temp = xalloc((count + 1) * sizeof(temp[0])); - } + for (i = 0; i < count; i++) { + const unsigned attachment = *(attachments++); + const unsigned format = (has_format) ? *(attachments++) : 0; + + buffers[i] = allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment, + format, dimensions_match); - for (i = 0; i < count; i++) { - if (attachments[i] == DRI2BufferFrontLeft) { + + /* 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 (pDraw->type == DRAWABLE_WINDOW) { + if (attachment == DRI2BufferBackLeft) { + need_real_front++; + front_format = format; + } + + if (attachment == DRI2BufferFrontLeft) { + need_real_front--; need_fake_front++; + front_format = format; } - if (attachments[i] == DRI2BufferFakeFrontLeft) { + if (attachment == DRI2BufferFakeFrontLeft) { need_fake_front--; 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) { + buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv, + DRI2BufferFrontLeft, + front_format, dimensions_match); + } - if (pPriv->buffers == NULL || - pDraw->width != pPriv->width || pDraw->height != pPriv->height) - { - 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 (need_fake_front > 0) { + buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv, + DRI2BufferFakeFrontLeft, + front_format, dimensions_match); + have_fake_front = 1; } - if (temp != temp_buf) { - xfree(temp); + *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; *width = pPriv->width; *height = pPriv->height; - *out_count = pPriv->bufferCount; /* If the client is getting a fake front-buffer, pre-fill it with the @@ -220,6 +279,22 @@ DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, 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 DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion, unsigned int dest, unsigned int src) @@ -237,10 +312,10 @@ DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion, pSrcBuffer = NULL; for (i = 0; i < pPriv->bufferCount; i++) { - if (pPriv->buffers[i].attachment == dest) - pDestBuffer = &pPriv->buffers[i]; - if (pPriv->buffers[i].attachment == src) - pSrcBuffer = &pPriv->buffers[i]; + if (pPriv->buffers[i]->attachment == dest) + pDestBuffer = pPriv->buffers[i]; + if (pPriv->buffers[i]->attachment == src) + pSrcBuffer = pPriv->buffers[i]; } if (pSrcBuffer == NULL || pDestBuffer == NULL) return BadValue; @@ -266,7 +341,16 @@ DRI2DestroyDrawable(DrawablePtr pDraw) if (pPriv->refCount > 0) 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); if (pDraw->type == DRAWABLE_WINDOW) @@ -320,11 +404,18 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) if (!ds) return FALSE; + if ((info->version < 2) + || (info->CreateBuffer == NULL) + || (info->DestroyBuffer == NULL)) { + return FALSE; + } + + ds->fd = info->fd; ds->driverName = info->driverName; ds->deviceName = info->deviceName; - ds->CreateBuffers = info->CreateBuffers; - ds->DestroyBuffers = info->DestroyBuffers; + ds->CreateBuffer = info->CreateBuffer; + ds->DestroyBuffer = info->DestroyBuffer; ds->CopyRegion = info->CopyRegion; dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, ds); @@ -371,7 +462,7 @@ static XF86ModuleVersionInfo DRI2VersRec = MODINFOSTRING1, MODINFOSTRING2, XORG_VERSION_CURRENT, - 1, 0, 0, + 1, 1, 0, ABI_CLASS_EXTENSION, ABI_EXTENSION_VERSION, MOD_CLASS_NONE, diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h index 9d7d6dc80..b3d02a99e 100644 --- a/hw/xfree86/dri2/dri2.h +++ b/hw/xfree86/dri2/dri2.h @@ -41,6 +41,7 @@ typedef struct { unsigned int pitch; unsigned int cpp; unsigned int flags; + unsigned int format; void *driverPrivate; } DRI2BufferRec, *DRI2BufferPtr; @@ -58,8 +59,19 @@ typedef void (*DRI2CopyRegionProcPtr)(DrawablePtr pDraw, typedef void (*DRI2WaitProcPtr)(WindowPtr pWin, 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 { - unsigned int version; /* Version of this struct */ + unsigned int version; /**< Version of this struct */ int fd; const char *driverName; const char *deviceName; @@ -69,6 +81,14 @@ typedef struct { DRI2CopyRegionProcPtr CopyRegion; DRI2WaitProcPtr Wait; + /** + * \name Fields added in version 2 of the structure. + */ + /*@{*/ + DRI2CreateBufferProcPtr CreateBuffer; + DRI2DestroyBufferProcPtr DestroyBuffer; + /*@}*/ + } DRI2InfoRec, *DRI2InfoPtr; 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 DRI2BufferPtr DRI2GetBuffers(DrawablePtr pDraw, +extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, unsigned int *attachments, @@ -118,4 +138,8 @@ extern _X_EXPORT int DRI2CopyRegion(DrawablePtr pDraw, */ 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 diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c index 23f312149..029dce84e 100644 --- a/hw/xfree86/dri2/dri2ext.c +++ b/hw/xfree86/dri2/dri2ext.c @@ -80,7 +80,7 @@ ProcDRI2QueryVersion(ClientPtr client) rep.length = 0; rep.sequenceNumber = client->sequence; rep.majorVersion = 1; - rep.minorVersion = 0; + rep.minorVersion = 1; if (client->swapped) { swaps(&rep.sequenceNumber, n); @@ -192,32 +192,20 @@ ProcDRI2DestroyDrawable(ClientPtr client) 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; - DrawablePtr pDrawable; - DRI2BufferPtr buffers; - int i, status, width, height, count; - unsigned int *attachments; - xDRI2Buffer buffer; - int skip; + int skip = 0; + int i; - 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) { for (i = 0; i < count; i++) { /* Do not send the real front buffer of a window to the client. */ - if (buffers[i].attachment == DRI2BufferFrontLeft) { + if (buffers[i]->attachment == DRI2BufferFrontLeft) { skip++; continue; } @@ -233,20 +221,66 @@ ProcDRI2GetBuffers(ClientPtr client) WriteToClient(client, sizeof(xDRI2GetBuffersReply), &rep); for (i = 0; i < count; i++) { + xDRI2Buffer buffer; + /* Do not send the real front buffer of a window to the client. */ if ((pDrawable->type == DRAWABLE_WINDOW) - && (buffers[i].attachment == DRI2BufferFrontLeft)) { + && (buffers[i]->attachment == DRI2BufferFrontLeft)) { continue; } - buffer.attachment = buffers[i].attachment; - buffer.name = buffers[i].name; - buffer.pitch = buffers[i].pitch; - buffer.cpp = buffers[i].cpp; - buffer.flags = buffers[i].flags; + buffer.attachment = buffers[i]->attachment; + buffer.name = buffers[i]->name; + buffer.pitch = buffers[i]->pitch; + buffer.cpp = buffers[i]->cpp; + buffer.flags = buffers[i]->flags; 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; } @@ -313,6 +347,8 @@ ProcDRI2Dispatch (ClientPtr client) return ProcDRI2GetBuffers(client); case X_DRI2CopyRegion: return ProcDRI2CopyRegion(client); + case X_DRI2GetBuffersWithFormat: + return ProcDRI2GetBuffersWithFormat(client); default: return BadRequest; } -- cgit v1.2.3 From a8cf63fd18b0ddadbadf7b47d620159854920050 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Thu, 23 Apr 2009 14:57:04 -0700 Subject: Export CompositeRegisterAlternateVisuals. Drivers need this if they add visuals that require implicit redirection. Add a new SDK header, compositeext.h, to contain the prototype for this function. --- composite/Makefile.am | 4 ++++ composite/compinit.c | 1 + composite/compint.h | 4 ---- composite/compositeext.h | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 composite/compositeext.h diff --git a/composite/Makefile.am b/composite/Makefile.am index d7bead137..c2f5123f2 100644 --- a/composite/Makefile.am +++ b/composite/Makefile.am @@ -2,6 +2,10 @@ noinst_LTLIBRARIES = libcomposite.la AM_CFLAGS = $(DIX_CFLAGS) +if XORG +sdk_HEADERS = compositeext.h +endif + libcomposite_la_SOURCES = \ compalloc.c \ compext.c \ diff --git a/composite/compinit.c b/composite/compinit.c index a844017c1..ee269afa0 100644 --- a/composite/compinit.c +++ b/composite/compinit.c @@ -45,6 +45,7 @@ #endif #include "compint.h" +#include "compositeext.h" static int CompScreenPrivateKeyIndex; DevPrivateKey CompScreenPrivateKey = &CompScreenPrivateKeyIndex; diff --git a/composite/compint.h b/composite/compint.h index 1c19ccd39..fd2fea153 100644 --- a/composite/compint.h +++ b/composite/compint.h @@ -224,10 +224,6 @@ CompositeExtensionInit (void); * compinit.c */ -Bool -CompositeRegisterAlternateVisuals (ScreenPtr pScreen, - VisualID *vids, int nVisuals); - Bool compScreenInit (ScreenPtr pScreen); diff --git a/composite/compositeext.h b/composite/compositeext.h new file mode 100644 index 000000000..b20bab158 --- /dev/null +++ b/composite/compositeext.h @@ -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 +#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_ */ -- cgit v1.2.3 From 40a8f2f4088aa353de733a11327b628ef13a52e6 Mon Sep 17 00:00:00 2001 From: Pierre Willenbrock Date: Sun, 19 Apr 2009 21:15:22 +0200 Subject: Fix obvious copypasta Reviewed-by: Ian Romanick --- glx/glxcmds.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 86e8dd8a5..1ae31515d 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -799,8 +799,8 @@ int __glXDisp_WaitX(__GLXclientState *cl, GLbyte *pc) return error; } - if (glxc && glxc->drawPriv->waitGL) - (*glxc->drawPriv->waitGL)(glxc->drawPriv); + if (glxc && glxc->drawPriv->waitX) + (*glxc->drawPriv->waitX)(glxc->drawPriv); return Success; } -- cgit v1.2.3 From 707af5f8c5fae3b6c4c5125a91917667bb0ab908 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Thu, 23 Apr 2009 16:15:01 +0100 Subject: Make the cursor completely optional For embedded use, it's convenient to be able to disable the cursor completely, without having to audit and fix up all your third-party code (e.g. Mozilla Firefox). Add -nocursor and -cursor server options to enable and disable the cursor. The default is still -cursor, but embedded users can run the server with -nocursor to hide the cursor regardless of what application developers do. Signed-off-by: Peter Hutterer --- include/input.h | 4 ++++ os/utils.c | 12 +++++++++++- xfixes/cursor.c | 6 ++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/input.h b/include/input.h index 56c3d2981..30e30bb9e 100644 --- a/include/input.h +++ b/include/input.h @@ -498,4 +498,8 @@ extern _X_EXPORT void DDXRingBell( int pitch, int duration); +/* Set to TRUE by default - os/utils.c sets it to FALSE on user request, + xfixes/cursor.c uses it to determine if the cursor is enabled */ +extern Bool EnableCursor; + #endif /* INPUT_H */ diff --git a/os/utils.c b/os/utils.c index 78a50b254..00abd6396 100644 --- a/os/utils.c +++ b/os/utils.c @@ -482,6 +482,8 @@ void UseMsg(void) ErrorF("-c turns off key-click\n"); ErrorF("c # key-click volume (0-100)\n"); ErrorF("-cc int default color visual class\n"); + ErrorF("-cursor enable the cursor (default)\n"); + ErrorF("-nocursor disable the cursor\n"); ErrorF("-core generate core dump on fatal error\n"); ErrorF("-dpi int screen resolution in dots per inch\n"); #ifdef DPMSExtension @@ -660,7 +662,15 @@ ProcessCommandLine(int argc, char *argv[]) #endif CoreDump = TRUE; } - else if ( strcmp( argv[i], "-dpi") == 0) + else if ( strcmp( argv[i], "-nocursor") == 0) + { + EnableCursor = FALSE; + } + else if ( strcmp( argv[i], "-cursor") == 0) + { + EnableCursor = TRUE; + } + else if ( strcmp( argv[i], "-dpi") == 0) { if(++i < argc) monitorResolution = atoi(argv[i]); diff --git a/xfixes/cursor.c b/xfixes/cursor.c index 33ab4265c..eb83cfeb7 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -129,6 +129,8 @@ typedef struct _CursorScreen { /* The cursor doesn't show up until the first XDefineCursor() */ static Bool CursorVisible = FALSE; +Bool EnableCursor = TRUE; + static Bool CursorDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen, @@ -144,7 +146,7 @@ CursorDisplayCursor (DeviceIntPtr pDev, * initial root window setup. Not a great way to do it, I admit. */ if (ConnectionInfo) - CursorVisible = TRUE; + CursorVisible = EnableCursor; if (cs->pCursorHideCounts != NULL || !CursorVisible) { ret = ((*pScreen->RealizeCursor)(pDev, pScreen, pInvisibleCursor) && @@ -1052,7 +1054,7 @@ XFixesCursorInit (void) int i; if (party_like_its_1989) - CursorVisible = TRUE; + CursorVisible = EnableCursor; for (i = 0; i < screenInfo.numScreens; i++) { -- cgit v1.2.3 From 2a2a7fa6856b2e1954e904577535118f20cd9133 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Mon, 27 Apr 2009 20:23:53 -0700 Subject: Solaris: use instead of stale copy in Xorg sources Signed-off-by: Alan Coopersmith --- configure.ac | 2 +- hw/xfree86/os-support/solaris/Makefile.am | 11 ++- hw/xfree86/os-support/solaris/agpgart.h | 108 ------------------------------ hw/xfree86/os-support/solaris/sun_agp.c | 7 +- 4 files changed, 7 insertions(+), 121 deletions(-) delete mode 100644 hw/xfree86/os-support/solaris/agpgart.h diff --git a/configure.ac b/configure.ac index 9eadabced..438ee0899 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) 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]) dnl APM header diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am index bcb987490..4496ee122 100644 --- a/hw/xfree86/os-support/solaris/Makefile.am +++ b/hw/xfree86/os-support/solaris/Makefile.am @@ -4,12 +4,11 @@ else VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c endif -# TODO: Don't build agpgart on SPARC -#if defined(i386Architecture) || defined(AMD64Architecture) +if AGP AGP_SRC = sun_agp.c -#else -#AGP_SRC = $(srcdir)/../shared/agp_noop.c -#endif +else +AGP_SRC = $(srcdir)/../shared/agp_noop.c +endif SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il @@ -28,7 +27,7 @@ libsolaris_la_SOURCES = sun_init.c \ $(VTSW_SRC) nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC) -sdk_HEADERS = agpgart.h +sdk_HEADERS = nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS) diff --git a/hw/xfree86/os-support/solaris/agpgart.h b/hw/xfree86/os-support/solaris/agpgart.h deleted file mode 100644 index 566de8046..000000000 --- a/hw/xfree86/os-support/solaris/agpgart.h +++ /dev/null @@ -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 */ diff --git a/hw/xfree86/os-support/solaris/sun_agp.c b/hw/xfree86/os-support/solaris/sun_agp.c index d151bf611..376f98edd 100644 --- a/hw/xfree86/os-support/solaris/sun_agp.c +++ b/hw/xfree86/os-support/solaris/sun_agp.c @@ -34,8 +34,6 @@ * of the copyright holder. */ -#pragma ident "@(#)sun_agp.c 1.1 05/04/04 SMI" - #ifdef HAVE_XORG_CONFIG_H #include #endif @@ -49,11 +47,8 @@ #include #include #include -#include "agpgart.h" +#include -#ifndef AGP_DEVICE -#define AGP_DEVICE "/dev/agpgart" -#endif /* AGP page size is independent of the host page size. */ #ifndef AGP_PAGE_SIZE #define AGP_PAGE_SIZE 4096 -- cgit v1.2.3 From 987579c930bda803427a28cb82773c389f5110d6 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 22 Apr 2009 13:26:40 +1000 Subject: dix: remove all but main() from main.c All other functions are pushed into where they seemed to fit. main.c is now linked separately into libmain.a and linked in by the various DDXs. Signed-off-by: Peter Hutterer --- configure.ac | 10 +- dix/Makefile.am | 6 +- dix/dispatch.c | 341 ++++++++++++++++++++++++++++++++- dix/events.c | 6 + dix/main.c | 368 ------------------------------------ dix/swaprep.c | 15 ++ hw/dmx/Makefile.am | 1 + hw/vfb/Makefile.am | 1 + hw/xfree86/Makefile.am | 2 +- hw/xquartz/mach-startup/Makefile.am | 2 +- include/dix.h | 1 + 11 files changed, 376 insertions(+), 377 deletions(-) diff --git a/configure.ac b/configure.ac index 438ee0899..6628a4462 100644 --- a/configure.ac +++ b/configure.ac @@ -1153,6 +1153,10 @@ else DIX_LIB='$(top_builddir)/dix/libdix.la' OS_LIB='$(top_builddir)/os/libos.la' fi + +MAIN_LIB='$(top_builddir)/dix/libmain.la' +AC_SUBST([MAIN_LIB]) + MI_LIB='$(top_builddir)/mi/libmi.la' MI_EXT_LIB='$(top_builddir)/mi/libmiext.la' MI_INC='-I$(top_srcdir)/mi' @@ -1271,7 +1275,7 @@ AC_MSG_RESULT([$XNEST]) AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes]) if test "x$XNEST" = xyes; then - XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DIX_LIB $OS_LIB $CONFIG_LIB" + XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DIX_LIB $MAIN_LIB $OS_LIB $CONFIG_LIB" XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS" AC_SUBST([XNEST_LIBS]) AC_SUBST([XNEST_SYS_LIBS]) @@ -1643,7 +1647,7 @@ if test "x$XQUARTZ" = xyes; then AC_DEFINE(XQUARTZ,1,[Have Quartz]) AC_DEFINE(ROOTLESS,1,[Build Rootless code]) - DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB" + DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $MAIN_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB" AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) @@ -1828,7 +1832,7 @@ if test "$KDRIVE" = yes; then ;; esac KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.la' - KDRIVE_LOCAL_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB $CONFIG_LIB" + KDRIVE_LOCAL_LIBS="$DIX_LIB $MAIN_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 $KDRIVE_OS_LIB $OS_LIB" KDRIVE_LIBS="$TSLIB_LIBS $KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS" diff --git a/dix/Makefile.am b/dix/Makefile.am index 83b8c62c2..ab702f790 100644 --- a/dix/Makefile.am +++ b/dix/Makefile.am @@ -1,7 +1,10 @@ -noinst_LTLIBRARIES = libdix.la +noinst_LTLIBRARIES = libdix.la libmain.la AM_CFLAGS = $(DIX_CFLAGS) +libmain_la_SOURCES = \ + main.c + libdix_la_SOURCES = \ atom.c \ colormap.c \ @@ -26,7 +29,6 @@ libdix_la_SOURCES = \ grabs.c \ initatoms.c \ inpututils.c \ - main.c \ pixmap.c \ privates.c \ property.c \ diff --git a/dix/dispatch.c b/dix/dispatch.c index a9f936707..16a51bdc5 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -107,6 +107,7 @@ Equipment Corporation. #ifdef HAVE_DIX_CONFIG_H #include +#include #endif #ifdef PANORAMIX_DEBUG @@ -134,6 +135,7 @@ int ProcInitialConnection(); #include "xace.h" #include "inputstr.h" #include "xkbsrv.h" +#include "site.h" #ifdef XSERVER_DTRACE #include "registry.h" @@ -150,7 +152,9 @@ typedef const char *string; #define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i) #define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i)) -extern xConnSetupPrefix connSetupPrefix; +xConnSetupPrefix connSetupPrefix; + +PaddingInfo PixmapWidthPaddingInfo[33]; static ClientPtr grabClient; #define GrabNone 0 @@ -160,7 +164,7 @@ static int grabState = GrabNone; static long grabWaiters[mskcnt]; CallbackListPtr ServerGrabCallback = NULL; HWEventQueuePtr checkForInput[2]; -extern int connBlockScreenStart; +int connBlockScreenStart; static void KillAllClients(void); @@ -461,6 +465,166 @@ Dispatch(void) #undef MAJOROP +static int VendorRelease = VENDOR_RELEASE; +static char *VendorString = VENDOR_NAME; + +static const int padlength[4] = {0, 3, 2, 1}; + +void +SetVendorRelease(int release) +{ + VendorRelease = release; +} + +void +SetVendorString(char *string) +{ + VendorString = string; +} + +Bool +CreateConnectionBlock(void) +{ + xConnSetup setup; + xWindowRoot root; + xDepth depth; + xVisualType visual; + xPixmapFormat format; + unsigned long vid; + int i, j, k, + lenofblock, + sizesofar = 0; + char *pBuf; + + + memset(&setup, 0, sizeof(xConnSetup)); + /* Leave off the ridBase and ridMask, these must be sent with + connection */ + + setup.release = VendorRelease; + /* + * per-server image and bitmap parameters are defined in Xmd.h + */ + setup.imageByteOrder = screenInfo.imageByteOrder; + + setup.bitmapScanlineUnit = screenInfo.bitmapScanlineUnit; + setup.bitmapScanlinePad = screenInfo.bitmapScanlinePad; + + setup.bitmapBitOrder = screenInfo.bitmapBitOrder; + setup.motionBufferSize = NumMotionEvents(); + setup.numRoots = screenInfo.numScreens; + setup.nbytesVendor = strlen(VendorString); + setup.numFormats = screenInfo.numPixmapFormats; + setup.maxRequestSize = MAX_REQUEST_SIZE; + QueryMinMaxKeyCodes(&setup.minKeyCode, &setup.maxKeyCode); + + lenofblock = sizeof(xConnSetup) + + ((setup.nbytesVendor + 3) & ~3) + + (setup.numFormats * sizeof(xPixmapFormat)) + + (setup.numRoots * sizeof(xWindowRoot)); + ConnectionInfo = xalloc(lenofblock); + if (!ConnectionInfo) + return FALSE; + + memmove(ConnectionInfo, (char *)&setup, sizeof(xConnSetup)); + sizesofar = sizeof(xConnSetup); + pBuf = ConnectionInfo + sizeof(xConnSetup); + + memmove(pBuf, VendorString, (int)setup.nbytesVendor); + sizesofar += setup.nbytesVendor; + pBuf += setup.nbytesVendor; + i = padlength[setup.nbytesVendor & 3]; + sizesofar += i; + while (--i >= 0) + *pBuf++ = 0; + + memset(&format, 0, sizeof(xPixmapFormat)); + for (i=0; idrawable.id; + root.defaultColormap = pScreen->defColormap; + root.whitePixel = pScreen->whitePixel; + root.blackPixel = pScreen->blackPixel; + root.currentInputMask = 0; /* filled in when sent */ + root.pixWidth = pScreen->width; + root.pixHeight = pScreen->height; + root.mmWidth = pScreen->mmWidth; + root.mmHeight = pScreen->mmHeight; + root.minInstalledMaps = pScreen->minInstalledCmaps; + root.maxInstalledMaps = pScreen->maxInstalledCmaps; + root.rootVisualID = pScreen->rootVisual; + root.backingStore = pScreen->backingStoreSupport; + root.saveUnders = FALSE; + root.rootDepth = pScreen->rootDepth; + root.nDepths = pScreen->numDepths; + memmove(pBuf, (char *)&root, sizeof(xWindowRoot)); + sizesofar += sizeof(xWindowRoot); + pBuf += sizeof(xWindowRoot); + + pDepth = pScreen->allowedDepths; + for(j = 0; j < pScreen->numDepths; j++, pDepth++) + { + lenofblock += sizeof(xDepth) + + (pDepth->numVids * sizeof(xVisualType)); + pBuf = (char *)xrealloc(ConnectionInfo, lenofblock); + if (!pBuf) + { + xfree(ConnectionInfo); + return FALSE; + } + ConnectionInfo = pBuf; + pBuf += sizesofar; + depth.depth = pDepth->depth; + depth.nVisuals = pDepth->numVids; + memmove(pBuf, (char *)&depth, sizeof(xDepth)); + pBuf += sizeof(xDepth); + sizesofar += sizeof(xDepth); + for(k = 0; k < pDepth->numVids; k++) + { + vid = pDepth->vids[k]; + for (pVisual = pScreen->visuals; + pVisual->vid != vid; + pVisual++) + ; + visual.visualID = vid; + visual.class = pVisual->class; + visual.bitsPerRGB = pVisual->bitsPerRGBValue; + visual.colormapEntries = pVisual->ColormapEntries; + visual.redMask = pVisual->redMask; + visual.greenMask = pVisual->greenMask; + visual.blueMask = pVisual->blueMask; + memmove(pBuf, (char *)&visual, sizeof(xVisualType)); + pBuf += sizeof(xVisualType); + sizesofar += sizeof(xVisualType); + } + } + } + connSetupPrefix.success = xTrue; + connSetupPrefix.length = lenofblock/4; + connSetupPrefix.majorVersion = X_PROTOCOL; + connSetupPrefix.minorVersion = X_PROTOCOL_REVISION; + return TRUE; +} + + int ProcBadRequest(ClientPtr client) { @@ -3700,3 +3864,176 @@ MarkClientException(ClientPtr client) { client->noClientException = -1; } + +/* + * This array encodes the answer to the question "what is the log base 2 + * of the number of pixels that fit in a scanline pad unit?" + * Note that ~0 is an invalid entry (mostly for the benefit of the reader). + */ +static int answer[6][4] = { + /* pad pad pad pad*/ + /* 8 16 32 64 */ + + { 3, 4, 5 , 6 }, /* 1 bit per pixel */ + { 1, 2, 3 , 4 }, /* 4 bits per pixel */ + { 0, 1, 2 , 3 }, /* 8 bits per pixel */ + { ~0, 0, 1 , 2 }, /* 16 bits per pixel */ + { ~0, ~0, 0 , 1 }, /* 24 bits per pixel */ + { ~0, ~0, 0 , 1 } /* 32 bits per pixel */ +}; + +/* + * This array gives the answer to the question "what is the first index for + * the answer array above given the number of bits per pixel?" + * Note that ~0 is an invalid entry (mostly for the benefit of the reader). + */ +static int indexForBitsPerPixel[ 33 ] = { + ~0, 0, ~0, ~0, /* 1 bit per pixel */ + 1, ~0, ~0, ~0, /* 4 bits per pixel */ + 2, ~0, ~0, ~0, /* 8 bits per pixel */ + ~0,~0, ~0, ~0, + 3, ~0, ~0, ~0, /* 16 bits per pixel */ + ~0,~0, ~0, ~0, + 4, ~0, ~0, ~0, /* 24 bits per pixel */ + ~0,~0, ~0, ~0, + 5 /* 32 bits per pixel */ +}; + +/* + * This array gives the bytesperPixel value for cases where the number + * of bits per pixel is a multiple of 8 but not a power of 2. + */ +static int answerBytesPerPixel[ 33 ] = { + ~0, 0, ~0, ~0, /* 1 bit per pixel */ + 0, ~0, ~0, ~0, /* 4 bits per pixel */ + 0, ~0, ~0, ~0, /* 8 bits per pixel */ + ~0,~0, ~0, ~0, + 0, ~0, ~0, ~0, /* 16 bits per pixel */ + ~0,~0, ~0, ~0, + 3, ~0, ~0, ~0, /* 24 bits per pixel */ + ~0,~0, ~0, ~0, + 0 /* 32 bits per pixel */ +}; + +/* + * This array gives the answer to the question "what is the second index for + * the answer array above given the number of bits per scanline pad unit?" + * Note that ~0 is an invalid entry (mostly for the benefit of the reader). + */ +static int indexForScanlinePad[ 65 ] = { + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + 0, ~0, ~0, ~0, /* 8 bits per scanline pad unit */ + ~0, ~0, ~0, ~0, + 1, ~0, ~0, ~0, /* 16 bits per scanline pad unit */ + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + 2, ~0, ~0, ~0, /* 32 bits per scanline pad unit */ + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + ~0, ~0, ~0, ~0, + 3 /* 64 bits per scanline pad unit */ +}; + +#ifndef MIN +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +/* + grow the array of screenRecs if necessary. + call the device-supplied initialization procedure +with its screen number, a pointer to its ScreenRec, argc, and argv. + return the number of successfully installed screens. + +*/ + +int +AddScreen( + Bool (* pfnInit)( + int /*index*/, + ScreenPtr /*pScreen*/, + int /*argc*/, + char ** /*argv*/ + ), + int argc, + char **argv) +{ + + int i; + int scanlinepad, format, depth, bitsPerPixel, j, k; + ScreenPtr pScreen; + + i = screenInfo.numScreens; + if (i == MAXSCREENS) + return -1; + + pScreen = (ScreenPtr) xcalloc(1, sizeof(ScreenRec)); + if (!pScreen) + return -1; + + pScreen->devPrivates = NULL; + pScreen->myNum = i; + pScreen->totalPixmapSize = BitmapBytePad(sizeof(PixmapRec)*8); + pScreen->ClipNotify = 0; /* for R4 ddx compatibility */ + pScreen->CreateScreenResources = 0; + + /* + * This loop gets run once for every Screen that gets added, + * but thats ok. If the ddx layer initializes the formats + * one at a time calling AddScreen() after each, then each + * iteration will make it a little more accurate. Worst case + * we do this loop N * numPixmapFormats where N is # of screens. + * Anyway, this must be called after InitOutput and before the + * screen init routine is called. + */ + for (format=0; formatrgf = ~0L; /* there are no scratch GCs yet*/ + WindowTable[i] = NullWindow; + screenInfo.screens[i] = pScreen; + screenInfo.numScreens++; + if (!(*pfnInit)(i, pScreen, argc, argv)) + { + dixFreePrivates(pScreen->devPrivates); + xfree(pScreen); + screenInfo.numScreens--; + return -1; + } + return i; +} diff --git a/dix/events.c b/dix/events.c index faa84259c..8af71b645 100644 --- a/dix/events.c +++ b/dix/events.c @@ -273,6 +273,12 @@ static struct { static xEvent* swapEvent = NULL; static int swapEventLen = 0; +void +NotImplemented(xEvent *from, xEvent *to) +{ + FatalError("Not implemented"); +} + /** * Convert the given event type from an XI event to a core event. * @param[in] The XI 1.x event type. diff --git a/dix/main.c b/dix/main.c index 9d5d83944..25b085e88 100644 --- a/dix/main.c +++ b/dix/main.c @@ -118,120 +118,7 @@ Equipment Corporation. extern void Dispatch(void); -xConnSetupPrefix connSetupPrefix; - -extern FontPtr defaultFont; - extern void InitProcVectors(void); -extern Bool CreateGCperDepthArray(void); - -#ifndef PANORAMIX -static -#endif -Bool CreateConnectionBlock(void); - -PaddingInfo PixmapWidthPaddingInfo[33]; - -int connBlockScreenStart; - -void -NotImplemented(xEvent *from, xEvent *to) -{ - FatalError("Not implemented"); -} - -/* - * Dummy entry for ReplySwapVector[] - */ - -void -ReplyNotSwappd( - ClientPtr pClient , - int size , - void * pbuf - ) -{ - FatalError("Not implemented"); -} - -/* - * This array encodes the answer to the question "what is the log base 2 - * of the number of pixels that fit in a scanline pad unit?" - * Note that ~0 is an invalid entry (mostly for the benefit of the reader). - */ -static int answer[6][4] = { - /* pad pad pad pad*/ - /* 8 16 32 64 */ - - { 3, 4, 5 , 6 }, /* 1 bit per pixel */ - { 1, 2, 3 , 4 }, /* 4 bits per pixel */ - { 0, 1, 2 , 3 }, /* 8 bits per pixel */ - { ~0, 0, 1 , 2 }, /* 16 bits per pixel */ - { ~0, ~0, 0 , 1 }, /* 24 bits per pixel */ - { ~0, ~0, 0 , 1 } /* 32 bits per pixel */ -}; - -/* - * This array gives the answer to the question "what is the first index for - * the answer array above given the number of bits per pixel?" - * Note that ~0 is an invalid entry (mostly for the benefit of the reader). - */ -static int indexForBitsPerPixel[ 33 ] = { - ~0, 0, ~0, ~0, /* 1 bit per pixel */ - 1, ~0, ~0, ~0, /* 4 bits per pixel */ - 2, ~0, ~0, ~0, /* 8 bits per pixel */ - ~0,~0, ~0, ~0, - 3, ~0, ~0, ~0, /* 16 bits per pixel */ - ~0,~0, ~0, ~0, - 4, ~0, ~0, ~0, /* 24 bits per pixel */ - ~0,~0, ~0, ~0, - 5 /* 32 bits per pixel */ -}; - -/* - * This array gives the bytesperPixel value for cases where the number - * of bits per pixel is a multiple of 8 but not a power of 2. - */ -static int answerBytesPerPixel[ 33 ] = { - ~0, 0, ~0, ~0, /* 1 bit per pixel */ - 0, ~0, ~0, ~0, /* 4 bits per pixel */ - 0, ~0, ~0, ~0, /* 8 bits per pixel */ - ~0,~0, ~0, ~0, - 0, ~0, ~0, ~0, /* 16 bits per pixel */ - ~0,~0, ~0, ~0, - 3, ~0, ~0, ~0, /* 24 bits per pixel */ - ~0,~0, ~0, ~0, - 0 /* 32 bits per pixel */ -}; - -/* - * This array gives the answer to the question "what is the second index for - * the answer array above given the number of bits per scanline pad unit?" - * Note that ~0 is an invalid entry (mostly for the benefit of the reader). - */ -static int indexForScanlinePad[ 65 ] = { - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - 0, ~0, ~0, ~0, /* 8 bits per scanline pad unit */ - ~0, ~0, ~0, ~0, - 1, ~0, ~0, ~0, /* 16 bits per scanline pad unit */ - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - 2, ~0, ~0, ~0, /* 32 bits per scanline pad unit */ - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - ~0, ~0, ~0, ~0, - 3 /* 64 bits per scanline pad unit */ -}; - -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif #ifdef XQUARTZ #include @@ -456,258 +343,3 @@ int main(int argc, char *argv[], char *envp[]) return(0); } -static int VendorRelease = VENDOR_RELEASE; -static char *VendorString = VENDOR_NAME; - -void -SetVendorRelease(int release) -{ - VendorRelease = release; -} - -void -SetVendorString(char *string) -{ - VendorString = string; -} - -static const int padlength[4] = {0, 3, 2, 1}; - -#ifndef PANORAMIX -static -#endif -Bool -CreateConnectionBlock(void) -{ - xConnSetup setup; - xWindowRoot root; - xDepth depth; - xVisualType visual; - xPixmapFormat format; - unsigned long vid; - int i, j, k, - lenofblock, - sizesofar = 0; - char *pBuf; - - - memset(&setup, 0, sizeof(xConnSetup)); - /* Leave off the ridBase and ridMask, these must be sent with - connection */ - - setup.release = VendorRelease; - /* - * per-server image and bitmap parameters are defined in Xmd.h - */ - setup.imageByteOrder = screenInfo.imageByteOrder; - - setup.bitmapScanlineUnit = screenInfo.bitmapScanlineUnit; - setup.bitmapScanlinePad = screenInfo.bitmapScanlinePad; - - setup.bitmapBitOrder = screenInfo.bitmapBitOrder; - setup.motionBufferSize = NumMotionEvents(); - setup.numRoots = screenInfo.numScreens; - setup.nbytesVendor = strlen(VendorString); - setup.numFormats = screenInfo.numPixmapFormats; - setup.maxRequestSize = MAX_REQUEST_SIZE; - QueryMinMaxKeyCodes(&setup.minKeyCode, &setup.maxKeyCode); - - lenofblock = sizeof(xConnSetup) + - ((setup.nbytesVendor + 3) & ~3) + - (setup.numFormats * sizeof(xPixmapFormat)) + - (setup.numRoots * sizeof(xWindowRoot)); - ConnectionInfo = xalloc(lenofblock); - if (!ConnectionInfo) - return FALSE; - - memmove(ConnectionInfo, (char *)&setup, sizeof(xConnSetup)); - sizesofar = sizeof(xConnSetup); - pBuf = ConnectionInfo + sizeof(xConnSetup); - - memmove(pBuf, VendorString, (int)setup.nbytesVendor); - sizesofar += setup.nbytesVendor; - pBuf += setup.nbytesVendor; - i = padlength[setup.nbytesVendor & 3]; - sizesofar += i; - while (--i >= 0) - *pBuf++ = 0; - - memset(&format, 0, sizeof(xPixmapFormat)); - for (i=0; idrawable.id; - root.defaultColormap = pScreen->defColormap; - root.whitePixel = pScreen->whitePixel; - root.blackPixel = pScreen->blackPixel; - root.currentInputMask = 0; /* filled in when sent */ - root.pixWidth = pScreen->width; - root.pixHeight = pScreen->height; - root.mmWidth = pScreen->mmWidth; - root.mmHeight = pScreen->mmHeight; - root.minInstalledMaps = pScreen->minInstalledCmaps; - root.maxInstalledMaps = pScreen->maxInstalledCmaps; - root.rootVisualID = pScreen->rootVisual; - root.backingStore = pScreen->backingStoreSupport; - root.saveUnders = FALSE; - root.rootDepth = pScreen->rootDepth; - root.nDepths = pScreen->numDepths; - memmove(pBuf, (char *)&root, sizeof(xWindowRoot)); - sizesofar += sizeof(xWindowRoot); - pBuf += sizeof(xWindowRoot); - - pDepth = pScreen->allowedDepths; - for(j = 0; j < pScreen->numDepths; j++, pDepth++) - { - lenofblock += sizeof(xDepth) + - (pDepth->numVids * sizeof(xVisualType)); - pBuf = (char *)xrealloc(ConnectionInfo, lenofblock); - if (!pBuf) - { - xfree(ConnectionInfo); - return FALSE; - } - ConnectionInfo = pBuf; - pBuf += sizesofar; - depth.depth = pDepth->depth; - depth.nVisuals = pDepth->numVids; - memmove(pBuf, (char *)&depth, sizeof(xDepth)); - pBuf += sizeof(xDepth); - sizesofar += sizeof(xDepth); - for(k = 0; k < pDepth->numVids; k++) - { - vid = pDepth->vids[k]; - for (pVisual = pScreen->visuals; - pVisual->vid != vid; - pVisual++) - ; - visual.visualID = vid; - visual.class = pVisual->class; - visual.bitsPerRGB = pVisual->bitsPerRGBValue; - visual.colormapEntries = pVisual->ColormapEntries; - visual.redMask = pVisual->redMask; - visual.greenMask = pVisual->greenMask; - visual.blueMask = pVisual->blueMask; - memmove(pBuf, (char *)&visual, sizeof(xVisualType)); - pBuf += sizeof(xVisualType); - sizesofar += sizeof(xVisualType); - } - } - } - connSetupPrefix.success = xTrue; - connSetupPrefix.length = lenofblock/4; - connSetupPrefix.majorVersion = X_PROTOCOL; - connSetupPrefix.minorVersion = X_PROTOCOL_REVISION; - return TRUE; -} - -/* - grow the array of screenRecs if necessary. - call the device-supplied initialization procedure -with its screen number, a pointer to its ScreenRec, argc, and argv. - return the number of successfully installed screens. - -*/ - -int -AddScreen( - Bool (* pfnInit)( - int /*index*/, - ScreenPtr /*pScreen*/, - int /*argc*/, - char ** /*argv*/ - ), - int argc, - char **argv) -{ - - int i; - int scanlinepad, format, depth, bitsPerPixel, j, k; - ScreenPtr pScreen; - - i = screenInfo.numScreens; - if (i == MAXSCREENS) - return -1; - - pScreen = (ScreenPtr) xcalloc(1, sizeof(ScreenRec)); - if (!pScreen) - return -1; - - pScreen->devPrivates = NULL; - pScreen->myNum = i; - pScreen->totalPixmapSize = BitmapBytePad(sizeof(PixmapRec)*8); - pScreen->ClipNotify = 0; /* for R4 ddx compatibility */ - pScreen->CreateScreenResources = 0; - - /* - * This loop gets run once for every Screen that gets added, - * but thats ok. If the ddx layer initializes the formats - * one at a time calling AddScreen() after each, then each - * iteration will make it a little more accurate. Worst case - * we do this loop N * numPixmapFormats where N is # of screens. - * Anyway, this must be called after InitOutput and before the - * screen init routine is called. - */ - for (format=0; formatrgf = ~0L; /* there are no scratch GCs yet*/ - WindowTable[i] = NullWindow; - screenInfo.screens[i] = pScreen; - screenInfo.numScreens++; - if (!(*pfnInit)(i, pScreen, argc, argv)) - { - dixFreePrivates(pScreen->devPrivates); - xfree(pScreen); - screenInfo.numScreens--; - return -1; - } - return i; -} diff --git a/dix/swaprep.c b/dix/swaprep.c index 9eb67654a..86242168f 100644 --- a/dix/swaprep.c +++ b/dix/swaprep.c @@ -1291,3 +1291,18 @@ WriteSConnSetupPrefix(ClientPtr pClient, xConnSetupPrefix *pcsp) SwapConnSetupPrefix(pcsp, &cspT); (void)WriteToClient(pClient, sizeof(cspT), (char *) &cspT); } + +/* + * Dummy entry for ReplySwapVector[] + */ + +void +ReplyNotSwappd( + ClientPtr pClient , + int size , + void * pbuf + ) +{ + FatalError("Not implemented"); +} + diff --git a/hw/dmx/Makefile.am b/hw/dmx/Makefile.am index 9d2778ae4..9e9b39a19 100644 --- a/hw/dmx/Makefile.am +++ b/hw/dmx/Makefile.am @@ -85,6 +85,7 @@ XDMX_LIBS = \ $(GLX_LIBS) \ input/libdmxinput.a \ config/libdmxconfig.a \ + $(MAIN_LIB) \ $(XSERVER_LIBS) Xdmx_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) diff --git a/hw/vfb/Makefile.am b/hw/vfb/Makefile.am index a4a120a05..c5b49a37d 100644 --- a/hw/vfb/Makefile.am +++ b/hw/vfb/Makefile.am @@ -22,6 +22,7 @@ Xvfb_SOURCES = $(SRCS) XVFB_LIBS = \ @XVFB_LIBS@ \ libfbcmap.a \ + $(MAIN_LIB) \ $(XSERVER_LIBS) Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS) diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am index b6a534b2f..3b9ff9c3e 100644 --- a/hw/xfree86/Makefile.am +++ b/hw/xfree86/Makefile.am @@ -56,7 +56,7 @@ libxorg.c xorg.c: DISTCLEANFILES = libxorg.c xorg.c Xorg_DEPENDENCIES = libxorg.la -Xorg_LDADD = libxorg.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) +Xorg_LDADD = $(MAIN_LIB) libxorg.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) diff --git a/hw/xquartz/mach-startup/Makefile.am b/hw/xquartz/mach-startup/Makefile.am index b0112949d..0c609e384 100644 --- a/hw/xquartz/mach-startup/Makefile.am +++ b/hw/xquartz/mach-startup/Makefile.am @@ -19,7 +19,7 @@ X11_bin_LDADD = \ $(top_builddir)/dix/dixfonts.lo \ $(top_builddir)/miext/rootless/librootless.la \ $(top_builddir)/hw/xquartz/pbproxy/libxpbproxy.la \ - $(DARWIN_LIBS) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lXplugin + $(DARWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) -lXplugin X11_bin_LDFLAGS = \ -XCClinker -Objc \ diff --git a/include/dix.h b/include/dix.h index b1333dc5c..896553a60 100644 --- a/include/dix.h +++ b/include/dix.h @@ -170,6 +170,7 @@ extern _X_EXPORT void SendErrorToClient( extern _X_EXPORT void MarkClientException( ClientPtr /*client*/); +extern _X_HIDDEN Bool CreateConnectionBlock(void); /* dixutils.c */ extern _X_EXPORT void CopyISOLatin1Lowered( -- cgit v1.2.3 From 4124c465a85713fe44843a16c5e2b13ece17e9d2 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 15 Apr 2009 17:21:08 +1000 Subject: Add a test-suite for in-server unit-testing. This patch adds a test/ directory that contains the setup for a unit-testing suite designed for in-server unit-testing. All functions available to the X server are available to the test binaries through static linking. This test suite uses the glib testing framework. Do not use glib calls outside of the test/ directory. Signed-off-by: Peter Hutterer --- configure.ac | 12 ++++ test/Makefile.am | 39 +++++++++++++ test/README | 36 ++++++++++++ test/xkb.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 test/Makefile.am create mode 100644 test/README create mode 100644 test/xkb.c diff --git a/configure.ac b/configure.ac index 6628a4462..2151ed120 100644 --- a/configure.ac +++ b/configure.ac @@ -439,6 +439,9 @@ AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror], AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [Enable debugging (default: disabled)]), [DEBUGGING=$enableval], [DEBUGGING=no]) +AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], + [Enable unit-tests (default: enabled)]), + [UNITTESTS=$enableval], [UNITTESTS=yes]) AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]), [INT10="$withval"], [INT10="$DEFAULT_INT10"]) @@ -1141,6 +1144,14 @@ if test "x$DEBUGGING" = xyes; then fi AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes]) +if test "x$UNITTESTS" = xyes; then + AC_DEFINE(UNITTESTS, 1, [Enable unit tests]) + PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.16]) + AC_SUBST([GLIB_LIBS]) + AC_SUBST([GLIB_CFLAGS]) +fi +AM_CONDITIONAL(UNITTESTS, [test "x$UNITTESTS" = xyes]) + AC_DEFINE(XTEST, 1, [Support XTest extension]) AC_DEFINE(XSYNC, 1, [Support XSync extension]) AC_DEFINE(XCMISC, 1, [Support XCMisc extension]) @@ -1980,5 +1991,6 @@ hw/kdrive/fbdev/Makefile hw/kdrive/linux/Makefile hw/kdrive/sdl/Makefile hw/kdrive/src/Makefile +test/Makefile xorg-server.pc ]) diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 000000000..5b1daac20 --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,39 @@ +if UNITTESTS +check_PROGRAMS = xkb +check_LTLIBRARIES = libxservertest.la + +TESTS=$(check_PROGRAMS) + +AM_CFLAGS = $(DIX_CFLAGS) $(GLIB_CFLAGS) @XORG_CFLAGS@ +INCLUDES = @XORG_INCS@ +TEST_LDADD=libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLIB_LIBS) + +xkb_LDADD=$(TEST_LDADD) + + +libxservertest_la_LIBADD = \ + $(XSERVER_LIBS) \ + $(top_builddir)/hw/xfree86/loader/libloader.la \ + $(top_builddir)/hw/xfree86/os-support/libxorgos.la \ + $(top_builddir)/hw/xfree86/common/libcommon.la \ + $(top_builddir)/hw/xfree86/parser/libxf86config.la \ + $(top_builddir)/hw/xfree86/dixmods/libdixmods.la \ + $(top_builddir)/hw/xfree86/modes/libxf86modes.la \ + $(top_builddir)/hw/xfree86/ramdac/libramdac.la \ + $(top_builddir)/hw/xfree86/ddc/libddc.la \ + $(top_builddir)/hw/xfree86/i2c/libi2c.la \ + $(top_builddir)/hw/xfree86/dixmods/libxorgxkb.la \ + $(top_builddir)/hw/xfree86/libxorg.la \ + $(top_builddir)/mi/libmi.la \ + $(top_builddir)/os/libos.la \ + @XORG_LIBS@ + +CLEANFILES=libxservertest.c + +libxservertest.c: + touch $@ + +all: + @echo "Run 'make check' to run the test suite" + +endif diff --git a/test/README b/test/README new file mode 100644 index 000000000..5759a72fd --- /dev/null +++ b/test/README @@ -0,0 +1,36 @@ + X server test suite + +This suite contains a set of tests to verify the behaviour of functions used +internally to the server. This test suite is based on glib's testing +framework [1]. + += How it works = +Through some automake abuse, we link the test programs with the same static +libraries as the Xorg binary. The test suites can then call various functions +and verify their behaviour - without the need to start the server or connect +clients. + +This testing only works for functions that do not rely on a particular state +of the X server. Unless the test suite replicates the expected state, which +may be difficult. + += How to run the tests = +Run "make check" the test directory. This will compile the tests and execute +them in the order specified in the TESTS variable in test/Makefile.am. + +Each set of tests related to a subsystem are available as a binary that can be +executed directly. For example, run "xkb" to perform some xkb-related tests. + +== Adding a new test == +When adding a new test, ensure that you add a short description of what the +test does and what the expected outcome is. If the test reproduces a +particular bug, using g_test_bug(). + +== Misc == + +The programs "gtester" and "gtester-report" may be used to generate XML/HTML +log files of tests succeeded and failed. + +--------- + +[1] http://library.gnome.org/devel/glib/stable/glib-Testing.html diff --git a/test/xkb.c b/test/xkb.c new file mode 100644 index 000000000..6fbb26a01 --- /dev/null +++ b/test/xkb.c @@ -0,0 +1,173 @@ +/** + * Copyright © 2009 Red Hat, 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 (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 +#endif + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "misc.h" +#include "inputstr.h" +#include "opaque.h" +#include "property.h" +#define XKBSRV_NEED_FILE_FUNCS +#include +#include "../xkb/xkbgeom.h" +#include +#include "xkbfile.h" +#include "../xkb/xkb.h" + +#include + +/** + * Initialize an empty XkbRMLVOSet. + * Call XkbGetRulesDflts to obtain the default ruleset. + * Compare obtained ruleset with the built-in defaults. + * + * Result: RMLVO defaults are the same as obtained. + */ +static void xkb_get_rules_test(void) +{ + XkbRMLVOSet rmlvo = { NULL}; + XkbGetRulesDflts(&rmlvo); + + + g_assert(rmlvo.rules); + g_assert(rmlvo.model); + g_assert(rmlvo.layout); + g_assert(rmlvo.variant); + g_assert(rmlvo.options); + g_assert(strcmp(rmlvo.rules, XKB_DFLT_RULES) == 0); + g_assert(strcmp(rmlvo.model, XKB_DFLT_MODEL) == 0); + g_assert(strcmp(rmlvo.layout, XKB_DFLT_LAYOUT) == 0); + g_assert(strcmp(rmlvo.variant, XKB_DFLT_VARIANT) == 0); + g_assert(strcmp(rmlvo.options, XKB_DFLT_OPTIONS) == 0); +} + +/** + * Initialize an random XkbRMLVOSet. + * Call XkbGetRulesDflts to obtain the default ruleset. + * Compare obtained ruleset with the built-in defaults. + * Result: RMLVO defaults are the same as obtained. + */ +static void xkb_set_rules_test(void) +{ + XkbRMLVOSet rmlvo = { + .rules = "test-rules", + .model = "test-model", + .layout = "test-layout", + .variant = "test-variant", + .options = "test-options" + }; + XkbRMLVOSet rmlvo_new = { NULL }; + + XkbSetRulesDflts(&rmlvo); + XkbGetRulesDflts(&rmlvo_new); + + /* XkbGetRulesDflts strdups the values */ + g_assert(rmlvo.rules != rmlvo_new.rules); + g_assert(rmlvo.model != rmlvo_new.model); + g_assert(rmlvo.layout != rmlvo_new.layout); + g_assert(rmlvo.variant != rmlvo_new.variant); + g_assert(rmlvo.options != rmlvo_new.options); + + g_assert(strcmp(rmlvo.rules, rmlvo_new.rules) == 0); + g_assert(strcmp(rmlvo.model, rmlvo_new.model) == 0); + g_assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0); + g_assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 0); + g_assert(strcmp(rmlvo.options, rmlvo_new.options) == 0); +} + + +/** + * Get the default RMLVO set. + * Set the default RMLVO set. + * Get the default RMLVO set. + * Repeat the last two steps. + * + * Result: RMLVO set obtained is the same as previously set. + */ +static void xkb_set_get_rules_test(void) +{ +/* This test failed before XkbGetRulesDftlts changed to strdup. + We test this twice because the first time using XkbGetRulesDflts we obtain + the built-in defaults. The unexpected free isn't triggered until the second + XkbSetRulesDefaults. + */ + XkbRMLVOSet rmlvo = { NULL }; + XkbRMLVOSet rmlvo_backup; + + XkbGetRulesDflts(&rmlvo); + + /* pass 1 */ + XkbSetRulesDflts(&rmlvo); + XkbGetRulesDflts(&rmlvo); + + /* Make a backup copy */ + rmlvo_backup.rules = strdup(rmlvo.rules); + rmlvo_backup.layout = strdup(rmlvo.layout); + rmlvo_backup.model = strdup(rmlvo.model); + rmlvo_backup.variant = strdup(rmlvo.variant); + rmlvo_backup.options = strdup(rmlvo.options); + + /* pass 2 */ + XkbSetRulesDflts(&rmlvo); + + /* This test is iffy, because strictly we may be comparing against already + * freed memory */ + g_assert(strcmp(rmlvo.rules, rmlvo_backup.rules) == 0); + g_assert(strcmp(rmlvo.model, rmlvo_backup.model) == 0); + g_assert(strcmp(rmlvo.layout, rmlvo_backup.layout) == 0); + g_assert(strcmp(rmlvo.variant, rmlvo_backup.variant) == 0); + g_assert(strcmp(rmlvo.options, rmlvo_backup.options) == 0); + + XkbGetRulesDflts(&rmlvo); + g_assert(strcmp(rmlvo.rules, rmlvo_backup.rules) == 0); + g_assert(strcmp(rmlvo.model, rmlvo_backup.model) == 0); + g_assert(strcmp(rmlvo.layout, rmlvo_backup.layout) == 0); + g_assert(strcmp(rmlvo.variant, rmlvo_backup.variant) == 0); + g_assert(strcmp(rmlvo.options, rmlvo_backup.options) == 0); +} + + +int main(int argc, char** argv) +{ + g_test_init(&argc, &argv,NULL); + g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id="); + + g_test_add_func("/xkb/set-get-rules", xkb_set_get_rules_test); + g_test_add_func("/xkb/get-rules", xkb_get_rules_test); + g_test_add_func("/xkb/set-rules", xkb_set_rules_test); + + return g_test_run(); +} -- cgit v1.2.3 From 1127ca097cb75450bcccfc5f5d82e435de2fb5b7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 16 Apr 2009 11:41:58 +1000 Subject: test: add a simple test to verify device axis intialization. Signed-off-by: Peter Hutterer --- test/Makefile.am | 4 +-- test/input.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 test/input.c diff --git a/test/Makefile.am b/test/Makefile.am index 5b1daac20..dbad93bb1 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,5 +1,5 @@ if UNITTESTS -check_PROGRAMS = xkb +check_PROGRAMS = xkb input check_LTLIBRARIES = libxservertest.la TESTS=$(check_PROGRAMS) @@ -9,7 +9,7 @@ INCLUDES = @XORG_INCS@ TEST_LDADD=libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLIB_LIBS) xkb_LDADD=$(TEST_LDADD) - +input_LDADD=$(TEST_LDADD) libxservertest_la_LIBADD = \ $(XSERVER_LIBS) \ diff --git a/test/input.c b/test/input.c new file mode 100644 index 000000000..bcb4c5786 --- /dev/null +++ b/test/input.c @@ -0,0 +1,83 @@ +/** + * Copyright © 2009 Red Hat, 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 (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 +#endif + +#include +#include "misc.h" +#include "resource.h" +#include +#include +#include "windowstr.h" +#include "inputstr.h" + +#include + +/** + * Init a device with axes. + * Verify values set on the device. + * + * Result: All axes set to default values (usually 0). + */ +static void dix_init_valuators(void) +{ + DeviceIntRec dev; + ValuatorClassPtr val; + const int num_axes = 2; + int i; + + + memset(&dev, 0, sizeof(DeviceIntRec)); + dev.isMaster = TRUE; /* claim it's a master to stop ptracccel */ + + g_assert(InitValuatorClassDeviceStruct(NULL, 0, 0, 0) == FALSE); + g_assert(InitValuatorClassDeviceStruct(&dev, num_axes, 0, Absolute)); + + val = dev.valuator; + g_assert(val); + g_assert(val->numAxes == num_axes); + g_assert(val->numMotionEvents == 0); + g_assert(val->mode == Absolute); + g_assert(val->axisVal); + + for (i = 0; i < num_axes; i++) + { + g_assert(val->axisVal[i] == 0); + g_assert(val->axes->min_value == NO_AXIS_LIMITS); + g_assert(val->axes->max_value == NO_AXIS_LIMITS); + } + + g_assert(dev.last.numValuators == num_axes); +} + +int main(int argc, char** argv) +{ + g_test_init(&argc, &argv,NULL); + g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id="); + + g_test_add_func("/dix/input/init-valuators", dix_init_valuators); + + return g_test_run(); +} -- cgit v1.2.3 From dc2767d1c5db60385867c76ba2de507fe0cb8a90 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 21 Apr 2009 22:18:23 +1000 Subject: test: add InternalEvent to core event conversion tests. Signed-off-by: Peter Hutterer --- test/input.c | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/test/input.c b/test/input.c index bcb4c5786..eb0543eda 100644 --- a/test/input.c +++ b/test/input.c @@ -32,6 +32,7 @@ #include #include "windowstr.h" #include "inputstr.h" +#include "eventconvert.h" #include @@ -72,12 +73,155 @@ static void dix_init_valuators(void) g_assert(dev.last.numValuators == num_axes); } + +/** + * Convert various internal events to the matching core event and verify the + * parameters. + */ +static void dix_event_to_core(int type) +{ + DeviceEvent ev; + xEvent core; + int time; + int x, y; + int rc; + int state; + int detail; + + /* EventToCore memsets the event to 0 */ +#define test_event() \ + g_assert(rc == Success); \ + g_assert(core.u.u.type == type); \ + g_assert(core.u.u.detail == detail); \ + g_assert(core.u.keyButtonPointer.time == time); \ + g_assert(core.u.keyButtonPointer.rootX == x); \ + g_assert(core.u.keyButtonPointer.rootY == y); \ + g_assert(core.u.keyButtonPointer.state == state); \ + g_assert(core.u.keyButtonPointer.eventX == 0); \ + g_assert(core.u.keyButtonPointer.eventY == 0); \ + g_assert(core.u.keyButtonPointer.root == 0); \ + g_assert(core.u.keyButtonPointer.event == 0); \ + g_assert(core.u.keyButtonPointer.child == 0); \ + g_assert(core.u.keyButtonPointer.sameScreen == FALSE); + + x = 0; + y = 0; + time = 12345; + state = 0; + detail = 0; + + ev.header = 0xFF; + ev.length = sizeof(DeviceEvent); + ev.time = time; + ev.root_y = x; + ev.root_x = y; + ev.corestate = state; + ev.detail.key = detail; + + ev.type = type; + ev.detail.key = 0; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + x = 1; + y = 2; + ev.root_x = x; + ev.root_y = y; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + x = 0x7FFF; + y = 0x7FFF; + ev.root_x = x; + ev.root_y = y; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + x = 0x8000; /* too high */ + y = 0x8000; /* too high */ + ev.root_x = x; + ev.root_y = y; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(core.u.keyButtonPointer.rootX != x); + g_assert(core.u.keyButtonPointer.rootY != y); + + x = 0x7FFF; + y = 0x7FFF; + ev.root_x = x; + ev.root_y = y; + time = 0; + ev.time = time; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + detail = 1; + ev.detail.key = detail; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + detail = 0xFF; /* highest value */ + ev.detail.key = detail; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + detail = 0xFFF; /* too big */ + ev.detail.key = detail; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(rc == BadMatch); + + detail = 0xFF; /* too big */ + ev.detail.key = detail; + state = 0xFFFF; /* highest value */ + ev.corestate = state; + rc = EventToCore((InternalEvent*)&ev, &core); + test_event(); + + state = 0x10000; /* too big */ + ev.corestate = state; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(core.u.keyButtonPointer.state != state); + g_assert(core.u.keyButtonPointer.state == (state & 0xFFFF)); + +#undef test_event +} + +static void dix_event_to_core_conversion(void) +{ + DeviceEvent ev; + xEvent core; + int rc; + + ev.header = 0xFF; + ev.length = sizeof(DeviceEvent); + + ev.type = 0; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(rc == BadImplementation); + + ev.type = 1; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(rc == BadImplementation); + + ev.type = ET_ProximityOut + 1; + rc = EventToCore((InternalEvent*)&ev, &core); + g_assert(rc == BadImplementation); + + dix_event_to_core(ET_KeyPress); + dix_event_to_core(ET_KeyRelease); + dix_event_to_core(ET_ButtonPress); + dix_event_to_core(ET_ButtonRelease); + dix_event_to_core(ET_Motion); + dix_event_to_core(ET_ProximityIn); + dix_event_to_core(ET_ProximityOut); +} + int main(int argc, char** argv) { g_test_init(&argc, &argv,NULL); g_test_bug_base("https://bugzilla.freedesktop.org/show_bug.cgi?id="); g_test_add_func("/dix/input/init-valuators", dix_init_valuators); + g_test_add_func("/dix/input/event-core-conversion", dix_event_to_core_conversion); return g_test_run(); } -- cgit v1.2.3 From 737b49199a05299486064e6e762cf2a2f6f95be6 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 9 Apr 2009 15:40:24 +1000 Subject: xfree86: restore default off for DontZap Zapping is triggered by xkb these days, so note in the man page that it's the Terminate_Server action. Since it's XKB, personal preferences towards or against zapping should be achieved through xkb rulesets. If Terminate_Server is not in the xkb actions, then we can't zap anyway and we don't need a default of DontZap "on". This patch restores the old meaning of DontZap - disallow zapping altogether, regardless of XKB's current keymap. Ideally, this patch should be accompanied by b0f64bdab00db652e in xkeyboard-config. Signed-off-by: Peter Hutterer --- doc/Xserver.man.pre | 2 +- hw/xfree86/common/xf86Config.c | 5 ++--- hw/xfree86/doc/man/xorg.conf.man.pre | 11 +++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre index e9a3b9c7d..e2673f7be 100644 --- a/doc/Xserver.man.pre +++ b/doc/Xserver.man.pre @@ -219,7 +219,7 @@ turns on auto-repeat. 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 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. .TP 8 .B \-s \fIminutes\fP diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 7ea6197de..8b07566be 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -726,7 +726,7 @@ static OptionInfoRec FlagOptions[] = { { FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN, {0}, FALSE }, { FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN, - {0}, TRUE }, + {0}, FALSE }, { FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN, {0}, FALSE }, { FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN, @@ -834,8 +834,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals); xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch); - if (!xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap)) - xf86Info.dontZap = !party_like_its_1989; + xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap); xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom); xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI); diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre index 7349def0d..fbb2c6b73 100644 --- a/hw/xfree86/doc/man/xorg.conf.man.pre +++ b/hw/xfree86/doc/man/xorg.conf.man.pre @@ -464,12 +464,11 @@ Default: off. .TP 7 .BI "Option \*qDontZap\*q \*q" boolean \*q This disallows the use of the -.B Ctrl+Alt+Backspace -sequence. -That sequence is normally used to terminate the __xservername__ server. -When this option is enabled (as per default), that key sequence has no -special meaning. -Default: on. +.B Terminate_Server +XKB action (usually on Ctrl+Alt+Backspace, depending on XKB options). +This action is normally used to terminate the __xservername__ server. +When this option is enabled, the action has no effect. +Default: off. .TP 7 .BI "Option \*qDontZoom\*q \*q" boolean \*q This disallows the use of the -- cgit v1.2.3 From 1abe0ee3da5e1268c7315f841d31337ea6524cf0 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 28 Apr 2009 23:51:40 -0400 Subject: kdrive: fix Xvfb build with separate libmain. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 2151ed120..3fc4dd405 100644 --- a/configure.ac +++ b/configure.ac @@ -1843,7 +1843,7 @@ if test "$KDRIVE" = yes; then ;; esac 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 $KDRIVE_OS_LIB $OS_LIB" KDRIVE_LIBS="$TSLIB_LIBS $KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS" -- cgit v1.2.3 From 57aff88c7d0761e590806d07bee1c9410680c89f Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Wed, 29 Apr 2009 01:04:37 -0400 Subject: Fix most remaining deprecated resource lookups. Callsites updated to use dixLookupResourceBy{Type,Class}. TODO: Audit access modes to make sure they reflect the usage. --- Xext/panoramiX.c | 7 +- Xext/panoramiX.h | 2 - Xext/panoramiXprocs.c | 671 ++++++++++++++++++++--------------- Xext/saver.c | 54 +-- Xext/security.c | 11 +- Xext/shape.c | 75 ++-- Xext/shm.c | 34 +- Xext/sync.c | 82 ++--- Xext/xf86bigfont.c | 14 +- Xext/xvdisp.c | 234 +++++------- Xext/xvdix.h | 18 +- Xext/xvmain.c | 9 +- Xext/xvmc.c | 57 +-- Xi/chdevcur.c | 10 +- Xi/extgrbdev.c | 14 +- damageext/damageextint.h | 9 +- dbe/dbe.c | 33 +- dix/colormap.c | 26 +- dix/cursor.c | 5 +- dix/deprecated.c | 8 +- dix/dispatch.c | 9 +- dix/dixfonts.c | 61 ++-- dix/dixutils.c | 11 +- dix/events.c | 13 +- dix/resource.c | 22 +- dix/window.c | 58 +-- fb/fbcmap.c | 6 +- hw/kdrive/src/kcmap.c | 3 +- hw/vfb/InitOutput.c | 6 +- hw/xfree86/common/xf86cmap.c | 4 +- hw/xfree86/dixmods/extmod/xf86dga2.c | 18 +- hw/xfree86/dri/dri.c | 5 +- hw/xfree86/vgahw/vgaCmap.c | 4 +- hw/xnest/Color.c | 22 +- hw/xnest/Window.c | 9 +- mi/micmap.c | 6 +- mi/miexpose.c | 2 +- randr/randr.c | 6 +- randr/randrstr.h | 32 +- randr/rrcrtc.c | 61 +--- randr/rrdispatch.c | 7 +- randr/rrmode.c | 40 +-- randr/rroutput.c | 37 +- randr/rrproperty.c | 33 +- record/record.c | 9 +- render/picture.c | 5 +- render/picturestr.h | 9 +- render/render.c | 170 ++++----- xfixes/cursor.c | 7 +- xfixes/select.c | 6 +- 50 files changed, 1017 insertions(+), 1037 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index 767f6035e..4ab6f6bdd 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -354,9 +354,12 @@ PanoramiXRes * PanoramiXFindIDByScrnum(RESTYPE type, XID id, int screen) { PanoramiXSearchData data; + pointer val; - if(!screen) - return LookupIDByType(id, type); + if(!screen) { + dixLookupResourceByType(&val, id, type, serverClient, DixReadAccess); + return val; + } data.screen = screen; data.id = id; diff --git a/Xext/panoramiX.h b/Xext/panoramiX.h index d413ff9cf..cca4c5249 100644 --- a/Xext/panoramiX.h +++ b/Xext/panoramiX.h @@ -97,6 +97,4 @@ typedef struct { #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_ */ diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c index 72a207ab8..8b51009b3 100644 --- a/Xext/panoramiXprocs.c +++ b/Xext/panoramiXprocs.c @@ -67,7 +67,7 @@ int PanoramiXCreateWindow(ClientPtr client) PanoramiXRes *cmap = NULL; REQUEST(xCreateWindowReq); int pback_offset = 0, pbord_offset = 0, cmap_offset = 0; - int result = 0, len, j; + int result, len, j; int orig_x, orig_y; XID orig_visual, tmp; Bool parentIsRoot; @@ -78,9 +78,10 @@ int PanoramiXCreateWindow(ClientPtr client) if (Ones(stuff->mask) != len) return BadLength; - if (!(parent = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->parent, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&parent, stuff->parent, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; if(stuff->class == CopyFromParent) stuff->class = parent->u.win.class; @@ -92,27 +93,30 @@ int PanoramiXCreateWindow(ClientPtr client) pback_offset = Ones((Mask)stuff->mask & (CWBackPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pback_offset); if ((tmp != None) && (tmp != ParentRelative)) { - if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&backPix, tmp, + XRT_PIXMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & CWBorderPixmap) { pbord_offset = Ones((Mask)stuff->mask & (CWBorderPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pbord_offset); if (tmp != CopyFromParent) { - if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&bordPix, tmp, + XRT_PIXMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & CWColormap) { cmap_offset = Ones((Mask)stuff->mask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); if ((tmp != CopyFromParent) && (tmp != None)) { - if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_COLORMAP, DixReadAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, tmp, + XRT_COLORMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; } } @@ -170,7 +174,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client) PanoramiXRes *cmap = NULL; REQUEST(xChangeWindowAttributesReq); int pback_offset = 0, pbord_offset = 0, cmap_offset = 0; - int result = 0, len, j; + int result, len, j; XID tmp; REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq); @@ -179,9 +183,10 @@ int PanoramiXChangeWindowAttributes(ClientPtr client) if (Ones(stuff->valueMask) != len) return BadLength; - if (!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; if((win->u.win.class == InputOnly) && (stuff->valueMask & (~INPUTONLY_LEGAL_MASK))) @@ -191,27 +196,30 @@ int PanoramiXChangeWindowAttributes(ClientPtr client) pback_offset = Ones((Mask)stuff->valueMask & (CWBackPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pback_offset); if ((tmp != None) && (tmp != ParentRelative)) { - if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&backPix, tmp, + XRT_PIXMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->valueMask & CWBorderPixmap) { pbord_offset = Ones((Mask)stuff->valueMask & (CWBorderPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pbord_offset); if (tmp != CopyFromParent) { - if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&bordPix, tmp, + XRT_PIXMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->valueMask & CWColormap) { cmap_offset = Ones((Mask)stuff->valueMask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); if ((tmp != CopyFromParent) && (tmp != None)) { - if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_COLORMAP, DixReadAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, tmp, + XRT_COLORMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; } } @@ -233,14 +241,15 @@ int PanoramiXChangeWindowAttributes(ClientPtr client) int PanoramiXDestroyWindow(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixDestroyAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, XRT_WINDOW, + client, DixDestroyAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = win->info[j].id; @@ -258,14 +267,15 @@ int PanoramiXDestroyWindow(ClientPtr client) int PanoramiXDestroySubwindows(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixDestroyAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, XRT_WINDOW, + client, DixDestroyAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = win->info[j].id; @@ -283,14 +293,15 @@ int PanoramiXDestroySubwindows(ClientPtr client) int PanoramiXChangeSaveSet(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xChangeSaveSetReq); REQUEST_SIZE_MATCH(xChangeSaveSetReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_BACKWARD(j) { stuff->window = win->info[j].id; @@ -305,20 +316,22 @@ int PanoramiXChangeSaveSet(ClientPtr client) int PanoramiXReparentWindow(ClientPtr client) { PanoramiXRes *win, *parent; - int result = 0, j; + int result, j; int x, y; Bool parentIsRoot; REQUEST(xReparentWindowReq); REQUEST_SIZE_MATCH(xReparentWindowReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; - if(!(parent = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->parent, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&parent, stuff->parent, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; x = stuff->x; y = stuff->y; @@ -342,14 +355,15 @@ int PanoramiXReparentWindow(ClientPtr client) int PanoramiXMapWindow(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_FORWARD(j) { stuff->id = win->info[j].id; @@ -364,14 +378,15 @@ int PanoramiXMapWindow(ClientPtr client) int PanoramiXMapSubwindows(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_FORWARD(j) { stuff->id = win->info[j].id; @@ -386,14 +401,15 @@ int PanoramiXMapSubwindows(ClientPtr client) int PanoramiXUnmapWindow(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_FORWARD(j) { stuff->id = win->info[j].id; @@ -408,14 +424,15 @@ int PanoramiXUnmapWindow(ClientPtr client) int PanoramiXUnmapSubwindows(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->id, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_FORWARD(j) { stuff->id = win->info[j].id; @@ -432,7 +449,7 @@ int PanoramiXConfigureWindow(ClientPtr client) PanoramiXRes *win; PanoramiXRes *sib = NULL; WindowPtr pWin; - int result = 0, j, len, sib_offset = 0, x = 0, y = 0; + int result, j, len, sib_offset = 0, x = 0, y = 0; int x_offset = -1; int y_offset = -1; REQUEST(xConfigureWindowReq); @@ -444,21 +461,24 @@ int PanoramiXConfigureWindow(ClientPtr client) return BadLength; /* because we need the parent */ - if (!(pWin = (WindowPtr)SecurityLookupIDByType( - client, stuff->window, RT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&pWin, stuff->window, + RT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; - if (!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; if ((Mask)stuff->mask & CWSibling) { XID tmp; sib_offset = Ones((Mask)stuff->mask & (CWSibling - 1)); if ((tmp = *((CARD32 *) &stuff[1] + sib_offset))) { - if(!(sib = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&sib, tmp, XRT_WINDOW, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; } } @@ -496,14 +516,15 @@ int PanoramiXConfigureWindow(ClientPtr client) int PanoramiXCirculateWindow(ClientPtr client) { PanoramiXRes *win; - int result = 0, j; + int result, j; REQUEST(xCirculateWindowReq); REQUEST_SIZE_MATCH(xCirculateWindowReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS_FORWARD(j) { stuff->window = win->info[j].id; @@ -634,15 +655,16 @@ int PanoramiXTranslateCoords(ClientPtr client) int PanoramiXCreatePixmap(ClientPtr client) { PanoramiXRes *refDraw, *newPix; - int result = 0, j; + int result, j; REQUEST(xCreatePixmapReq); REQUEST_SIZE_MATCH(xCreatePixmapReq); client->errorValue = stuff->pid; - if(!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixReadAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&refDraw, stuff->drawable, + XRC_DRAWABLE, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(!(newPix = xalloc(sizeof(PanoramiXRes)))) return BadAlloc; @@ -672,16 +694,17 @@ int PanoramiXCreatePixmap(ClientPtr client) int PanoramiXFreePixmap(ClientPtr client) { PanoramiXRes *pix; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); client->errorValue = stuff->id; - if(!(pix = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_PIXMAP, DixDestroyAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&pix, stuff->id, XRT_PIXMAP, + client, DixDestroyAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = pix->info[j].id; @@ -705,7 +728,7 @@ int PanoramiXCreateGC(ClientPtr client) PanoramiXRes *clip = NULL; REQUEST(xCreateGCReq); int tile_offset = 0, stip_offset = 0, clip_offset = 0; - int result = 0, len, j; + int result, len, j; XID tmp; REQUEST_AT_LEAST_SIZE(xCreateGCReq); @@ -715,32 +738,36 @@ int PanoramiXCreateGC(ClientPtr client) if (Ones(stuff->mask) != len) return BadLength; - if (!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixReadAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&refDraw, stuff->drawable, + XRC_DRAWABLE, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if ((Mask)stuff->mask & GCTile) { tile_offset = Ones((Mask)stuff->mask & (GCTile - 1)); if ((tmp = *((CARD32 *) &stuff[1] + tile_offset))) { - if(!(tile = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&tile, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & GCStipple) { stip_offset = Ones((Mask)stuff->mask & (GCStipple - 1)); if ((tmp = *((CARD32 *) &stuff[1] + stip_offset))) { - if(!(stip = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&stip, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & GCClipMask) { clip_offset = Ones((Mask)stuff->mask & (GCClipMask - 1)); if ((tmp = *((CARD32 *) &stuff[1] + clip_offset))) { - if(!(clip = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&clip, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } @@ -781,7 +808,7 @@ int PanoramiXChangeGC(ClientPtr client) PanoramiXRes *clip = NULL; REQUEST(xChangeGCReq); int tile_offset = 0, stip_offset = 0, clip_offset = 0; - int result = 0, len, j; + int result, len, j; XID tmp; REQUEST_AT_LEAST_SIZE(xChangeGCReq); @@ -790,32 +817,36 @@ int PanoramiXChangeGC(ClientPtr client) if (Ones(stuff->mask) != len) return BadLength; - if (!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; if ((Mask)stuff->mask & GCTile) { tile_offset = Ones((Mask)stuff->mask & (GCTile - 1)); if ((tmp = *((CARD32 *) &stuff[1] + tile_offset))) { - if(!(tile = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&tile, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & GCStipple) { stip_offset = Ones((Mask)stuff->mask & (GCStipple - 1)); if ((tmp = *((CARD32 *) &stuff[1] + stip_offset))) { - if(!(stip = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&stip, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } if ((Mask)stuff->mask & GCClipMask) { clip_offset = Ones((Mask)stuff->mask & (GCClipMask - 1)); if ((tmp = *((CARD32 *) &stuff[1] + clip_offset))) { - if(!(clip = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&clip, tmp, XRT_PIXMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } } @@ -839,18 +870,20 @@ int PanoramiXChangeGC(ClientPtr client) int PanoramiXCopyGC(ClientPtr client) { PanoramiXRes *srcGC, *dstGC; - int result = 0, j; + int result, j; REQUEST(xCopyGCReq); REQUEST_SIZE_MATCH(xCopyGCReq); - if(!(srcGC = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->srcGC, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&srcGC, stuff->srcGC, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; - if(!(dstGC = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->dstGC, XRT_GC, DixWriteAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&dstGC, stuff->dstGC, XRT_GC, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; FOR_NSCREENS(j) { stuff->srcGC = srcGC->info[j].id; @@ -866,14 +899,15 @@ int PanoramiXCopyGC(ClientPtr client) int PanoramiXSetDashes(ClientPtr client) { PanoramiXRes *gc; - int result = 0, j; + int result, j; REQUEST(xSetDashesReq); REQUEST_FIXED_SIZE(xSetDashesReq, stuff->nDashes); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixWriteAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; FOR_NSCREENS_BACKWARD(j) { stuff->gc = gc->info[j].id; @@ -888,14 +922,15 @@ int PanoramiXSetDashes(ClientPtr client) int PanoramiXSetClipRectangles(ClientPtr client) { PanoramiXRes *gc; - int result = 0, j; + int result, j; REQUEST(xSetClipRectanglesReq); REQUEST_AT_LEAST_SIZE(xSetClipRectanglesReq); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixWriteAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; FOR_NSCREENS_BACKWARD(j) { stuff->gc = gc->info[j].id; @@ -910,14 +945,15 @@ int PanoramiXSetClipRectangles(ClientPtr client) int PanoramiXFreeGC(ClientPtr client) { PanoramiXRes *gc; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_GC, DixDestroyAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->id, XRT_GC, + client, DixDestroyAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = gc->info[j].id; @@ -935,15 +971,16 @@ int PanoramiXFreeGC(ClientPtr client) int PanoramiXClearToBackground(ClientPtr client) { PanoramiXRes *win; - int result = 0, j, x, y; + int result, j, x, y; Bool isRoot; REQUEST(xClearAreaReq); REQUEST_SIZE_MATCH(xClearAreaReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; x = stuff->x; y = stuff->y; @@ -974,7 +1011,7 @@ int PanoramiXClearToBackground(ClientPtr client) int PanoramiXCopyArea(ClientPtr client) { - int j, result = 0, srcx, srcy, dstx, dsty; + int j, result, srcx, srcy, dstx, dsty; PanoramiXRes *gc, *src, *dst; Bool srcIsRoot = FALSE; Bool dstIsRoot = FALSE; @@ -983,24 +1020,27 @@ int PanoramiXCopyArea(ClientPtr client) REQUEST_SIZE_MATCH(xCopyAreaReq); - if(!(src = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->srcDrawable, XRC_DRAWABLE, DixReadAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&src, stuff->srcDrawable, + XRC_DRAWABLE, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; srcShared = IS_SHARED_PIXMAP(src); - if(!(dst = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->dstDrawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&dst, stuff->dstDrawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; dstShared = IS_SHARED_PIXMAP(dst); if(dstShared && srcShared) return (* SavedProcVector[X_CopyArea])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; if((dst->type == XRT_WINDOW) && dst->u.win.root) dstIsRoot = TRUE; @@ -1139,24 +1179,27 @@ int PanoramiXCopyPlane(ClientPtr client) REQUEST_SIZE_MATCH(xCopyPlaneReq); - if(!(src = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->srcDrawable, XRC_DRAWABLE, DixReadAccess))) - return BadDrawable; + rc = dixLookupResourceByClass((pointer *)&src, stuff->srcDrawable, + XRC_DRAWABLE, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? BadDrawable : rc; srcShared = IS_SHARED_PIXMAP(src); - if(!(dst = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->dstDrawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + rc = dixLookupResourceByClass((pointer *)&dst, stuff->dstDrawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? BadDrawable : rc; dstShared = IS_SHARED_PIXMAP(dst); if(dstShared && srcShared) return (* SavedProcVector[X_CopyPlane])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + rc = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? BadGC : rc; if((dst->type == XRT_WINDOW) && dst->u.win.root) dstIsRoot = TRUE; @@ -1235,23 +1278,25 @@ int PanoramiXCopyPlane(ClientPtr client) int PanoramiXPolyPoint(ClientPtr client) { PanoramiXRes *gc, *draw; - int result = 0, npoint, j; + int result, npoint, j; xPoint *origPts; Bool isRoot; REQUEST(xPolyPointReq); REQUEST_AT_LEAST_SIZE(xPolyPointReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyPoint])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2; @@ -1293,23 +1338,25 @@ int PanoramiXPolyPoint(ClientPtr client) int PanoramiXPolyLine(ClientPtr client) { PanoramiXRes *gc, *draw; - int result = 0, npoint, j; + int result, npoint, j; xPoint *origPts; Bool isRoot; REQUEST(xPolyLineReq); REQUEST_AT_LEAST_SIZE(xPolyLineReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyLine])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2; @@ -1350,7 +1397,7 @@ int PanoramiXPolyLine(ClientPtr client) int PanoramiXPolySegment(ClientPtr client) { - int result = 0, nsegs, i, j; + int result, nsegs, i, j; PanoramiXRes *gc, *draw; xSegment *origSegs; Bool isRoot; @@ -1358,16 +1405,18 @@ int PanoramiXPolySegment(ClientPtr client) REQUEST_AT_LEAST_SIZE(xPolySegmentReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolySegment])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1411,7 +1460,7 @@ int PanoramiXPolySegment(ClientPtr client) int PanoramiXPolyRectangle(ClientPtr client) { - int result = 0, nrects, i, j; + int result, nrects, i, j; PanoramiXRes *gc, *draw; Bool isRoot; xRectangle *origRecs; @@ -1419,17 +1468,18 @@ int PanoramiXPolyRectangle(ClientPtr client) REQUEST_AT_LEAST_SIZE(xPolyRectangleReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyRectangle])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1472,7 +1522,7 @@ int PanoramiXPolyRectangle(ClientPtr client) int PanoramiXPolyArc(ClientPtr client) { - int result = 0, narcs, i, j; + int result, narcs, i, j; PanoramiXRes *gc, *draw; Bool isRoot; xArc *origArcs; @@ -1480,16 +1530,18 @@ int PanoramiXPolyArc(ClientPtr client) REQUEST_AT_LEAST_SIZE(xPolyArcReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyArc])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1530,7 +1582,7 @@ int PanoramiXPolyArc(ClientPtr client) int PanoramiXFillPoly(ClientPtr client) { - int result = 0, count, j; + int result, count, j; PanoramiXRes *gc, *draw; Bool isRoot; DDXPointPtr locPts; @@ -1538,16 +1590,18 @@ int PanoramiXFillPoly(ClientPtr client) REQUEST_AT_LEAST_SIZE(xFillPolyReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_FillPoly])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1589,7 +1643,7 @@ int PanoramiXFillPoly(ClientPtr client) int PanoramiXPolyFillRectangle(ClientPtr client) { - int result = 0, things, i, j; + int result, things, i, j; PanoramiXRes *gc, *draw; Bool isRoot; xRectangle *origRects; @@ -1597,16 +1651,18 @@ int PanoramiXPolyFillRectangle(ClientPtr client) REQUEST_AT_LEAST_SIZE(xPolyFillRectangleReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyFillRectangle])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1650,22 +1706,24 @@ int PanoramiXPolyFillArc(ClientPtr client) { PanoramiXRes *gc, *draw; Bool isRoot; - int result = 0, narcs, i, j; + int result, narcs, i, j; xArc *origArcs; REQUEST(xPolyFillArcReq); REQUEST_AT_LEAST_SIZE(xPolyFillArcReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyFillArc])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1709,21 +1767,23 @@ int PanoramiXPutImage(ClientPtr client) { PanoramiXRes *gc, *draw; Bool isRoot; - int j, result = 0, orig_x, orig_y; + int j, result, orig_x, orig_y; REQUEST(xPutImageReq); REQUEST_AT_LEAST_SIZE(xPutImageReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PutImage])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1765,9 +1825,10 @@ int PanoramiXGetImage(ClientPtr client) return(BadValue); } - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + rc = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? BadDrawable : rc; if(draw->type == XRT_PIXMAP) return (*SavedProcVector[X_GetImage])(client); @@ -1906,22 +1967,24 @@ PanoramiXPolyText8(ClientPtr client) { PanoramiXRes *gc, *draw; Bool isRoot; - int result = 0, j; + int result, j; int orig_x, orig_y; REQUEST(xPolyTextReq); REQUEST_AT_LEAST_SIZE(xPolyTextReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyText8])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1945,22 +2008,24 @@ PanoramiXPolyText16(ClientPtr client) { PanoramiXRes *gc, *draw; Bool isRoot; - int result = 0, j; + int result, j; int orig_x, orig_y; REQUEST(xPolyTextReq); REQUEST_AT_LEAST_SIZE(xPolyTextReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_PolyText16])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1982,7 +2047,7 @@ PanoramiXPolyText16(ClientPtr client) int PanoramiXImageText8(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *gc, *draw; Bool isRoot; int orig_x, orig_y; @@ -1990,16 +2055,18 @@ int PanoramiXImageText8(ClientPtr client) REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_ImageText8])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -2021,7 +2088,7 @@ int PanoramiXImageText8(ClientPtr client) int PanoramiXImageText16(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *gc, *draw; Bool isRoot; int orig_x, orig_y; @@ -2029,16 +2096,18 @@ int PanoramiXImageText16(ClientPtr client) REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars << 1); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(IS_SHARED_PIXMAP(draw)) return (*SavedProcVector[X_ImageText16])(client); - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, XRT_GC, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -2062,14 +2131,15 @@ int PanoramiXImageText16(ClientPtr client) int PanoramiXCreateColormap(ClientPtr client) { PanoramiXRes *win, *newCmap; - int result = 0, j, orig_visual; + int result, j, orig_visual; REQUEST(xCreateColormapReq); REQUEST_SIZE_MATCH(xCreateColormapReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->window, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->window, + XRT_WINDOW, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; if(!(newCmap = xalloc(sizeof(PanoramiXRes)))) return BadAlloc; @@ -2100,16 +2170,17 @@ int PanoramiXCreateColormap(ClientPtr client) int PanoramiXFreeColormap(ClientPtr client) { PanoramiXRes *cmap; - int result = 0, j; + int result, j; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); client->errorValue = stuff->id; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_COLORMAP, DixDestroyAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->id, XRT_COLORMAP, + client, DixDestroyAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = cmap->info[j].id; @@ -2128,17 +2199,18 @@ int PanoramiXCopyColormapAndFree(ClientPtr client) { PanoramiXRes *cmap, *newCmap; - int result = 0, j; + int result, j; REQUEST(xCopyColormapAndFreeReq); REQUEST_SIZE_MATCH(xCopyColormapAndFreeReq); client->errorValue = stuff->srcCmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->srcCmap, XRT_COLORMAP, - DixReadAccess | DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->srcCmap, + XRT_COLORMAP, client, + DixReadAccess | DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; if(!(newCmap = xalloc(sizeof(PanoramiXRes)))) return BadAlloc; @@ -2167,16 +2239,17 @@ PanoramiXCopyColormapAndFree(ClientPtr client) int PanoramiXInstallColormap(ClientPtr client) { REQUEST(xResourceReq); - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST_SIZE_MATCH(xResourceReq); client->errorValue = stuff->id; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_COLORMAP, DixReadAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->id, XRT_COLORMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->id = cmap->info[j].id; @@ -2190,16 +2263,17 @@ int PanoramiXInstallColormap(ClientPtr client) int PanoramiXUninstallColormap(ClientPtr client) { REQUEST(xResourceReq); - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST_SIZE_MATCH(xResourceReq); client->errorValue = stuff->id; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->id, XRT_COLORMAP, DixReadAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->id, XRT_COLORMAP, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j) { stuff->id = cmap->info[j].id; @@ -2212,7 +2286,7 @@ int PanoramiXUninstallColormap(ClientPtr client) int PanoramiXAllocColor(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xAllocColorReq); @@ -2220,9 +2294,10 @@ int PanoramiXAllocColor(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; @@ -2235,7 +2310,7 @@ int PanoramiXAllocColor(ClientPtr client) int PanoramiXAllocNamedColor(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xAllocNamedColorReq); @@ -2243,9 +2318,10 @@ int PanoramiXAllocNamedColor(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; @@ -2258,7 +2334,7 @@ int PanoramiXAllocNamedColor(ClientPtr client) int PanoramiXAllocColorCells(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xAllocColorCellsReq); @@ -2266,9 +2342,10 @@ int PanoramiXAllocColorCells(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; @@ -2281,7 +2358,7 @@ int PanoramiXAllocColorCells(ClientPtr client) int PanoramiXAllocColorPlanes(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xAllocColorPlanesReq); @@ -2289,9 +2366,10 @@ int PanoramiXAllocColorPlanes(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; @@ -2305,7 +2383,7 @@ int PanoramiXAllocColorPlanes(ClientPtr client) int PanoramiXFreeColors(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xFreeColorsReq); @@ -2313,9 +2391,10 @@ int PanoramiXFreeColors(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j) { stuff->cmap = cmap->info[j].id; @@ -2327,7 +2406,7 @@ int PanoramiXFreeColors(ClientPtr client) int PanoramiXStoreColors(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xStoreColorsReq); @@ -2335,9 +2414,10 @@ int PanoramiXStoreColors(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; @@ -2350,7 +2430,7 @@ int PanoramiXStoreColors(ClientPtr client) int PanoramiXStoreNamedColor(ClientPtr client) { - int result = 0, j; + int result, j; PanoramiXRes *cmap; REQUEST(xStoreNamedColorReq); @@ -2358,9 +2438,10 @@ int PanoramiXStoreNamedColor(ClientPtr client) client->errorValue = stuff->cmap; - if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->cmap, XRT_COLORMAP, DixWriteAccess))) - return BadColor; + result = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, + XRT_COLORMAP, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadColor : result; FOR_NSCREENS_BACKWARD(j){ stuff->cmap = cmap->info[j].id; diff --git a/Xext/saver.c b/Xext/saver.c index 357c2155f..b59f769d5 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -533,11 +533,14 @@ UninstallSaverColormap (ScreenPtr pScreen) { SetupScreen(pScreen); ColormapPtr pCmap; + int rc; if (pPriv && pPriv->installedMap != None) { - pCmap = (ColormapPtr) LookupIDByType (pPriv->installedMap, RT_COLORMAP); - if (pCmap) + rc = dixLookupResourceByType((pointer *)&pCmap, pPriv->installedMap, + RT_COLORMAP, serverClient, + DixUninstallAccess); + if (rc == Success) (*pCmap->pScreen->UninstallColormap) (pCmap); pPriv->installedMap = None; CheckScreenPrivate (pScreen); @@ -651,8 +654,9 @@ CreateSaverWindow (ScreenPtr pScreen) if (i < numInstalled) return TRUE; - pCmap = (ColormapPtr) LookupIDByType (wantMap, RT_COLORMAP); - if (!pCmap) + result = dixLookupResourceByType((pointer *)&pCmap, wantMap, RT_COLORMAP, + serverClient, DixInstallAccess); + if (result != Success) return TRUE; pPriv->installedMap = wantMap; @@ -1252,15 +1256,16 @@ ProcScreenSaverSetAttributes (ClientPtr client) PanoramiXRes *backPix = NULL; PanoramiXRes *bordPix = NULL; PanoramiXRes *cmap = NULL; - int i, status = 0, len; + int i, status, len; int pback_offset = 0, pbord_offset = 0, cmap_offset = 0; XID orig_visual, tmp; REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + status = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (status != Success) + return (status == BadValue) ? BadDrawable : status; len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2); if (Ones(stuff->mask) != len) @@ -1270,9 +1275,11 @@ ProcScreenSaverSetAttributes (ClientPtr client) pback_offset = Ones((Mask)stuff->mask & (CWBackPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pback_offset); if ((tmp != None) && (tmp != ParentRelative)) { - if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + status = dixLookupResourceByType((pointer *)&backPix, tmp, + XRT_PIXMAP, client, + DixReadAccess); + if (status != Success) + return (status == BadValue) ? BadPixmap : status; } } @@ -1280,9 +1287,11 @@ ProcScreenSaverSetAttributes (ClientPtr client) pbord_offset = Ones((Mask)stuff->mask & (CWBorderPixmap - 1)); tmp = *((CARD32 *) &stuff[1] + pbord_offset); if (tmp != CopyFromParent) { - if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + status = dixLookupResourceByType((pointer *)&bordPix, tmp, + XRT_PIXMAP, client, + DixReadAccess); + if (status != Success) + return (status == BadValue) ? BadPixmap : status; } } @@ -1290,9 +1299,11 @@ ProcScreenSaverSetAttributes (ClientPtr client) cmap_offset = Ones((Mask)stuff->mask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); if ((tmp != CopyFromParent) && (tmp != None)) { - if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType( - client, tmp, XRT_COLORMAP, DixReadAccess))) - return BadColor; + status = dixLookupResourceByType((pointer *)&cmap, tmp, + XRT_COLORMAP, client, + DixReadAccess); + if (status != Success) + return (status == BadValue) ? BadColor : status; } } @@ -1327,11 +1338,12 @@ ProcScreenSaverUnsetAttributes (ClientPtr client) if(!noPanoramiXExtension) { REQUEST(xScreenSaverUnsetAttributesReq); PanoramiXRes *draw; - int i; + int rc, i; - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + rc = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? BadDrawable : rc; for(i = PanoramiXNumScreens - 1; i > 0; i--) { stuff->drawable = draw->info[i].id; diff --git a/Xext/security.c b/Xext/security.c index 7962fdb37..bae95a3b5 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -623,13 +623,16 @@ ProcSecurityRevokeAuthorization( { REQUEST(xSecurityRevokeAuthorizationReq); SecurityAuthorizationPtr pAuth; + int rc; REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq); - pAuth = (SecurityAuthorizationPtr)SecurityLookupIDByType(client, - stuff->authId, SecurityAuthorizationResType, DixDestroyAccess); - if (!pAuth) - return SecurityErrorBase + XSecurityBadAuthorization; + rc = dixLookupResourceByType((pointer *)&pAuth, stuff->authId, + SecurityAuthorizationResType, client, + DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? + SecurityErrorBase + XSecurityBadAuthorization : rc; FreeResource(stuff->authId, RT_NONE); return Success; diff --git a/Xext/shape.c b/Xext/shape.c index 15d2c5c5a..5977296e5 100644 --- a/Xext/shape.c +++ b/Xext/shape.c @@ -353,13 +353,14 @@ ProcPanoramiXShapeRectangles( { REQUEST(xShapeRectanglesReq); PanoramiXRes *win; - int j, result = 0; + int j, result; REQUEST_AT_LEAST_SIZE (xShapeRectanglesReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->dest, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -451,18 +452,20 @@ ProcPanoramiXShapeMask( { REQUEST(xShapeMaskReq); PanoramiXRes *win, *pmap; - int j, result = 0; + int j, result; REQUEST_SIZE_MATCH (xShapeMaskReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->dest, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; if(stuff->src != None) { - if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->src, XRT_PIXMAP, DixReadAccess))) - return BadPixmap; + result = dixLookupResourceByType((pointer *)&pmap, stuff->src, + XRT_PIXMAP, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadPixmap : result; } else pmap = NULL; @@ -579,17 +582,19 @@ ProcPanoramiXShapeCombine( { REQUEST(xShapeCombineReq); PanoramiXRes *win, *win2; - int j, result = 0; + int j, result; REQUEST_AT_LEAST_SIZE (xShapeCombineReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->dest, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; - if(!(win2 = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->src, XRT_WINDOW, DixReadAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win2, stuff->src, XRT_WINDOW, + client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -651,13 +656,14 @@ ProcPanoramiXShapeOffset( { REQUEST(xShapeOffsetReq); PanoramiXRes *win; - int j, result = 0; + int j, result; REQUEST_AT_LEAST_SIZE (xShapeOffsetReq); - if(!(win = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->dest, XRT_WINDOW, DixWriteAccess))) - return BadWindow; + result = dixLookupResourceByType((pointer *)&win, stuff->dest, XRT_WINDOW, + client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadWindow : result; FOR_NSCREENS(j) { stuff->dest = win->info[j].id; @@ -740,11 +746,13 @@ ShapeFreeClient (pointer data, XID id) ShapeEventPtr pShapeEvent; WindowPtr pWin; ShapeEventPtr *pHead, pCur, pPrev; + int rc; pShapeEvent = (ShapeEventPtr) data; pWin = pShapeEvent->window; - pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType); - if (pHead) { + rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + ShapeEventType, serverClient, DixReadAccess); + if (rc == Success) { pPrev = 0; for (pCur = *pHead; pCur && pCur != pShapeEvent; pCur=pCur->next) pPrev = pCur; @@ -789,8 +797,11 @@ ProcShapeSelectInput (ClientPtr client) rc = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess); if (rc != Success) return rc; - pHead = (ShapeEventPtr *)SecurityLookupIDByType(client, - pWin->drawable.id, ShapeEventType, DixWriteAccess); + rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + ShapeEventType, client, DixWriteAccess); + if (rc != Success && rc != BadValue) + return rc; + switch (stuff->enable) { case xTrue: if (pHead) { @@ -879,9 +890,11 @@ SendShapeNotify (WindowPtr pWin, int which) BoxRec extents; RegionPtr region; BYTE shaped; + int rc; - pHead = (ShapeEventPtr *) LookupIDByType(pWin->drawable.id, ShapeEventType); - if (!pHead) + rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + ShapeEventType, serverClient, DixReadAccess); + if (rc != Success) return; switch (which) { case ShapeBounding: @@ -958,8 +971,10 @@ ProcShapeInputSelected (ClientPtr client) rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); if (rc != Success) return rc; - pHead = (ShapeEventPtr *) SecurityLookupIDByType(client, - pWin->drawable.id, ShapeEventType, DixReadAccess); + rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + ShapeEventType, client, DixReadAccess); + if (rc != Success && rc != BadValue) + return rc; enabled = xFalse; if (pHead) { for (pShapeEvent = *pHead; diff --git a/Xext/shm.c b/Xext/shm.c index 1f963c16c..cdda09f7f 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -144,12 +144,11 @@ static ShmFuncs fbFuncs = {fbShmCreatePixmap, NULL}; #define VERIFY_SHMSEG(shmseg,shmdesc,client) \ { \ - shmdesc = (ShmDescPtr)LookupIDByType(shmseg, ShmSegType); \ - if (!shmdesc) \ - { \ - client->errorValue = shmseg; \ - return BadShmSegCode; \ - } \ + int rc; \ + rc = dixLookupResourceByType((pointer *)&(shmdesc), shmseg, ShmSegType, \ + client, DixReadAccess); \ + if (rc != Success) \ + return (rc == BadValue) ? BadShmSegCode : rc; \ } #define VERIFY_SHMPTR(shmseg,offset,needwrite,shmdesc,client) \ @@ -513,20 +512,22 @@ doShmPutImage(DrawablePtr dst, GCPtr pGC, static int ProcPanoramiXShmPutImage(ClientPtr client) { - int j, result = 0, orig_x, orig_y; + int j, result, orig_x, orig_y; PanoramiXRes *draw, *gc; Bool sendEvent, isRoot; REQUEST(xShmPutImageReq); REQUEST_SIZE_MATCH(xShmPutImageReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, + XRT_GC, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -570,9 +571,10 @@ ProcPanoramiXShmGetImage(ClientPtr client) return(BadValue); } - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + rc = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? BadDrawable : rc; if (draw->type == XRT_PIXMAP) return ProcShmGetImage(client); diff --git a/Xext/sync.c b/Xext/sync.c index adb732447..d7ab63cd5 100644 --- a/Xext/sync.c +++ b/Xext/sync.c @@ -1339,16 +1339,14 @@ ProcSyncSetCounter(ClientPtr client) REQUEST(xSyncSetCounterReq); SyncCounter *pCounter; CARD64 newvalue; + int rc; REQUEST_SIZE_MATCH(xSyncSetCounterReq); - pCounter = SecurityLookupIDByType(client, stuff->cid, RTCounter, - DixWriteAccess); - if (pCounter == NULL) - { - client->errorValue = stuff->cid; - return SyncErrorBase + XSyncBadCounter; - } + rc = dixLookupResourceByType((pointer *)&pCounter, stuff->cid, RTCounter, + client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc; if (IsSystemCounter(pCounter)) { @@ -1371,16 +1369,14 @@ ProcSyncChangeCounter(ClientPtr client) SyncCounter *pCounter; CARD64 newvalue; Bool overflow; + int rc; REQUEST_SIZE_MATCH(xSyncChangeCounterReq); - pCounter = SecurityLookupIDByType(client, stuff->cid, RTCounter, - DixWriteAccess); - if (pCounter == NULL) - { - client->errorValue = stuff->cid; - return SyncErrorBase + XSyncBadCounter; - } + rc = dixLookupResourceByType((pointer *)&pCounter, stuff->cid, RTCounter, + client, DixWriteAccess); + if (rc != Success) + return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc; if (IsSystemCounter(pCounter)) { @@ -1408,16 +1404,15 @@ ProcSyncDestroyCounter(ClientPtr client) { REQUEST(xSyncDestroyCounterReq); SyncCounter *pCounter; + int rc; REQUEST_SIZE_MATCH(xSyncDestroyCounterReq); - pCounter = SecurityLookupIDByType(client, stuff->counter, RTCounter, - DixDestroyAccess); - if (pCounter == NULL) - { - client->errorValue = stuff->counter; - return SyncErrorBase + XSyncBadCounter; - } + rc = dixLookupResourceByType((pointer *)&pCounter, stuff->counter, RTCounter, + client, DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc; + if (IsSystemCounter(pCounter)) { client->errorValue = stuff->counter; @@ -1552,16 +1547,14 @@ ProcSyncQueryCounter(ClientPtr client) REQUEST(xSyncQueryCounterReq); xSyncQueryCounterReply rep; SyncCounter *pCounter; + int rc; REQUEST_SIZE_MATCH(xSyncQueryCounterReq); - pCounter = SecurityLookupIDByType(client, stuff->counter, RTCounter, - DixReadAccess); - if (pCounter == NULL) - { - client->errorValue = stuff->counter; - return SyncErrorBase + XSyncBadCounter; - } + rc = dixLookupResourceByType((pointer *)&pCounter, stuff->counter, + RTCounter, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? SyncErrorBase + XSyncBadCounter : rc; rep.type = X_Reply; rep.length = 0; @@ -1682,12 +1675,10 @@ ProcSyncChangeAlarm(ClientPtr client) REQUEST_AT_LEAST_SIZE(xSyncChangeAlarmReq); - if (!(pAlarm = SecurityLookupIDByType(client, stuff->alarm, RTAlarm, - DixWriteAccess))) - { - client->errorValue = stuff->alarm; - return SyncErrorBase + XSyncBadAlarm; - } + status = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm, + client, DixWriteAccess); + if (status != Success) + return (status == BadValue) ? SyncErrorBase + XSyncBadAlarm : status; vmask = stuff->valueMask; len = client->req_len - (sizeof(xSyncChangeAlarmReq) >> 2); @@ -1719,16 +1710,14 @@ ProcSyncQueryAlarm(ClientPtr client) SyncAlarm *pAlarm; xSyncQueryAlarmReply rep; SyncTrigger *pTrigger; + int rc; REQUEST_SIZE_MATCH(xSyncQueryAlarmReq); - pAlarm = SecurityLookupIDByType(client, stuff->alarm, RTAlarm, - DixReadAccess); - if (!pAlarm) - { - client->errorValue = stuff->alarm; - return SyncErrorBase + XSyncBadAlarm; - } + rc = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm, + client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc; rep.type = X_Reply; rep.length = (sizeof(xSyncQueryAlarmReply) - sizeof(xGenericReply)) >> 2; @@ -1776,16 +1765,15 @@ ProcSyncQueryAlarm(ClientPtr client) static int ProcSyncDestroyAlarm(ClientPtr client) { + SyncAlarm *pAlarm; + int rc; REQUEST(xSyncDestroyAlarmReq); REQUEST_SIZE_MATCH(xSyncDestroyAlarmReq); - if (!(SecurityLookupIDByType(client, stuff->alarm, RTAlarm, - DixDestroyAccess))) - { - client->errorValue = stuff->alarm; - return SyncErrorBase + XSyncBadAlarm; - } + rc = dixLookupResourceByType((pointer *)&pAlarm, stuff->alarm, RTAlarm, + client, DixDestroyAccess); + return (rc == BadValue) ? SyncErrorBase + XSyncBadAlarm : rc; FreeResource(stuff->alarm, RT_NONE); return client->noClientException; diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c index 60189666e..7d4c69766 100644 --- a/Xext/xf86bigfont.c +++ b/Xext/xf86bigfont.c @@ -427,15 +427,15 @@ ProcXF86BigfontQueryFont( } #endif client->errorValue = stuff->id; /* EITHER font or gc */ - pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, - DixGetAttrAccess); + dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT, + client, DixGetAttrAccess); if (!pFont) { - GC *pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC, - DixGetAttrAccess); - if (!pGC) { - client->errorValue = stuff->id; + GC *pGC; + dixLookupResourceByType((pointer *)&pGC, stuff->id, RT_GC, + client, DixGetAttrAccess); + if (!pGC) return BadFont; /* procotol spec says only error is BadFont */ - } + pFont = pGC->font; } diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c index 770c53a27..fcb61e476 100644 --- a/Xext/xvdisp.c +++ b/Xext/xvdisp.c @@ -479,11 +479,7 @@ ProcXvQueryEncodings(ClientPtr client) REQUEST(xvQueryEncodingsReq); REQUEST_SIZE_MATCH(xvQueryEncodingsReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -540,12 +536,7 @@ ProcXvPutVideo(ClientPtr client) REQUEST_SIZE_MATCH(xvPutVideoReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -583,12 +574,7 @@ ProcXvPutStill(ClientPtr client) REQUEST_SIZE_MATCH(xvPutStillReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -626,12 +612,7 @@ ProcXvGetVideo(ClientPtr client) REQUEST_SIZE_MATCH(xvGetVideoReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -669,12 +650,7 @@ ProcXvGetStill(ClientPtr client) REQUEST_SIZE_MATCH(xvGetStillReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixReadAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -723,11 +699,7 @@ ProcXvSelectPortNotify(ClientPtr client) REQUEST(xvSelectPortNotifyReq); REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -747,11 +719,7 @@ ProcXvGrabPort(ClientPtr client) REQUEST(xvGrabPortReq); REQUEST_SIZE_MATCH(xvGrabPortReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -784,11 +752,7 @@ ProcXvUngrabPort(ClientPtr client) REQUEST(xvGrabPortReq); REQUEST_SIZE_MATCH(xvGrabPortReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -808,11 +772,7 @@ ProcXvStopVideo(ClientPtr client) REQUEST(xvStopVideoReq); REQUEST_SIZE_MATCH(xvStopVideoReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -835,11 +795,7 @@ ProcXvSetPortAttribute(ClientPtr client) REQUEST(xvSetPortAttributeReq); REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixSetAttrAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -873,11 +829,7 @@ ProcXvGetPortAttribute(ClientPtr client) REQUEST(xvGetPortAttributeReq); REQUEST_SIZE_MATCH(xvGetPortAttributeReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixGetAttrAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -918,11 +870,7 @@ ProcXvQueryBestSize(ClientPtr client) REQUEST(xvQueryBestSizeReq); REQUEST_SIZE_MATCH(xvQueryBestSizeReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -959,11 +907,7 @@ ProcXvQueryPortAttributes(ClientPtr client) REQUEST(xvQueryPortAttributesReq); REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixGetAttrAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -1019,12 +963,7 @@ ProcXvPutImage(ClientPtr client) REQUEST_AT_LEAST_SIZE(xvPutImageReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -1105,12 +1044,7 @@ ProcXvShmPutImage(ClientPtr client) REQUEST_SIZE_MATCH(xvShmPutImageReq); VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if ((status = _AllocatePort(stuff->port, pPort)) != Success) { @@ -1141,11 +1075,10 @@ ProcXvShmPutImage(ClientPtr client) if(!pImage) return BadMatch; - if(!(shmdesc = (ShmDescPtr)LookupIDByType(stuff->shmseg, ShmSegType))) - { - client->errorValue = stuff->shmseg; - return BadShmSegCode; - } + status = dixLookupResourceByType((pointer *)&shmdesc, stuff->shmseg, + ShmSegType, serverClient, DixReadAccess); + if (status != Success) + return (status == BadValue) ? BadShmSegCode : status; width = stuff->width; height = stuff->height; @@ -1206,11 +1139,7 @@ ProcXvQueryImageAttributes(ClientPtr client) REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); for(i = 0; i < pPort->pAdaptor->nImages; i++) { if(pPort->pAdaptor->pImages[i].id == stuff->id) { @@ -1269,11 +1198,7 @@ ProcXvListImageFormats(ClientPtr client) REQUEST_SIZE_MATCH(xvListImageFormatsReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); rep.type = X_Reply; rep.sequenceNumber = client->sequence; @@ -1679,18 +1604,20 @@ SProcXvDispatch(ClientPtr client) static int XineramaXvStopVideo(ClientPtr client) { - int result = Success, i; + int result, i; PanoramiXRes *draw, *port; REQUEST(xvStopVideoReq); REQUEST_SIZE_MATCH(xvStopVideoReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; FOR_NSCREENS_BACKWARD(i) { if(port->info[i].id) { @@ -1708,13 +1635,14 @@ XineramaXvSetPortAttribute(ClientPtr client) { REQUEST(xvSetPortAttributeReq); PanoramiXRes *port; - int result = Success, i; + int result, i; REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; FOR_NSCREENS_BACKWARD(i) { if(port->info[i].id) { @@ -1733,21 +1661,24 @@ XineramaXvShmPutImage(ClientPtr client) PanoramiXRes *draw, *gc, *port; Bool send_event = stuff->send_event; Bool isRoot; - int result = Success, i, x, y; + int result, i, x, y; REQUEST_SIZE_MATCH(xvShmPutImageReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, + XRT_GC, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1782,21 +1713,24 @@ XineramaXvPutImage(ClientPtr client) REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; Bool isRoot; - int result = Success, i, x, y; + int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutImageReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, + XRT_GC, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1827,21 +1761,24 @@ XineramaXvPutVideo(ClientPtr client) REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; Bool isRoot; - int result = Success, i, x, y; + int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutVideoReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, + XRT_GC, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; @@ -1872,21 +1809,24 @@ XineramaXvPutStill(ClientPtr client) REQUEST(xvPutImageReq); PanoramiXRes *draw, *gc, *port; Bool isRoot; - int result = Success, i, x, y; + int result, i, x, y; REQUEST_AT_LEAST_SIZE(xvPutImageReq); - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&draw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, DixReadAccess))) - return BadGC; + result = dixLookupResourceByType((pointer *)&gc, stuff->gc, + XRT_GC, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? BadGC : result; - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, DixReadAccess))) - return _XvBadPort; + result = dixLookupResourceByType((pointer *)&port, stuff->port, + XvXRTPort, client, DixReadAccess); + if (result != Success) + return (result == BadValue) ? _XvBadPort : result; isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; diff --git a/Xext/xvdix.h b/Xext/xvdix.h index 265c03ddf..44f8f6b18 100644 --- a/Xext/xvdix.h +++ b/Xext/xvdix.h @@ -201,17 +201,13 @@ typedef struct _XvPortRec { DevUnion devPriv; } XvPortRec, *XvPortPtr; -#define LOOKUP_PORT(_id, client)\ - ((XvPortPtr)LookupIDByType(_id, XvRTPort)) - -#define LOOKUP_ENCODING(_id, client)\ - ((XvEncodingPtr)LookupIDByType(_id, XvRTEncoding)) - -#define LOOKUP_VIDEONOTIFY_LIST(_id, client)\ - ((XvVideoNotifyPtr)LookupIDByType(_id, XvRTVideoNotifyList)) - -#define LOOKUP_PORTNOTIFY_LIST(_id, client)\ - ((XvPortNotifyPtr)LookupIDByType(_id, XvRTPortNotifyList)) +#define VALIDATE_XV_PORT(portID, pPort, mode)\ + {\ + int rc = dixLookupResourceByType((pointer *)&(pPort), portID,\ + XvRTPort, client, mode);\ + if (rc != Success)\ + return (rc == BadValue) ? _XvBadPort : rc;\ + } typedef struct { int version, revision; diff --git a/Xext/xvmain.c b/Xext/xvmain.c index 477194684..7c8a3c3d4 100644 --- a/Xext/xvmain.c +++ b/Xext/xvmain.c @@ -523,7 +523,8 @@ XvdiSendVideoNotify(XvPortPtr pPort, DrawablePtr pDraw, int reason) xvEvent event; XvVideoNotifyPtr pn; - pn = (XvVideoNotifyPtr)LookupIDByType(pDraw->id, XvRTVideoNotifyList); + dixLookupResourceByType((pointer *)&pn, pDraw->id, XvRTVideoNotifyList, + serverClient, DixReadAccess); while (pn) { @@ -905,10 +906,14 @@ XvdiSelectVideoNotify( BOOL onoff ){ XvVideoNotifyPtr pn,tpn,fpn; + int rc; /* 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 */ diff --git a/Xext/xvmc.c b/Xext/xvmc.c index 9166cf892..879a222bd 100644 --- a/Xext/xvmc.c +++ b/Xext/xvmc.c @@ -136,10 +136,7 @@ ProcXvMCListSurfaceTypes(ClientPtr client) REQUEST(xvmcListSurfaceTypesReq); REQUEST_SIZE_MATCH(xvmcListSurfaceTypesReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client))) { - client->errorValue = stuff->port; - return _XvBadPort; - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); if(XvMCScreenKey) { /* any adaptors at all */ ScreenPtr pScreen = pPort->pAdaptor->pScreen; @@ -192,10 +189,7 @@ ProcXvMCCreateContext(ClientPtr client) REQUEST(xvmcCreateContextReq); REQUEST_SIZE_MATCH(xvmcCreateContextReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client))) { - client->errorValue = stuff->port; - return _XvBadPort; - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen; @@ -273,11 +267,15 @@ ProcXvMCCreateContext(ClientPtr client) static int ProcXvMCDestroyContext(ClientPtr client) { + pointer val; + int rc; REQUEST(xvmcDestroyContextReq); REQUEST_SIZE_MATCH(xvmcDestroyContextReq); - if(!LookupIDByType(stuff->context_id, XvMCRTContext)) - return (XvMCBadContext + XvMCErrorBase); + rc = dixLookupResourceByType(&val, stuff->context_id, XvMCRTContext, + client, DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? XvMCBadContext + XvMCErrorBase : rc; FreeResource(stuff->context_id, RT_NONE); @@ -297,8 +295,10 @@ ProcXvMCCreateSurface(ClientPtr client) REQUEST(xvmcCreateSurfaceReq); REQUEST_SIZE_MATCH(xvmcCreateSurfaceReq); - if(!(pContext = LookupIDByType(stuff->context_id, XvMCRTContext))) - return (XvMCBadContext + XvMCErrorBase); + result = dixLookupResourceByType((pointer *)&pContext, stuff->context_id, + XvMCRTContext, client, DixUseAccess); + if (result != Success) + return (result == BadValue) ? XvMCBadContext + XvMCErrorBase : result; pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen); @@ -337,11 +337,15 @@ ProcXvMCCreateSurface(ClientPtr client) static int ProcXvMCDestroySurface(ClientPtr client) { + pointer val; + int rc; REQUEST(xvmcDestroySurfaceReq); REQUEST_SIZE_MATCH(xvmcDestroySurfaceReq); - if(!LookupIDByType(stuff->surface_id, XvMCRTSurface)) - return (XvMCBadSurface + XvMCErrorBase); + rc = dixLookupResourceByType(&val, stuff->surface_id, XvMCRTSurface, + client, DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? XvMCBadSurface + XvMCErrorBase : rc; FreeResource(stuff->surface_id, RT_NONE); @@ -363,8 +367,10 @@ ProcXvMCCreateSubpicture(ClientPtr client) REQUEST(xvmcCreateSubpictureReq); REQUEST_SIZE_MATCH(xvmcCreateSubpictureReq); - if(!(pContext = LookupIDByType(stuff->context_id, XvMCRTContext))) - return (XvMCBadContext + XvMCErrorBase); + result = dixLookupResourceByType((pointer *)&pContext, stuff->context_id, + XvMCRTContext, client, DixUseAccess); + if (result != Success) + return (result == BadValue) ? XvMCBadContext + XvMCErrorBase : result; pScreenPriv = XVMC_GET_PRIVATE(pContext->pScreen); @@ -448,11 +454,15 @@ ProcXvMCCreateSubpicture(ClientPtr client) static int ProcXvMCDestroySubpicture(ClientPtr client) { + pointer val; + int rc; REQUEST(xvmcDestroySubpictureReq); REQUEST_SIZE_MATCH(xvmcDestroySubpictureReq); - if(!LookupIDByType(stuff->subpicture_id, XvMCRTSubpicture)) - return (XvMCBadSubpicture + XvMCErrorBase); + rc = dixLookupResourceByType(&val, stuff->subpicture_id, XvMCRTSubpicture, + client, DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? XvMCBadSubpicture + XvMCErrorBase : rc; FreeResource(stuff->subpicture_id, RT_NONE); @@ -475,10 +485,7 @@ ProcXvMCListSubpictureTypes(ClientPtr client) REQUEST(xvmcListSubpictureTypesReq); REQUEST_SIZE_MATCH(xvmcListSubpictureTypesReq); - if(!(pPort = LOOKUP_PORT(stuff->port, client))) { - client->errorValue = stuff->port; - return _XvBadPort; - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen; @@ -571,11 +578,7 @@ ProcXvMCGetDRInfo(ClientPtr client) REQUEST(xvmcGetDRInfoReq); REQUEST_SIZE_MATCH(xvmcGetDRInfoReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client))) { - client->errorValue = stuff->port; - return _XvBadPort; - } + VALIDATE_XV_PORT(stuff->port, pPort, DixReadAccess); pScreen = pPort->pAdaptor->pScreen; pScreenPriv = XVMC_GET_PRIVATE(pScreen); diff --git a/Xi/chdevcur.c b/Xi/chdevcur.c index b0d3ce341..d7a9e4952 100644 --- a/Xi/chdevcur.c +++ b/Xi/chdevcur.c @@ -94,12 +94,10 @@ int ProcXChangeDeviceCursor(ClientPtr client) } else { - pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor, - RT_CURSOR, DixReadAccess); - if (!pCursor) - { - return BadCursor; - } + rc = dixLookupResourceByType((pointer *)&pCursor, stuff->cursor, + RT_CURSOR, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? BadCursor : rc; } ChangeWindowDeviceCursor(pWin, pDev, pCursor); diff --git a/Xi/extgrbdev.c b/Xi/extgrbdev.c index af8706320..0f64610b5 100644 --- a/Xi/extgrbdev.c +++ b/Xi/extgrbdev.c @@ -88,7 +88,7 @@ ProcXExtendedGrabDevice(ClientPtr client) { xExtendedGrabDeviceReply rep; DeviceIntPtr dev; - int rc = Success, + int rc, errval = 0, i; WindowPtr grab_window, @@ -145,14 +145,12 @@ ProcXExtendedGrabDevice(ClientPtr client) if (stuff->cursor) { - cursor = (CursorPtr)SecurityLookupIDByType(client, - stuff->cursor, - RT_CURSOR, - DixReadAccess); - if (!cursor) - { + rc = dixLookupResourceByType((pointer *)&cursor, stuff->cursor, + RT_CURSOR, client, DixReadAccess); + if (rc != Success) + { errval = stuff->cursor; - rc = BadCursor; + rc = (rc == BadValue) ? BadCursor : rc; goto cleanup; } } diff --git a/damageext/damageextint.h b/damageext/damageextint.h index 543f1a70b..45c5ff96c 100644 --- a/damageext/damageextint.h +++ b/damageext/damageextint.h @@ -58,11 +58,10 @@ typedef struct _DamageExt { } DamageExtRec, *DamageExtPtr; #define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \ - pDamageExt = SecurityLookupIDByType (client, rid, DamageExtType, mode); \ - if (!pDamageExt) { \ - client->errorValue = rid; \ - return DamageErrorBase + BadDamage; \ - } \ + int rc = dixLookupResourceByType((pointer *)&(pDamageExt), rid, \ + DamageExtType, client, mode); \ + if (rc != Success) \ + return (rc == BadValue) ? DamageErrorBase + BadDamage : rc; \ } void diff --git a/dbe/dbe.c b/dbe/dbe.c index 3fd99dfc9..b8f61e742 100644 --- a/dbe/dbe.c +++ b/dbe/dbe.c @@ -411,20 +411,23 @@ ProcDbeDeallocateBackBufferName(ClientPtr client) { REQUEST(xDbeDeallocateBackBufferNameReq); DbeWindowPrivPtr pDbeWindowPriv; - int i; + int rc, i; + pointer val; REQUEST_SIZE_MATCH(xDbeDeallocateBackBufferNameReq); /* Buffer name must be valid */ - if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, - stuff->buffer, dbeWindowPrivResType, DixDestroyAccess)) || - !(SecurityLookupIDByType(client, stuff->buffer, dbeDrawableResType, - DixDestroyAccess))) - { - client->errorValue = stuff->buffer; - return(dbeErrorBase + DbeBadBuffer); - } + rc = dixLookupResourceByType((pointer *)&pDbeWindowPriv, stuff->buffer, + dbeWindowPrivResType, client, + DixDestroyAccess); + if (rc != Success) + return (rc == BadValue) ? dbeErrorBase + DbeBadBuffer : rc; + + 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. * This is paranoid code since we already looked up the ID by type @@ -833,19 +836,21 @@ ProcDbeGetBackBufferAttributes(ClientPtr client) REQUEST(xDbeGetBackBufferAttributesReq); xDbeGetBackBufferAttributesReply rep; DbeWindowPrivPtr pDbeWindowPriv; - int n; + int rc, n; REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq); - if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, - stuff->buffer, dbeWindowPrivResType, DixGetAttrAccess))) + rc = dixLookupResourceByType((pointer *)&pDbeWindowPriv, stuff->buffer, + dbeWindowPrivResType, client, + DixGetAttrAccess); + if (rc == Success) { - rep.attributes = None; + rep.attributes = pDbeWindowPriv->pWindow->drawable.id; } else { - rep.attributes = pDbeWindowPriv->pWindow->drawable.id; + rep.attributes = None; } rep.type = X_Reply; diff --git a/dix/colormap.c b/dix/colormap.c index 6a5eb74a1..a5a006e60 100644 --- a/dix/colormap.c +++ b/dix/colormap.c @@ -893,9 +893,9 @@ AllocColor (ColormapPtr pmap, if (pmap->mid != pmap->pScreen->defColormap && pmap->pVisual->vid == pmap->pScreen->rootVisual) { - ColormapPtr prootmap = (ColormapPtr) - SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap, - RT_COLORMAP, DixReadAccess); + ColormapPtr prootmap; + dixLookupResourceByType((pointer *)&prootmap, pmap->pScreen->defColormap, + RT_COLORMAP, clients[client], DixReadAccess); if (pmap->class == prootmap->class) FindColorInRootCmap (prootmap, prootmap->red, entries, &rgb, @@ -910,9 +910,9 @@ AllocColor (ColormapPtr pmap, if (pmap->mid != pmap->pScreen->defColormap && pmap->pVisual->vid == pmap->pScreen->rootVisual) { - ColormapPtr prootmap = (ColormapPtr) - SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap, - RT_COLORMAP, DixReadAccess); + ColormapPtr prootmap; + dixLookupResourceByType((pointer *)&prootmap, pmap->pScreen->defColormap, + RT_COLORMAP, clients[client], DixReadAccess); if (pmap->class == prootmap->class) { @@ -1550,12 +1550,14 @@ FreePixels(ColormapPtr pmap, int client) int FreeClientPixels (pointer value, XID fakeid) { - ColormapPtr pmap; - colorResource *pcr = (colorResource *)value; - - pmap = (ColormapPtr) LookupIDByType(pcr->mid, RT_COLORMAP); - if (pmap) - FreePixels(pmap, pcr->client); + pointer pmap; + colorResource *pcr = value; + int rc; + + rc = dixLookupResourceByType(&pmap, pcr->mid, RT_COLORMAP, serverClient, + DixRemoveAccess); + if (rc == Success) + FreePixels((ColormapPtr)pmap, pcr->client); xfree(pcr); return Success; } diff --git a/dix/cursor.c b/dix/cursor.c index 7ab15df0c..086d008e0 100644 --- a/dix/cursor.c +++ b/dix/cursor.c @@ -545,8 +545,9 @@ CreateRootCursor(char *unused1, unsigned int unused2) if (err != Success) return NullCursor; - cursorfont = (FontPtr)LookupIDByType(fontID, RT_FONT); - if (!cursorfont) + err = dixLookupResourceByType((pointer *)&cursorfont, fontID, RT_FONT, + serverClient, DixReadAccess); + if (err != Success) return NullCursor; if (AllocGlyphCursor(fontID, 0, fontID, 1, 0, 0, 0, ~0, ~0, ~0, &curs, serverClient, (XID)0) != Success) diff --git a/dix/deprecated.c b/dix/deprecated.c index 5487b64bc..8123886ca 100644 --- a/dix/deprecated.c +++ b/dix/deprecated.c @@ -148,14 +148,18 @@ SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, pointer LookupIDByType(XID id, RESTYPE rtype) { - return SecurityLookupIDByType(NullClient, id, rtype, DixUnknownAccess); + pointer val; + dixLookupResourceByType(&val, id, rtype, NullClient, DixUnknownAccess); + return val; } /* replaced by dixLookupResourceByClass */ pointer 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} */ diff --git a/dix/dispatch.c b/dix/dispatch.c index 16a51bdc5..ce3294d32 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -1252,12 +1252,13 @@ int ProcCloseFont(ClientPtr client) { FontPtr pFont; + int rc; REQUEST(xResourceReq); REQUEST_SIZE_MATCH(xResourceReq); - pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, - DixDestroyAccess); - if ( pFont != (FontPtr)NULL) /* id was valid */ + rc = dixLookupResourceByType((pointer *)&pFont, stuff->id, RT_FONT, + client, DixDestroyAccess); + if (rc == Success) { FreeResource(stuff->id, RT_NONE); return(client->noClientException); @@ -1265,7 +1266,7 @@ ProcCloseFont(ClientPtr client) else { client->errorValue = stuff->id; - return (BadFont); + return (rc == BadValue) ? BadFont : rc; } } diff --git a/dix/dixfonts.c b/dix/dixfonts.c index 79489e81f..8b6e7a329 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -137,8 +137,9 @@ SetDefaultFont(char *defaultfontname) (unsigned) strlen(defaultfontname), defaultfontname); if (err != Success) return FALSE; - pf = (FontPtr) LookupIDByType(fid, RT_FONT); - if (pf == (FontPtr) NULL) + err = dixLookupResourceByType((pointer *)&pf, fid, RT_FONT, serverClient, + DixReadAccess); + if (err != Success) return FALSE; defaultFont = pf; return TRUE; @@ -1201,17 +1202,18 @@ doPolyText(ClientPtr client, PTclosurePtr c) } /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && - c->pDraw && - c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did, - RC_DRAWABLE, DixWriteAccess)) + if (c->slept && c->pDraw) { - /* Our drawable has disappeared. Treat like client died... ask - the FPE code to clean up after client and avoid further - 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; + DrawablePtr pDraw; + dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess); + if (c->pDraw != pDraw) { + /* Our drawable has disappeared. Treat like client died... ask + the FPE code to clean up after client and avoid further + 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; @@ -1233,12 +1235,11 @@ doPolyText(ClientPtr client, PTclosurePtr c) | ((Font)*(c->pElt+3)) << 8 | ((Font)*(c->pElt+2)) << 16 | ((Font)*(c->pElt+1)) << 24; - pFont = (FontPtr)SecurityLookupIDByType(client, fid, RT_FONT, - DixReadAccess); - if (!pFont) + err = dixLookupResourceByType((pointer *)&pFont, fid, RT_FONT, + client, DixReadAccess); + if (err != Success) { - client->errorValue = fid; - err = BadFont; + err = (err == BadValue) ? BadFont : err; /* restore pFont and fid for step 4 (described below) */ pFont = oldpFont; fid = oldfid; @@ -1486,17 +1487,18 @@ doImageText(ClientPtr client, ITclosurePtr c) } /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && - c->pDraw && - c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did, - RC_DRAWABLE, DixWriteAccess)) + if (c->slept && c->pDraw) { - /* Our drawable has disappeared. Treat like client died... ask - the FPE code to clean up after client. */ - fpe = c->pGC->font->fpe; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - err = Success; - goto bail; + DrawablePtr pDraw; + dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess); + if (c->pDraw != pDraw) { + /* Our drawable has disappeared. Treat like client died... ask + the FPE code to clean up after client. */ + 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); @@ -2013,8 +2015,9 @@ FreeFonts(void) FontPtr find_old_font(XID id) { - return (FontPtr) SecurityLookupIDByType(NullClient, id, RT_NONE, - DixUnknownAccess); + pointer pFont; + dixLookupResourceByType(&pFont, id, RT_NONE, serverClient, DixReadAccess); + return (FontPtr)pFont; } Font diff --git a/dix/dixutils.c b/dix/dixutils.c index 1bdeee064..5cede5f43 100644 --- a/dix/dixutils.c +++ b/dix/dixutils.c @@ -240,14 +240,9 @@ dixLookupWindow(WindowPtr *pWin, XID id, ClientPtr client, Mask access) int dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access) { - GCPtr pTmp = (GCPtr)SecurityLookupIDByType(client, id, RT_GC, access); - if (pTmp) { - *pGC = pTmp; - return Success; - } - client->errorValue = id; - *pGC = NULL; - return BadGC; + int rc; + rc = dixLookupResourceByType((pointer *)pGC, id, RT_GC, client, access); + return (rc == BadValue) ? BadGC : rc; } int diff --git a/dix/events.c b/dix/events.c index 8af71b645..be88891a4 100644 --- a/dix/events.c +++ b/dix/events.c @@ -506,16 +506,17 @@ XineramaSetWindowPntrs(DeviceIntPtr pDev, WindowPtr pWin) PanoramiXNumScreens*sizeof(WindowPtr)); } else { PanoramiXRes *win; - int i; - - win = (PanoramiXRes*)LookupIDByType(pWin->drawable.id, XRT_WINDOW); + int rc, i; - if(!win) + rc = dixLookupResourceByType((pointer *)&win, pWin->drawable.id, + XRT_WINDOW, serverClient, DixReadAccess); + if (rc != Success) return FALSE; for(i = 0; i < PanoramiXNumScreens; i++) { - pSprite->windows[i] = LookupIDByType(win->info[i].id, RT_WINDOW); - if(!pSprite->windows[i]) /* window is being unmapped */ + rc = dixLookupWindow(pSprite->windows + i, win->info[i].id, + serverClient, DixReadAccess); + if (rc != Success) /* window is being unmapped */ return FALSE; } } diff --git a/dix/resource.c b/dix/resource.c index dc6945dd1..73bc3a998 100644 --- a/dix/resource.c +++ b/dix/resource.c @@ -392,13 +392,16 @@ unsigned int GetXIDList(ClientPtr pClient, unsigned count, XID *pids) { unsigned int found = 0; - XID id = pClient->clientAsMask; + XID rc, id = pClient->clientAsMask; XID maxid; + pointer val; maxid = id | RESOURCE_ID_MASK; while ( (found < count) && (id <= maxid) ) { - if (!LookupIDByClass(id, RC_ANY)) + rc = dixLookupResourceByClass(&val, id, RC_ANY, serverClient, + DixGetAttrAccess); + if (rc == BadValue) { pids[found++] = id; } @@ -826,6 +829,8 @@ FreeAllResources(void) Bool LegalNewID(XID id, ClientPtr client) { + pointer val; + int rc; #ifdef PANORAMIX XID minid, maxid; @@ -838,9 +843,16 @@ LegalNewID(XID id, ClientPtr client) return TRUE; } #endif /* PANORAMIX */ - return ((client->clientAsMask == (id & ~RESOURCE_ID_MASK)) && - ((clientTable[client->index].expectID <= id) || - !LookupIDByClass(id, RC_ANY))); + if (client->clientAsMask == (id & ~RESOURCE_ID_MASK)) + { + if (clientTable[client->index].expectID <= id) + return TRUE; + + rc = dixLookupResourceByClass(&val, id, RC_ANY, serverClient, + DixGetAttrAccess); + return (rc == BadValue); + } + return FALSE; } int diff --git a/dix/window.c b/dix/window.c index f112f81d4..324ddb71e 100644 --- a/dix/window.c +++ b/dix/window.c @@ -2795,6 +2795,7 @@ UnrealizeTree( WindowPtr pChild; UnrealizeWindowProcPtr Unrealize; MarkUnrealizedWindowProcPtr MarkUnrealizedWindow; + int rc; Unrealize = pWin->drawable.pScreen->UnrealizeWindow; MarkUnrealizedWindow = pWin->drawable.pScreen->MarkUnrealizedWindow; @@ -2808,9 +2809,10 @@ UnrealizeTree( #ifdef PANORAMIX if(!noPanoramiXExtension && !pChild->drawable.pScreen->myNum) { PanoramiXRes *win; - win = (PanoramiXRes*)LookupIDByType(pChild->drawable.id, - XRT_WINDOW); - if(win) + rc = dixLookupResourceByType((pointer *)&win, + pChild->drawable.id, XRT_WINDOW, + serverClient, DixWriteAccess); + if (rc == Success) win->u.win.visibility = VisibilityNotViewable; } #endif @@ -3072,7 +3074,7 @@ SendVisibilityNotify(WindowPtr pWin) if(!noPanoramiXExtension) { PanoramiXRes *win; WindowPtr pWin2; - int i, Scrnum; + int rc, i, Scrnum; Scrnum = pWin->drawable.pScreen->myNum; @@ -3086,9 +3088,10 @@ SendVisibilityNotify(WindowPtr pWin) for(i = 0; i < PanoramiXNumScreens; i++) { 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) return; @@ -3098,17 +3101,19 @@ SendVisibilityNotify(WindowPtr pWin) break; case VisibilityPartiallyObscured: if(Scrnum) { - pWin2 = (WindowPtr)LookupIDByType(win->info[0].id, RT_WINDOW); - if (pWin2) pWin = pWin2; + rc = dixLookupWindow(&pWin2, win->info[0].id, serverClient, + DixWriteAccess); + if (rc == Success) pWin = pWin2; } break; case VisibilityFullyObscured: for(i = 0; i < PanoramiXNumScreens; i++) { 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) return; @@ -3739,7 +3744,7 @@ DrawLogo(WindowPtr pWin) int x, y; unsigned int width, height, size; GC *pGC; - int thin, gap, d31; + int rc, thin, gap, d31; DDXPointRec poly[4]; ChangeGCVal fore[2], back[2]; xrgb rgb[2]; @@ -3760,20 +3765,23 @@ DrawLogo(WindowPtr pWin) fore[0].val = pScreen->whitePixel; else fore[0].val = pScreen->blackPixel; - if ((pWin->backgroundState == BackgroundPixel) && - (cmap = (ColormapPtr)LookupIDByType(wColormap (pWin), RT_COLORMAP))) { - Pixel querypixels[2]; - - querypixels[0] = fore[0].val; - querypixels[1] = pWin->background.pixel; - QueryColors(cmap, 2, querypixels, rgb); - if ((rgb[0].red == rgb[1].red) && - (rgb[0].green == rgb[1].green) && - (rgb[0].blue == rgb[1].blue)) { - if (fore[0].val == pScreen->blackPixel) - fore[0].val = pScreen->whitePixel; - else - fore[0].val = pScreen->blackPixel; + if (pWin->backgroundState == BackgroundPixel) { + rc = dixLookupResourceByType((pointer *)&cmap, wColormap(pWin), + RT_COLORMAP, serverClient, DixReadAccess); + if (rc == Success) { + Pixel querypixels[2]; + + querypixels[0] = fore[0].val; + querypixels[1] = pWin->background.pixel; + QueryColors(cmap, 2, querypixels, rgb); + if ((rgb[0].red == rgb[1].red) && + (rgb[0].green == rgb[1].green) && + (rgb[0].blue == rgb[1].blue)) { + if (fore[0].val == pScreen->blackPixel) + fore[0].val = pScreen->whitePixel; + else + fore[0].val = pScreen->blackPixel; + } } } fore[1].val = FillSolid; diff --git a/fb/fbcmap.c b/fb/fbcmap.c index c29a5131c..207c6aefc 100644 --- a/fb/fbcmap.c +++ b/fb/fbcmap.c @@ -85,8 +85,10 @@ fbUninstallColormap(ColormapPtr pmap) { if (pmap->mid != pmap->pScreen->defColormap) { - curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&curpmap, + pmap->pScreen->defColormap, + RT_COLORMAP, + serverClient, DixInstallAccess); (*pmap->pScreen->InstallColormap)(curpmap); } } diff --git a/hw/kdrive/src/kcmap.c b/hw/kdrive/src/kcmap.c index 4941ad17f..2c33e798a 100644 --- a/hw/kdrive/src/kcmap.c +++ b/hw/kdrive/src/kcmap.c @@ -217,7 +217,8 @@ KdUninstallColormap (ColormapPtr pCmap) return; /* 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) (*pCmap->pScreen->InstallColormap)(defMap); else diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index af3e8f1d4..8ab8bae64 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -508,8 +508,10 @@ vfbUninstallColormap(ColormapPtr pmap) { if (pmap->mid != pmap->pScreen->defColormap) { - curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&curpmap, + pmap->pScreen->defColormap, + RT_COLORMAP, serverClient, + DixInstallAccess); (*pmap->pScreen->InstallColormap)(curpmap); } } diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c index a627b5315..7e73bb85c 100644 --- a/hw/xfree86/common/xf86cmap.c +++ b/hw/xfree86/common/xf86cmap.c @@ -211,8 +211,8 @@ Bool xf86HandleColormaps( ComputeGamma(pScreenPriv); /* get the default map */ - - pDefMap = (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP); + dixLookupResourceByType((pointer *)&pDefMap, pScreen->defColormap, + RT_COLORMAP, serverClient, DixInstallAccess); if(!CMapAllocateColormapPrivate(pDefMap)) { CMapUnwrapScreen(pScreen); diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c index 868fb0624..46aa8b882 100644 --- a/hw/xfree86/dixmods/extmod/xf86dga2.c +++ b/hw/xfree86/dixmods/extmod/xf86dga2.c @@ -420,6 +420,7 @@ static int ProcXDGAInstallColormap(ClientPtr client) { ColormapPtr cmap; + int rc; REQUEST(xXDGAInstallColormapReq); if (stuff->screen > screenInfo.numScreens) @@ -430,13 +431,13 @@ ProcXDGAInstallColormap(ClientPtr client) REQUEST_SIZE_MATCH(xXDGAInstallColormapReq); - cmap = (ColormapPtr)LookupIDByType(stuff->cmap, RT_COLORMAP); - if (cmap) { + rc = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, RT_COLORMAP, + client, DixInstallAccess); + if (rc == Success) { DGAInstallCmap(cmap); return (client->noClientException); } else { - client->errorValue = stuff->cmap; - return (BadColor); + return (rc == BadValue) ? BadColor : rc; } return (client->noClientException); @@ -858,6 +859,7 @@ static int ProcXF86DGAInstallColormap(ClientPtr client) { ColormapPtr pcmp; + int rc; REQUEST(xXF86DGAInstallColormapReq); if (stuff->screen > screenInfo.numScreens) @@ -871,13 +873,13 @@ ProcXF86DGAInstallColormap(ClientPtr client) if (!DGAActive(stuff->screen)) return (DGAErrorBase + XF86DGADirectNotActivated); - pcmp = (ColormapPtr )LookupIDByType(stuff->id, RT_COLORMAP); - if (pcmp) { + rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP, + client, DixInstallAccess); + if (rc == Success) { DGAInstallCmap(pcmp); return (client->noClientException); } else { - client->errorValue = stuff->id; - return (BadColor); + return (rc == BadValue) ? BadColor : rc; } } diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c index c01686de3..3af9878d5 100644 --- a/hw/xfree86/dri/dri.c +++ b/hw/xfree86/dri/dri.c @@ -1363,11 +1363,12 @@ Bool DRIDrawablePrivDelete(pointer pResource, XID id) { WindowPtr pWin; + int rc; 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); if (!pDRIDrwPriv) diff --git a/hw/xfree86/vgahw/vgaCmap.c b/hw/xfree86/vgahw/vgaCmap.c index 44043c6c7..095e480a3 100644 --- a/hw/xfree86/vgahw/vgaCmap.c +++ b/hw/xfree86/vgahw/vgaCmap.c @@ -277,8 +277,8 @@ vgaUninstallColormap(pmap) if ( pmap != miInstalledMaps[pmap->pScreen->myNum] ) return; - defColormap = (ColormapPtr) LookupIDByType( pmap->pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&defColormap, pmap->pScreen->defColormap, + RT_COLORMAP, serverClient, DixInstallAccess); if (defColormap == miInstalledMaps[pmap->pScreen->myNum]) return; diff --git a/hw/xnest/Color.c b/hw/xnest/Color.c index 5ba0bdbad..dc749478f 100644 --- a/hw/xnest/Color.c +++ b/hw/xnest/Color.c @@ -242,16 +242,16 @@ xnestSetInstalledColormapWindows(ScreenPtr pScreen) WindowPtr pWin; Visual *visual; ColormapPtr pCmap; - + pWin = xnestWindowPtr(icws.windows[0]); visual = xnestVisualFromID(pScreen, wVisual(pWin)); if (visual == xnestDefaultVisual(pScreen)) - pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), - RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin), + RT_COLORMAP, serverClient, DixUseAccess); else - pCmap = (ColormapPtr)LookupIDByType(pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, pScreen->defColormap, + RT_COLORMAP, serverClient, DixUseAccess); XSetWindowColormap(xnestDisplay, xnestDefaultWindows[pScreen->myNum], @@ -302,7 +302,8 @@ xnestDirectInstallColormaps(ScreenPtr pScreen) for (i = 0; i < n; i++) { ColormapPtr pCmap; - pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, pCmapIDs[i], RT_COLORMAP, + serverClient, DixInstallAccess); if (pCmap) XInstallColormap(xnestDisplay, xnestColormap(pCmap)); } @@ -321,7 +322,8 @@ xnestDirectUninstallColormaps(ScreenPtr pScreen) for (i = 0; i < n; i++) { ColormapPtr pCmap; - pCmap = (ColormapPtr)LookupIDByType(pCmapIDs[i], RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, pCmapIDs[i], RT_COLORMAP, + serverClient, DixUninstallAccess); if (pCmap) XUninstallColormap(xnestDisplay, xnestColormap(pCmap)); } @@ -365,8 +367,10 @@ xnestUninstallColormap(ColormapPtr pCmap) { if (pCmap->mid != pCmap->pScreen->defColormap) { - pCurCmap = (ColormapPtr)LookupIDByType(pCmap->pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCurCmap, + pCmap->pScreen->defColormap, + RT_COLORMAP, + serverClient, DixInstallAccess); (*pCmap->pScreen->InstallColormap)(pCurCmap); } } diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c index ae3487f4a..48c870fac 100644 --- a/hw/xnest/Window.c +++ b/hw/xnest/Window.c @@ -93,7 +93,8 @@ xnestCreateWindow(WindowPtr pWin) visual = xnestVisualFromID(pWin->drawable.pScreen, wVisual(pWin)); mask |= CWColormap; if (pWin->optional->colormap) { - pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin), + RT_COLORMAP, serverClient, DixUseAccess); attributes.colormap = xnestColormap(pCmap); } else @@ -104,7 +105,8 @@ xnestCreateWindow(WindowPtr pWin) } else { /* root windows have their own colormaps at creation time */ 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; attributes.colormap = xnestColormap(pCmap); } @@ -338,7 +340,8 @@ xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask) if (mask & CWColormap) { ColormapPtr pCmap; - pCmap = (ColormapPtr)LookupIDByType(wColormap(pWin), RT_COLORMAP); + dixLookupResourceByType((pointer *)&pCmap, wColormap(pWin), RT_COLORMAP, + serverClient, DixUseAccess); attributes.colormap = xnestColormap(pCmap); diff --git a/mi/micmap.c b/mi/micmap.c index 6318d6745..1d26a5232 100644 --- a/mi/micmap.c +++ b/mi/micmap.c @@ -87,8 +87,10 @@ miUninstallColormap(ColormapPtr pmap) { if (pmap->mid != pmap->pScreen->defColormap) { - curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, - RT_COLORMAP); + dixLookupResourceByType((pointer *)&curpmap, + pmap->pScreen->defColormap, + RT_COLORMAP, serverClient, + DixUseAccess); (*pmap->pScreen->InstallColormap)(curpmap); } } diff --git a/mi/miexpose.c b/mi/miexpose.c index 5746a5fca..2c43d9824 100644 --- a/mi/miexpose.c +++ b/mi/miexpose.c @@ -436,7 +436,7 @@ miSendExposures( WindowPtr pWin, RegionPtr pRgn, int dx, int dy) return; } realWin = win->info[0].id; - pWin = LookupIDByType(realWin, RT_WINDOW); + dixLookupWindow(&pWin, realWin, serverClient, DixSendAccess); } if(x || y || scrnum) for (i = 0; i < numRects; i++) { diff --git a/randr/randr.c b/randr/randr.c index 07dd9e917..fd0a30aa1 100644 --- a/randr/randr.c +++ b/randr/randr.c @@ -279,7 +279,8 @@ RRFreeClient (pointer data, XID id) pRREvent = (RREventPtr) data; pWin = pRREvent->window; - pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, RREventType); + dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + RREventType, serverClient, DixDestroyAccess); if (pHead) { pPrev = 0; for (pCur = *pHead; pCur && pCur != pRREvent; pCur=pCur->next) @@ -357,7 +358,8 @@ TellChanged (WindowPtr pWin, pointer value) rrScrPriv(pScreen); int i; - pHead = (RREventPtr *) LookupIDByType (pWin->drawable.id, RREventType); + dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + RREventType, serverClient, DixReadAccess); if (!pHead) return WT_WALKCHILDREN; diff --git a/randr/randrstr.h b/randr/randrstr.h index 5e70aa3bf..af1437404 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -340,15 +340,29 @@ extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event extern _X_EXPORT DevPrivateKey RRClientPrivateKey; extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType; -#define LookupOutput(client,id,a) ((RROutputPtr) \ - (SecurityLookupIDByType (client, id, \ - RROutputType, a))) -#define LookupCrtc(client,id,a) ((RRCrtcPtr) \ - (SecurityLookupIDByType (client, id, \ - RRCrtcType, a))) -#define LookupMode(client,id,a) ((RRModePtr) \ - (SecurityLookupIDByType (client, id, \ - RRModeType, a))) +#define VERIFY_RR_OUTPUT(id, ptr, a)\ + {\ + int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ + RROutputType, client, a);\ + if (rc != Success)\ + return (rc == BadValue) ? RRErrorBase + BadRROutput : rc;\ + } + +#define VERIFY_RR_CRTC(id, ptr, a)\ + {\ + int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ + RRCrtcType, client, a);\ + if (rc != Success)\ + return (rc == BadValue) ? RRErrorBase + BadRRCrtc : rc;\ + } + +#define VERIFY_RR_MODE(id, ptr, a)\ + {\ + int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ + RRModeType, client, a);\ + if (rc != Success)\ + return (rc == BadValue) ? RRErrorBase + BadRRMode : rc;\ + } #define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey)) #define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient) diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index 7b724aefc..287c21194 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -658,10 +658,7 @@ ProcRRGetCrtcInfo (ClientPtr client) BoxRec panned_area; REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); - crtc = LookupCrtc(client, stuff->crtc, DixReadAccess); - - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); /* All crtcs must be associated with screens before client * requests are processed @@ -775,17 +772,13 @@ ProcRRSetCrtcConfig (ClientPtr client) TimeStamp configTime; TimeStamp time; Rotation rotation; - int i, j; + int rc, i, j; REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq); numOutputs = (stuff->length - (SIZEOF (xRRSetCrtcConfigReq) >> 2)); - crtc = LookupIDByType (stuff->crtc, RRCrtcType); - if (!crtc) - { - client->errorValue = stuff->crtc; - return RRErrorBase + BadRRCrtc; - } + VERIFY_RR_CRTC(stuff->crtc, crtc, DixSetAttrAccess); + if (stuff->mode == None) { mode = NULL; @@ -794,12 +787,7 @@ ProcRRSetCrtcConfig (ClientPtr client) } else { - mode = LookupIDByType (stuff->mode, RRModeType); - if (!mode) - { - client->errorValue = stuff->mode; - return RRErrorBase + BadRRMode; - } + VERIFY_RR_MODE(stuff->mode, mode, DixSetAttrAccess); if (numOutputs == 0) return BadMatch; } @@ -815,13 +803,13 @@ ProcRRSetCrtcConfig (ClientPtr client) outputIds = (RROutput *) (stuff + 1); for (i = 0; i < numOutputs; i++) { - outputs[i] = (RROutputPtr) LookupIDByType (outputIds[i], RROutputType); - if (!outputs[i]) + rc = dixLookupResourceByType((pointer *)(outputs + i), outputIds[i], + RROutputType, client, DixSetAttrAccess); + if (rc != Success) { - client->errorValue = outputIds[i]; if (outputs) xfree (outputs); - return RRErrorBase + BadRROutput; + return (rc == BadValue) ? RRErrorBase + BadRROutput : rc; } /* validate crtc for this output */ for (j = 0; j < outputs[i]->numCrtcs; j++) @@ -1027,10 +1015,7 @@ ProcRRGetPanning (ClientPtr client) int n; REQUEST_SIZE_MATCH(xRRGetPanningReq); - crtc = LookupCrtc(client, stuff->crtc, DixReadAccess); - - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); /* All crtcs must be associated with screens before client * requests are processed @@ -1100,11 +1085,7 @@ ProcRRSetPanning (ClientPtr client) int n; REQUEST_SIZE_MATCH(xRRSetPanningReq); - crtc = LookupCrtc(client, stuff->crtc, DixReadAccess); - - if (!crtc) - return RRErrorBase + BadRRCrtc; - + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); /* All crtcs must be associated with screens before client * requests are processed @@ -1175,9 +1156,7 @@ ProcRRGetCrtcGammaSize (ClientPtr client) int n; REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq); - crtc = LookupCrtc (client, stuff->crtc, DixReadAccess); - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); /* Gamma retrieval failed, any better error? */ if (!RRCrtcGammaGet(crtc)) @@ -1207,9 +1186,7 @@ ProcRRGetCrtcGamma (ClientPtr client) char *extra = NULL; REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq); - crtc = LookupCrtc (client, stuff->crtc, DixReadAccess); - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); /* Gamma retrieval failed, any better error? */ if (!RRCrtcGammaGet(crtc)) @@ -1252,9 +1229,7 @@ ProcRRSetCrtcGamma (ClientPtr client) CARD16 *red, *green, *blue; REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq); - crtc = LookupCrtc (client, stuff->crtc, DixWriteAccess); - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); len = client->req_len - (sizeof (xRRSetCrtcGammaReq) >> 2); if (len < (stuff->size * 3 + 1) >> 1) @@ -1287,9 +1262,7 @@ ProcRRSetCrtcTransform (ClientPtr client) int nparams; REQUEST_AT_LEAST_SIZE(xRRSetCrtcTransformReq); - crtc = LookupCrtc (client, stuff->crtc, DixWriteAccess); - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); PictTransform_from_xRenderTransform (&transform, &stuff->transform); pixman_f_transform_from_pixman_transform (&f_transform, &transform); @@ -1372,9 +1345,7 @@ ProcRRGetCrtcTransform (ClientPtr client) char *extra; REQUEST_SIZE_MATCH (xRRGetCrtcTransformReq); - crtc = LookupCrtc (client, stuff->crtc, DixWriteAccess); - if (!crtc) - return RRErrorBase + BadRRCrtc; + VERIFY_RR_CRTC(stuff->crtc, crtc, DixReadAccess); pending = &crtc->client_pending_transform; current = &crtc->client_current_transform; diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c index 0925875bf..bec5b08af 100644 --- a/randr/rrdispatch.c +++ b/randr/rrdispatch.c @@ -79,9 +79,10 @@ ProcRRSelectInput (ClientPtr client) rc = dixLookupWindow(&pWin, stuff->window, client, DixReceiveAccess); if (rc != Success) return rc; - pHead = (RREventPtr *)SecurityLookupIDByType(client, - pWin->drawable.id, RREventType, - DixWriteAccess); + rc = dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + RREventType, client, DixWriteAccess); + if (rc != Success && rc != BadValue) + return rc; if (stuff->enable & (RRScreenChangeNotifyMask| RRCrtcChangeNotifyMask| diff --git a/randr/rrmode.c b/randr/rrmode.c index 2fa440385..2a1007662 100644 --- a/randr/rrmode.c +++ b/randr/rrmode.c @@ -332,12 +332,8 @@ ProcRRDestroyMode (ClientPtr client) RRModePtr mode; REQUEST_SIZE_MATCH(xRRDestroyModeReq); - mode = LookupIDByType (stuff->mode, RRModeType); - if (!mode) - { - client->errorValue = stuff->mode; - return RRErrorBase + BadRRMode; - } + VERIFY_RR_MODE(stuff->mode, mode, DixDestroyAccess); + if (!mode->userScreen) return BadMatch; if (mode->refcnt > 1) @@ -354,20 +350,8 @@ ProcRRAddOutputMode (ClientPtr client) RROutputPtr output; REQUEST_SIZE_MATCH(xRRAddOutputModeReq); - output = LookupOutput(client, stuff->output, DixReadAccess); - - if (!output) - { - client->errorValue = stuff->output; - return RRErrorBase + BadRROutput; - } - - mode = LookupIDByType (stuff->mode, RRModeType); - if (!mode) - { - client->errorValue = stuff->mode; - return RRErrorBase + BadRRMode; - } + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); + VERIFY_RR_MODE(stuff->mode, mode, DixUseAccess); return RROutputAddUserMode (output, mode); } @@ -380,20 +364,8 @@ ProcRRDeleteOutputMode (ClientPtr client) RROutputPtr output; REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq); - output = LookupOutput(client, stuff->output, DixReadAccess); - - if (!output) - { - client->errorValue = stuff->output; - return RRErrorBase + BadRROutput; - } - - mode = LookupIDByType (stuff->mode, RRModeType); - if (!mode) - { - client->errorValue = stuff->mode; - return RRErrorBase + BadRRMode; - } + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); + VERIFY_RR_MODE(stuff->mode, mode, DixUseAccess); return RROutputDeleteUserMode (output, mode); } diff --git a/randr/rroutput.c b/randr/rroutput.c index 0ae7873e2..127497eb8 100644 --- a/randr/rroutput.c +++ b/randr/rroutput.c @@ -448,13 +448,7 @@ ProcRRGetOutputInfo (ClientPtr client) int i, n; REQUEST_SIZE_MATCH(xRRGetOutputInfoReq); - output = LookupOutput(client, stuff->output, DixReadAccess); - - if (!output) - { - client->errorValue = stuff->output; - return RRErrorBase + BadRROutput; - } + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); pScreen = output->pScreen; pScrPriv = rrGetScrPriv(pScreen); @@ -569,24 +563,16 @@ ProcRRSetOutputPrimary(ClientPtr client) RROutputPtr output = NULL; WindowPtr pWin; rrScrPrivPtr pScrPriv; + int rc; REQUEST_SIZE_MATCH(xRRSetOutputPrimaryReq); - pWin = SecurityLookupIDByType(client, stuff->window, RT_WINDOW, - DixReadAccess); - - if (!pWin) { - client->errorValue = stuff->window; - return BadWindow; - } + rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); + if (rc != Success) + return rc; if (stuff->output) { - output = LookupOutput(client, stuff->output, DixReadAccess); - - if (!output) { - client->errorValue = stuff->output; - return RRErrorBase + BadRROutput; - } + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); if (output->pScreen != pWin->drawable.pScreen) { client->errorValue = stuff->window; @@ -608,16 +594,13 @@ ProcRRGetOutputPrimary(ClientPtr client) rrScrPrivPtr pScrPriv; xRRGetOutputPrimaryReply rep; RROutputPtr primary = NULL; + int rc; REQUEST_SIZE_MATCH(xRRGetOutputPrimaryReq); - pWin = SecurityLookupIDByType(client, stuff->window, RT_WINDOW, - DixReadAccess); - - if (!pWin) { - client->errorValue = stuff->window; - return BadWindow; - } + rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); + if (rc != Success) + return rc; pScrPriv = rrGetScrPriv(pWin->drawable.pScreen); if (pScrPriv) diff --git a/randr/rrproperty.c b/randr/rrproperty.c index 12923a2c7..775d9e29f 100644 --- a/randr/rrproperty.c +++ b/randr/rrproperty.c @@ -31,7 +31,8 @@ DeliverPropertyEvent(WindowPtr pWin, void *value) RREventPtr *pHead, pRREvent; ClientPtr client; - pHead = LookupIDByType(pWin->drawable.id, RREventType); + dixLookupResourceByType((pointer *)&pHead, pWin->drawable.id, + RREventType, serverClient, DixReadAccess); if (!pHead) return WT_WALKCHILDREN; @@ -419,10 +420,7 @@ ProcRRListOutputProperties (ClientPtr client) REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq); - output = LookupOutput (client, stuff->output, DixReadAccess); - - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); for (prop = output->properties; prop; prop = prop->next) numProps++; @@ -466,10 +464,7 @@ ProcRRQueryOutputProperty (ClientPtr client) REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq); - output = LookupOutput (client, stuff->output, DixReadAccess); - - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); prop = RRQueryOutputProperty (output, stuff->property); if (!prop) @@ -513,10 +508,7 @@ ProcRRConfigureOutputProperty (ClientPtr client) REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq); - output = LookupOutput (client, stuff->output, DixReadAccess); - - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); num_valid = stuff->length - (sizeof (xRRConfigureOutputPropertyReq) >> 2); return RRConfigureOutputProperty (output, stuff->property, @@ -558,9 +550,7 @@ ProcRRChangeOutputProperty (ClientPtr client) totalSize = len * sizeInBytes; REQUEST_FIXED_SIZE(xRRChangeOutputPropertyReq, totalSize); - output = LookupOutput (client, stuff->output, DixWriteAccess); - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); if (!ValidAtom(stuff->property)) { @@ -590,9 +580,7 @@ ProcRRDeleteOutputProperty (ClientPtr client) REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq); UpdateCurrentTime(); - output = LookupOutput (client, stuff->output, DixWriteAccess); - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); if (!ValidAtom(stuff->property)) { @@ -619,11 +607,8 @@ ProcRRGetOutputProperty (ClientPtr client) REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq); if (stuff->delete) UpdateCurrentTime(); - output = LookupOutput (client, stuff->output, - stuff->delete ? DixWriteAccess : - DixReadAccess); - if (!output) - return RRErrorBase + BadRROutput; + VERIFY_RR_OUTPUT(stuff->output, output, + stuff->delete ? DixWriteAccess : DixReadAccess); if (!ValidAtom(stuff->property)) { diff --git a/record/record.c b/record/record.c index f97626f73..cb7a6276c 100644 --- a/record/record.c +++ b/record/record.c @@ -127,11 +127,10 @@ static int numEnabledRCAPs; * returns an error. */ #define VERIFY_CONTEXT(_pContext, _contextid, _client) { \ - (_pContext) = (RecordContextPtr)LookupIDByType((_contextid), RTContext); \ - if (!(_pContext)) { \ - (_client)->errorValue = (_contextid); \ - return RecordErrorBase + XRecordBadContext; \ - } \ + int rc = dixLookupResourceByType((pointer *)&(_pContext), _contextid, \ + RTContext, _client, DixUseAccess); \ + if (rc != Success) \ + return (rc == BadValue) ? RecordErrorBase + XRecordBadContext : rc; \ } static int RecordDeleteContext( diff --git a/render/picture.c b/render/picture.c index 462125f05..5f86c7ce1 100644 --- a/render/picture.c +++ b/render/picture.c @@ -410,8 +410,9 @@ PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format) return TRUE; if (format->index.vid == pScreen->rootVisual) { - format->index.pColormap = - (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP); + dixLookupResourceByType((pointer *)&format->index.pColormap, + pScreen->defColormap, RT_COLORMAP, + serverClient, DixGetAttrAccess); } else { VisualPtr pVisual = PictureFindVisual(pScreen, format->index.vid); if (CreateColormap(FakeClientID (0), pScreen, pVisual, diff --git a/render/picturestr.h b/render/picturestr.h index 194db11a3..6a1cc061c 100644 --- a/render/picturestr.h +++ b/render/picturestr.h @@ -409,11 +409,10 @@ extern _X_EXPORT RESTYPE GlyphSetType; #define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p) #define VERIFY_PICTURE(pPicture, pid, client, mode, err) {\ - pPicture = SecurityLookupIDByType(client, pid, PictureType, mode);\ - if (!pPicture) { \ - client->errorValue = pid; \ - return err; \ - } \ + int rc = dixLookupResourceByType((pointer)&(pPicture), pid,\ + PictureType, client, mode);\ + if (rc != Success)\ + return (rc == BadValue) ? err : rc;\ } #define VERIFY_ALPHA(pPicture, pid, client, mode, err) {\ diff --git a/render/render.c b/render/render.c index 270b8fb29..8487b60de 100644 --- a/render/render.c +++ b/render/render.c @@ -509,7 +509,7 @@ static int ProcRenderQueryPictIndexValues (ClientPtr client) { PictFormatPtr pFormat; - int num; + int rc, num; int rlength; int i, n; REQUEST(xRenderQueryPictIndexValuesReq); @@ -518,16 +518,11 @@ ProcRenderQueryPictIndexValues (ClientPtr client) REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq); - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - DixReadAccess); + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->format, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; - if (!pFormat) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } if (pFormat->type != PictTypeIndexed) { client->errorValue = stuff->format; @@ -592,15 +587,11 @@ ProcRenderCreatePicture (ClientPtr client) if (rc != Success) return rc; - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->format, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; + if (pFormat->depth != pDrawable->depth) return BadMatch; len = client->req_len - (sizeof(xRenderCreatePictureReq) >> 2); @@ -740,7 +731,7 @@ ProcRenderScale (ClientPtr client) static int ProcRenderTrapezoids (ClientPtr client) { - int ntraps; + int rc, ntraps; PicturePtr pSrc, pDst; PictFormatPtr pFormat; REQUEST(xRenderTrapezoidsReq); @@ -761,15 +752,10 @@ ProcRenderTrapezoids (ClientPtr client) return BadMatch; if (stuff->maskFormat) { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->maskFormat, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; } else pFormat = 0; @@ -787,7 +773,7 @@ ProcRenderTrapezoids (ClientPtr client) static int ProcRenderTriangles (ClientPtr client) { - int ntris; + int rc, ntris; PicturePtr pSrc, pDst; PictFormatPtr pFormat; REQUEST(xRenderTrianglesReq); @@ -808,15 +794,10 @@ ProcRenderTriangles (ClientPtr client) return BadMatch; if (stuff->maskFormat) { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->maskFormat, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; } else pFormat = 0; @@ -834,7 +815,7 @@ ProcRenderTriangles (ClientPtr client) static int ProcRenderTriStrip (ClientPtr client) { - int npoints; + int rc, npoints; PicturePtr pSrc, pDst; PictFormatPtr pFormat; REQUEST(xRenderTrianglesReq); @@ -855,15 +836,10 @@ ProcRenderTriStrip (ClientPtr client) return BadMatch; if (stuff->maskFormat) { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->maskFormat, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; } else pFormat = 0; @@ -881,7 +857,7 @@ ProcRenderTriStrip (ClientPtr client) static int ProcRenderTriFan (ClientPtr client) { - int npoints; + int rc, npoints; PicturePtr pSrc, pDst; PictFormatPtr pFormat; REQUEST(xRenderTrianglesReq); @@ -902,15 +878,10 @@ ProcRenderTriFan (ClientPtr client) return BadMatch; if (stuff->maskFormat) { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->maskFormat, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; } else pFormat = 0; @@ -954,15 +925,11 @@ ProcRenderCreateGlyphSet (ClientPtr client) REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq); LEGAL_NEW_RESOURCE(stuff->gsid, client); - format = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - DixReadAccess); - if (!format) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&format, stuff->format, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; + switch (format->depth) { case 1: f = GlyphFormat1; @@ -1300,7 +1267,7 @@ ProcRenderCompositeGlyphs (ClientPtr client) int nlist; int space; int size; - int n; + int rc, n; REQUEST(xRenderCompositeGlyphsReq); @@ -1327,28 +1294,18 @@ ProcRenderCompositeGlyphs (ClientPtr client) return BadMatch; if (stuff->maskFormat) { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - DixReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } + rc = dixLookupResourceByType((pointer *)&pFormat, stuff->maskFormat, + PictFormatType, client, DixReadAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadPictFormat : rc; } else pFormat = 0; - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->glyphset, - GlyphSetType, - DixUseAccess); - if (!glyphSet) - { - client->errorValue = stuff->glyphset; - return RenderErrBase + BadGlyphSet; - } + rc = dixLookupResourceByType((pointer *)&glyphSet, stuff->glyphset, + GlyphSetType, client, DixUseAccess); + if (rc != Success) + return (rc == BadValue) ? RenderErrBase + BadGlyphSet : rc; buffer = (CARD8 *) (stuff + 1); end = (CARD8 *) stuff + (client->req_len << 2); @@ -1402,18 +1359,16 @@ ProcRenderCompositeGlyphs (ClientPtr client) if (buffer + sizeof (GlyphSet) < end) { memcpy(&gs, buffer, sizeof(GlyphSet)); - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - gs, - GlyphSetType, - DixUseAccess); - if (!glyphSet) + rc = dixLookupResourceByType((pointer *)&glyphSet, gs, + GlyphSetType, client, + DixUseAccess); + if (rc != Success) { - client->errorValue = gs; if (glyphsBase != glyphsLocal) xfree (glyphsBase); if (listsBase != listsLocal) xfree (listsBase); - return RenderErrBase + BadGlyphSet; + return (rc == BadValue) ? RenderErrBase + BadGlyphSet : rc; } } buffer += 4; @@ -1902,13 +1857,12 @@ ProcRenderCreateAnimCursor (ClientPtr client) elt = (xAnimCursorElt *) (stuff + 1); for (i = 0; i < ncursor; i++) { - cursors[i] = (CursorPtr)SecurityLookupIDByType(client, elt->cursor, - RT_CURSOR, DixReadAccess); - if (!cursors[i]) + ret = dixLookupResourceByType((pointer *)(cursors + 1), elt->cursor, + RT_CURSOR, client, DixReadAccess); + if (ret != Success) { xfree (cursors); - client->errorValue = elt->cursor; - return BadCursor; + return (ret == BadValue) ? BadCursor : ret; } deltas[i] = elt->delay; elt++; @@ -2689,11 +2643,10 @@ SProcRenderDispatch (ClientPtr client) #include "panoramiXsrv.h" #define VERIFY_XIN_PICTURE(pPicture, pid, client, mode, err) {\ - pPicture = SecurityLookupIDByType(client, pid, XRT_PICTURE, mode);\ - if (!pPicture) { \ - client->errorValue = pid; \ - return err; \ - } \ + int rc = dixLookupResourceByType((pointer *)&(pPicture), pid,\ + XRT_PICTURE, client, mode);\ + if (rc != Success)\ + return (rc == BadValue) ? err : rc;\ } #define VERIFY_XIN_ALPHA(pPicture, pid, client, mode, err) {\ @@ -2713,12 +2666,13 @@ PanoramiXRenderCreatePicture (ClientPtr client) { REQUEST(xRenderCreatePictureReq); PanoramiXRes *refDraw, *newPict; - int result = Success, j; + int result, j; REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); - if(!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess))) - return BadDrawable; + result = dixLookupResourceByClass((pointer *)&refDraw, stuff->drawable, + XRC_DRAWABLE, client, DixWriteAccess); + if (result != Success) + return (result == BadValue) ? BadDrawable : result; if(!(newPict = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)))) return BadAlloc; newPict->type = XRT_PICTURE; diff --git a/xfixes/cursor.c b/xfixes/cursor.c index eb83cfeb7..6fa2dff8e 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -203,6 +203,8 @@ XFixesSelectCursorInput (ClientPtr pClient, CARD32 eventMask) { CursorEventPtr *prev, e; + pointer val; + int rc; for (prev = &cursorEvents; (e = *prev); prev = &e->next) { @@ -235,7 +237,10 @@ XFixesSelectCursorInput (ClientPtr pClient, * Add a resource hanging from the window to * catch window destroy */ - if (!LookupIDByType(pWindow->drawable.id, CursorWindowType)) + rc = dixLookupResourceByType( &val, pWindow->drawable.id, + CursorWindowType, serverClient, + DixGetAttrAccess); + if (rc != Success) if (!AddResource (pWindow->drawable.id, CursorWindowType, (pointer) pWindow)) { diff --git a/xfixes/select.c b/xfixes/select.c index 795b8bd4c..a5811bdc0 100644 --- a/xfixes/select.c +++ b/xfixes/select.c @@ -133,6 +133,7 @@ XFixesSelectSelectionInput (ClientPtr pClient, WindowPtr pWindow, CARD32 eventMask) { + pointer val; int rc; SelectionEventPtr *prev, e; @@ -173,7 +174,10 @@ XFixesSelectSelectionInput (ClientPtr pClient, * Add a resource hanging from the window to * catch window destroy */ - if (!LookupIDByType(pWindow->drawable.id, SelectionWindowType)) + rc = dixLookupResourceByType (&val, pWindow->drawable.id, + SelectionWindowType, serverClient, + DixGetAttrAccess); + if (rc != Success) if (!AddResource (pWindow->drawable.id, SelectionWindowType, (pointer) pWindow)) { -- cgit v1.2.3 From 0d9d3f3e361f769822caedccf4c2a58cc9930ecc Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 27 Apr 2009 15:11:10 -0700 Subject: DRI2: Force allocation of real-front buffer for non-windows as well For redirected rendering we end up with pixmaps (which the app thinks are windows) that are double buffered. Signed-off-by: Ian Romanick Tested-by: Pierre Willenbrock --- hw/xfree86/dri2/dri2.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 9ded048eb..1d49d7c65 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -206,18 +206,21 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height, * 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) { - if (attachment == DRI2BufferBackLeft) { - need_real_front++; - front_format = format; - } + if (attachment == DRI2BufferBackLeft) { + need_real_front++; + front_format = format; + } - if (attachment == DRI2BufferFrontLeft) { - need_real_front--; + if (attachment == DRI2BufferFrontLeft) { + need_real_front--; + front_format = format; + + if (pDraw->type == DRAWABLE_WINDOW) { need_fake_front++; - front_format = format; } + } + if (pDraw->type == DRAWABLE_WINDOW) { if (attachment == DRI2BufferFakeFrontLeft) { need_fake_front--; have_fake_front = 1; -- cgit v1.2.3 From 557dbadf3be273255e8fdb12d9321f4e88bf2b65 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sat, 2 May 2009 00:26:18 -0700 Subject: XkbSetNamedIndicator should ignore SD's without LED's When ProcXkbSetNamedIndicator is called on a core device, and we walk the slaves to set the LED's on each of them, ignore any slaves that do not have either a KbdFeedbackCtrl or LedCtrl structure. (This is much more critical in xserver-1.5-branch, where we walk *all* devices, not just the slaves of the specified master, and thus return failure when setting an LED on the Core Keyboard and hit a xf86-input-mouse device with no LED's to set.) Signed-off-by: Alan Coopersmith Acked-by: Peter Hutterer --- xkb/xkb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xkb/xkb.c b/xkb/xkb.c index e7c9a312d..b2fe11cae 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -3433,6 +3433,7 @@ ProcXkbSetNamedIndicator(ClientPtr client) for (other = inputInfo.devices; other; other = other->next) { if ((other != dev) && !other->isMaster && (other->u.master == dev) && + (other->kbdfeed || other->leds) && (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) { rc = _XkbCreateIndicatorMap(other, stuff->indicator, @@ -3456,6 +3457,7 @@ ProcXkbSetNamedIndicator(ClientPtr client) for (other = inputInfo.devices; other; other = other->next) { if ((other != dev) && !other->isMaster && (other->u.master == dev) && + (other->kbdfeed || other->leds) && (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) { _XkbSetNamedIndicator(client, other, stuff); -- cgit v1.2.3 From 7d85169c7ab1d05c21fdbb2877ffd79f344dbb6b Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 4 May 2009 10:14:43 +0200 Subject: Fix typo in ProcRenderCreateAnimCursor. --- render/render.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render/render.c b/render/render.c index 8487b60de..5622994e3 100644 --- a/render/render.c +++ b/render/render.c @@ -1857,7 +1857,7 @@ ProcRenderCreateAnimCursor (ClientPtr client) elt = (xAnimCursorElt *) (stuff + 1); for (i = 0; i < ncursor; i++) { - ret = dixLookupResourceByType((pointer *)(cursors + 1), elt->cursor, + ret = dixLookupResourceByType((pointer *)(cursors + i), elt->cursor, RT_CURSOR, client, DixReadAccess); if (ret != Success) { -- cgit v1.2.3 From 94648bb797d94b025746c60679c584e5be2fae28 Mon Sep 17 00:00:00 2001 From: Jesse Barnes Date: Mon, 4 May 2009 15:38:22 -0700 Subject: Don't prepare outputs & crtcs if set_mode_major is present A driver with this hook will take care of preparing the outputs & crtcs, so calling the prepare functions will just cause unnecessary flicker. Fixes bug #21077 --- hw/xfree86/modes/xf86Crtc.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index c6eed3377..1b241cd33 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -2549,18 +2549,23 @@ Bool xf86SetDesiredModes (ScrnInfoPtr scrn) { xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + xf86CrtcPtr crtc = config->crtc[0]; int c; - xf86PrepareOutputs(scrn); - xf86PrepareCrtcs(scrn); + /* A driver with this hook will take care of this */ + if (!crtc->funcs->set_mode_major) { + xf86PrepareOutputs(scrn); + xf86PrepareCrtcs(scrn); + } for (c = 0; c < config->num_crtc; c++) { - xf86CrtcPtr crtc = config->crtc[c]; xf86OutputPtr output = NULL; int o; RRTransformPtr transform; + crtc = config->crtc[c]; + /* Skip disabled CRTCs */ if (!crtc->enabled) continue; -- cgit v1.2.3 From f1bed0959e803784af142a0f45177ee3b675d78a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 1 May 2009 15:15:04 +1000 Subject: Xext: fix core Xtest button presses, don't call PickPointer. We already did the device selection before, so dev should be the XTest virtual pointer. Signed-off-by: Peter Hutterer --- Xext/xtest.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Xext/xtest.c b/Xext/xtest.c index d21eedcde..8aca6a0f7 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -376,12 +376,6 @@ ProcXTestFakeInput(ClientPtr client) break; case ButtonPress: case ButtonRelease: - if (!extension) - { - dev = PickPointer(client); - if (dev->u.lastSlave) - dev = dev->u.lastSlave; - } if (!ev->u.u.detail || ev->u.u.detail > dev->button->numButtons) { client->errorValue = ev->u.u.detail; -- cgit v1.2.3 From 14d5471981151b27678de826daa078977217477a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 1 May 2009 15:22:37 +1000 Subject: Xext: return BadDevice from XTest if we don't have keys/buttons/valuators. BadDevice is an XI error, but this cannot happen for core XTest fake input anyway since the device will be the matching virtual XTest slave device. Signed-off-by: Peter Hutterer --- Xext/xtest.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Xext/xtest.c b/Xext/xtest.c index 8aca6a0f7..cb32c2858 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -49,6 +49,7 @@ #include #include #include +#include "exglobals.h" #include "modinit.h" @@ -342,6 +343,9 @@ ProcXTestFakeInput(ClientPtr client) { case KeyPress: case KeyRelease: + if (!dev->key) + return BadDevice; + if (ev->u.u.detail < dev->key->xkbInfo->desc->min_key_code || ev->u.u.detail > dev->key->xkbInfo->desc->max_key_code) { @@ -350,6 +354,9 @@ ProcXTestFakeInput(ClientPtr client) } break; case MotionNotify: + if (!dev->valuator) + return BadDevice; + /* broken lib, XI events have root uninitialized */ if (extension || ev->u.keyButtonPointer.root == None) root = GetCurrentRootWindow(dev); @@ -376,6 +383,9 @@ ProcXTestFakeInput(ClientPtr client) break; case ButtonPress: case ButtonRelease: + if (!dev->button) + return BadDevice; + if (!ev->u.u.detail || ev->u.u.detail > dev->button->numButtons) { client->errorValue = ev->u.u.detail; -- cgit v1.2.3 From a38d33f6ac765bc5a3296b325e2c9b4a6a10ebf1 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 1 May 2009 15:24:02 +1000 Subject: Xext: shut up compiler warnings in xtest.c Signed-off-by: Peter Hutterer --- Xext/xtest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Xext/xtest.c b/Xext/xtest.c index cb32c2858..96380b769 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -50,6 +50,7 @@ #include #include #include "exglobals.h" +#include "mipointer.h" #include "modinit.h" @@ -162,7 +163,6 @@ ProcXTestFakeInput(ClientPtr client) int i; int base = 0; int flags = 0; - DeviceIntPtr xtstdevice; nev = (stuff->length << 2) - sizeof(xReq); if ((nev % sizeof(xEvent)) || !nev) @@ -415,7 +415,7 @@ ProcXTestFakeInput(ClientPtr client) } for (i = 0; i < nevents; i++) - mieqProcessDeviceEvent(dev, (events+i)->event, NULL); + mieqProcessDeviceEvent(dev, (InternalEvent*)(events+i)->event, NULL); miPointerUpdateSprite(dev); return client->noClientException; -- cgit v1.2.3 From 7ecedb0f2ee5b53513205d1f0aa381451893b9c5 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 1 May 2009 14:35:12 +1000 Subject: include: up the number of max. input devices to 40. With the Xtest virtual slave devices we have 4 devices for each MD pointer/keyboard pair, plus the AllDevices and AllMasterDevices reserved deviceids. It's quite easy to hit the current limit. Signed-off-by: Peter Hutterer --- include/misc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/misc.h b/include/misc.h index 6a920cc9f..61dd9474c 100644 --- a/include/misc.h +++ b/include/misc.h @@ -86,7 +86,7 @@ OF THIS SOFTWARE. #define MAXCLIENTS 256 #define MAXEXTENSIONS 128 #define MAXFORMATS 8 -#define MAXDEVICES 20 /* input devices */ +#define MAXDEVICES 40 /* input devices */ #define EXTENSION_EVENT_BASE 64 #define EXTENSION_BASE 128 -- cgit v1.2.3 From 749cae82204f347248c815b1068ffcae9825fe70 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 30 Apr 2009 14:58:00 +1000 Subject: mi: don't crash if we're trying to update the pointer for a keyboard. If a device doesn't have a pointer, just return. Signed-off-by: Peter Hutterer --- mi/mipointer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mi/mipointer.c b/mi/mipointer.c index 3d34481ef..1c61b57a9 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -367,6 +367,9 @@ miPointerUpdateSprite (DeviceIntPtr pDev) pPointer = MIPOINTER(pDev); + if (!pPointer) + return; + pScreen = pPointer->pScreen; if (!pScreen) return; -- cgit v1.2.3 From 1b1b20d6e3e696e4437a9ef56128cde70a485f66 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 5 May 2009 13:47:55 +1000 Subject: Change glib require for tests to auto. Signed-off-by: Peter Hutterer --- configure.ac | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 3fc4dd405..daddd094a 100644 --- a/configure.ac +++ b/configure.ac @@ -440,8 +440,8 @@ AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [Enable debugging (default: disabled)]), [DEBUGGING=$enableval], [DEBUGGING=no]) AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], - [Enable unit-tests (default: enabled)]), - [UNITTESTS=$enableval], [UNITTESTS=yes]) + [Enable unit-tests (default: auto)]), + [UNITTESTS=$enableval], [UNITTESTS=auto]) AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]), [INT10="$withval"], [INT10="$DEFAULT_INT10"]) @@ -1144,6 +1144,9 @@ if test "x$DEBUGGING" = xyes; then fi 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 AC_DEFINE(UNITTESTS, 1, [Enable unit tests]) PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.16]) -- cgit v1.2.3 From 35fce4e5c7fa34f98b3e4010c6cb09ce38a9205c Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Thu, 30 Apr 2009 12:58:48 +0200 Subject: dix: fix warning in pointer acceleration newer gcc's warn against how this cast is done (though it eludes me why), and lrintf() is also faster especially on insane processors like the P4 (http://www.mega-nerd.com/FPcast). Signed-off-by: Peter Hutterer --- dix/ptrveloc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index 99efc794c..0a9a22ec2 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -994,14 +994,20 @@ acceleratePointerPredictable( if (dx) { tmp = mult * fdx + pDev->last.remainder[0]; - *px = (int)roundf(tmp); + /* Since it may not be apparent: lrintf() does not offer + * strong statements about rounding; however because we + * process each axis conditionally, there's no danger + * of a toggling remainder. Its lack of guarantees hopefully + * makes it faster on the average target. */ + *px = lrintf(tmp); pDev->last.remainder[0] = tmp - (float)*px; } if (dy) { tmp = mult * fdy + pDev->last.remainder[1]; - *py = (int)roundf(tmp); + *py = lrintf(tmp); pDev->last.remainder[1] = tmp - (float)*py; } + DebugAccelF("pos (%i | %i) remainders x: %.3f y: %.3f delta x:%.3f y:%.3f\n", *px, *py, pDev->last.remainder[0], pDev->last.remainder[1], fdx, fdy); } } } -- cgit v1.2.3 From 9d1597cbefea6a5e7959f2099c46f1a284def7ad Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Thu, 30 Apr 2009 13:01:17 +0200 Subject: dix: remove superfluous includes from ptrveloc.c Signed-off-by: Peter Hutterer --- dix/ptrveloc.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index 0a9a22ec2..7732e9569 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -28,11 +28,8 @@ #include #include -#include #include #include -#include -#include #include -- cgit v1.2.3 From 3fc6fcfb267888d65a22ed7c3eda175a2530a3d5 Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Wed, 6 May 2009 10:39:16 +0200 Subject: dix: add 'none' pointer acceleration profile with number -1 This is a shorthand for disabling acceleration, while retaining the possiblity to use constant deceleration. If constant deceleration is also unused, it will optimize motion processing. Other possiblities to deactivate acceleration were quite hidden, and didn't always work as expected. E.g. xset m 1 1 would retain adaptive deceleration, while xset m 1 0 would not (in the default profile). Also removes the 'reserved' profile; it was unused and it's trivial to add new ones anyway. Signed-off-by: Peter Hutterer --- dix/ptrveloc.c | 36 ++++++++++++++++++++++++++++-------- include/ptrveloc.h | 7 +++---- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index 7732e9569..2907d40a8 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -77,9 +77,12 @@ GetAccelerationProfile(DeviceVelocityPtr s, int profile_num); #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 */ @@ -108,7 +111,7 @@ InitVelocityData(DeviceVelocityPtr s) static void FreeVelocityData(DeviceVelocityPtr s){ 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 GetAccelerationProfile( DeviceVelocityPtr s, @@ -844,8 +857,8 @@ GetAccelerationProfile( return PowerProfile; case AccelProfileLinear: return LinearProfile; - case AccelProfileReserved: - /* reserved for future use, e.g. a user-defined profile */ + case AccelProfileNone: + return NoProfile; default: return NULL; } @@ -856,8 +869,10 @@ GetAccelerationProfile( * Intended to make profiles exchangeable at runtime. * 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 - * would be a good place, since FreeVelocityData() also calls this with -1. - * returns FALSE (0) if profile number is unavailable. + * would be a good place, since FreeVelocityData() also calls this with + * PROFILE_UNINITIALIZE. + * + * returns FALSE if profile number is unavailable, TRUE otherwise. */ int SetAccelerationProfile( @@ -867,7 +882,7 @@ SetAccelerationProfile( PointerAccelerationProfileFunc profile; profile = GetAccelerationProfile(s, profile_num); - if(profile == NULL && profile_num != -1) + if(profile == NULL && profile_num != PROFILE_UNINITIALIZE) return FALSE; if(s->profile_private != NULL){ @@ -955,6 +970,11 @@ acceleratePointerPredictable( if (!num_valuators || !valuators || !velocitydata) 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) { dx = valuators[0]; px = &valuators[0]; @@ -994,7 +1014,7 @@ acceleratePointerPredictable( /* Since it may not be apparent: lrintf() does not offer * strong statements about rounding; however because we * 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. */ *px = lrintf(tmp); pDev->last.remainder[0] = tmp - (float)*px; diff --git a/include/ptrveloc.h b/include/ptrveloc.h index 6ef8c754e..83d188c54 100644 --- a/include/ptrveloc.h +++ b/include/ptrveloc.h @@ -27,9 +27,9 @@ #include /* DeviceIntPtr */ -/* constants for acceleration profiles; - * see */ +/* constants for acceleration profiles */ +#define AccelProfileNone -1 #define AccelProfileClassic 0 #define AccelProfileDeviceSpecific 1 #define AccelProfilePolynomial 2 @@ -37,8 +37,7 @@ #define AccelProfileSimple 4 #define AccelProfilePower 5 #define AccelProfileLinear 6 -#define AccelProfileReserved 7 -#define AccelProfileLAST AccelProfileReserved +#define AccelProfileLAST AccelProfileLinear /* fwd */ struct _DeviceVelocityRec; -- cgit v1.2.3 From 50cc8adafca4ba3838d468278d6eb8a4692d2488 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 6 May 2009 16:55:32 +1000 Subject: Xi: don't double-swap the XListDeviceProperties reply. Signed-off-by: Peter Hutterer --- Xi/xiproperty.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index d633f5141..8c6d53a5a 100644 --- a/Xi/xiproperty.c +++ b/Xi/xiproperty.c @@ -706,13 +706,6 @@ ProcXListDeviceProperties (ClientPtr client) rep.length = (numProps * sizeof(Atom)) >> 2; rep.sequenceNumber = client->sequence; rep.nAtoms = numProps; - if (client->swapped) - { - int n; - swaps (&rep.sequenceNumber, n); - swapl (&rep.length, n); - swaps (&rep.nAtoms, n); - } temppAtoms = pAtoms; for (prop = dev->properties.properties; prop; prop = prop->next) *temppAtoms++ = prop->propertyName; -- cgit v1.2.3 From 7ab5e9b97c300bba793a23fa13506b0c77c50ddf Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 6 May 2009 12:07:07 +1000 Subject: xfree86: fix xf86PostMotionEventP type checking We only put internal events into the queue now, so let's check for ET_Motion rather than the MotionNotify. Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Xinput.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index a035fca7f..8a718618f 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -743,7 +743,7 @@ xf86PostMotionEventP(DeviceIntPtr device, int i = 0, nevents = 0; int dx = 0, dy = 0; Bool drag = xf86SendDragEvents(device); - xEvent *xE = NULL; + DeviceEvent *event; int index; int flags = 0; @@ -789,10 +789,11 @@ xf86PostMotionEventP(DeviceIntPtr device, valuators); for (i = 0; i < nevents; i++) { - xE = (xf86Events + i)->event; + event = (DeviceEvent*)((xf86Events + i)->event); /* Don't post core motion events for devices not registered to send * drag events. */ - if (xE->u.u.type != MotionNotify || drag) { + if (event->header == ET_Internal && + (event->type != ET_Motion || drag)) { mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event)); } } -- cgit v1.2.3 From 8b583ca2b21155359c6255f406c96599b277c762 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 6 May 2009 22:25:28 +1000 Subject: Xi: fix copy/paste error causing sizeof against wrong struct. This wrong check may cause BadLength to be returned to the client even if the length is correct. Signed-off-by: Peter Hutterer --- Xi/xiproperty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index 8c6d53a5a..7e20e0320 100644 --- a/Xi/xiproperty.c +++ b/Xi/xiproperty.c @@ -747,7 +747,7 @@ ProcXChangeDeviceProperty (ClientPtr client) return BadValue; } len = stuff->nUnits; - if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2)) + if (len > ((0xffffffff - sizeof(xChangeDevicePropertyReq)) >> 2)) return BadLength; sizeInBytes = format>>3; totalSize = len * sizeInBytes; -- cgit v1.2.3 From 0e31d3906deaee5d9ada66e538b9e93574a4d610 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 5 May 2009 21:07:07 +1000 Subject: xkb: remove some now-useless XFUNCPROTOBEGIN We bring them back if we start rewriting the server in C++, promise. Signed-off-by: Peter Hutterer --- include/xkbsrv.h | 4 ---- xkb/xkbgeom.h | 4 ---- 2 files changed, 8 deletions(-) diff --git a/include/xkbsrv.h b/include/xkbsrv.h index df3308534..74d5f290c 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -334,8 +334,6 @@ extern _X_EXPORT int DeviceEnterNotify,DeviceLeaveNotify; #define False FALSE #endif -_XFUNCPROTOBEGIN - extern _X_EXPORT void XkbUseMsg( void ); @@ -1000,8 +998,6 @@ extern _X_EXPORT XkbDescPtr XkbCompileKeymap( XkbRMLVOSet * /* rmlvo */ ); -_XFUNCPROTOEND - #define XkbAtomGetString(s) NameForAtom(s) #endif /* _XKBSRV_H_ */ diff --git a/xkb/xkbgeom.h b/xkb/xkbgeom.h index 173affee9..fe4da3806 100644 --- a/xkb/xkbgeom.h +++ b/xkb/xkbgeom.h @@ -311,8 +311,6 @@ typedef struct _XkbGeometrySizes { unsigned short num_key_aliases; } XkbGeometrySizesRec,*XkbGeometrySizesPtr; -_XFUNCPROTOBEGIN - extern XkbPropertyPtr XkbAddGeomProperty( XkbGeometryPtr /* geom */, @@ -630,6 +628,4 @@ XkbFindOverlayForKey( char * /* under */ ); -_XFUNCPROTOEND - #endif /* _XKBGEOM_H_ */ -- cgit v1.2.3 From 5cf70183812541b33a6e83c7e1e3bc6198730cbe Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 5 May 2009 21:00:31 +1000 Subject: xkb: remove _XkbAlloc, _XkbCalloc, _XkbRealloc and _XkbFree We all agree that wrapping is fun, but seriously. One of these days someone will get hurt. Signed-off-by: Peter Hutterer --- include/xkbsrv.h | 4 ---- xkb/XKBAlloc.c | 28 +++++++++++------------ xkb/XKBGAlloc.c | 40 ++++++++++++++++----------------- xkb/XKBMAlloc.c | 68 ++++++++++++++++++++++++++++---------------------------- xkb/XKBMisc.c | 2 +- xkb/maprules.c | 44 ++++++++++++++++++------------------ xkb/xkb.c | 40 ++++++++++++++++----------------- xkb/xkbEvents.c | 4 ++-- xkb/xkbInit.c | 34 ++++++++++++++-------------- xkb/xkbLEDs.c | 6 ++--- xkb/xkmread.c | 6 ++--- 11 files changed, 136 insertions(+), 140 deletions(-) diff --git a/include/xkbsrv.h b/include/xkbsrv.h index 74d5f290c..c3f64916e 100644 --- a/include/xkbsrv.h +++ b/include/xkbsrv.h @@ -301,15 +301,11 @@ extern _X_EXPORT pointer XkbLastRepeatEvent; extern _X_EXPORT CARD32 xkbDebugFlags; -#define _XkbAlloc(s) xalloc((s)) -#define _XkbCalloc(n,s) Xcalloc((n)*(s)) -#define _XkbRealloc(o,s) Xrealloc((o),(s)) #define _XkbTypedAlloc(t) ((t *)xalloc(sizeof(t))) #define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n)*sizeof(t))) #define _XkbTypedRealloc(o,n,t) \ ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t)) #define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t)) -#define _XkbFree(p) Xfree(p) #define _XkbLibError(c,l,d) /* Epoch fail */ #define _XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff))) diff --git a/xkb/XKBAlloc.c b/xkb/XKBAlloc.c index 559a52483..7265d83f2 100644 --- a/xkb/XKBAlloc.c +++ b/xkb/XKBAlloc.c @@ -58,7 +58,7 @@ XkbSymInterpretRec *prev_interpret; compat->sym_interpret= _XkbTypedRealloc(compat->sym_interpret, nSI,XkbSymInterpretRec); if (compat->sym_interpret==NULL) { - _XkbFree(prev_interpret); + xfree(prev_interpret); compat->size_si= compat->num_si= 0; return BadAlloc; } @@ -74,7 +74,7 @@ XkbSymInterpretRec *prev_interpret; if (nSI>0) { compat->sym_interpret= _XkbTypedCalloc(nSI,XkbSymInterpretRec); if (!compat->sym_interpret) { - _XkbFree(compat); + xfree(compat); return BadAlloc; } } @@ -100,12 +100,12 @@ register XkbCompatMapPtr compat; bzero((char *)&compat->groups[0],XkbNumKbdGroups*sizeof(XkbModsRec)); if (which&XkbSymInterpMask) { if ((compat->sym_interpret)&&(compat->size_si>0)) - _XkbFree(compat->sym_interpret); + xfree(compat->sym_interpret); compat->size_si= compat->num_si= 0; compat->sym_interpret= NULL; } if (freeMap) { - _XkbFree(compat); + xfree(compat); xkb->compat= NULL; } return; @@ -161,7 +161,7 @@ XkbNamesPtr names; _XkbClearElems(names->key_aliases,names->num_key_aliases, nTotalAliases-1,XkbKeyAliasRec); } else { - _XkbFree(prev_aliases); + xfree(prev_aliases); } } if (names->key_aliases==NULL) { @@ -183,7 +183,7 @@ XkbNamesPtr names; _XkbClearElems(names->radio_groups,names->num_rg,nTotalRG-1, Atom); } else { - _XkbFree(prev_radio_groups); + xfree(prev_radio_groups); } } if (names->radio_groups==NULL) @@ -211,29 +211,29 @@ XkbNamesPtr names; type= map->types; for (i=0;inum_types;i++,type++) { if (type->level_names!=NULL) { - _XkbFree(type->level_names); + xfree(type->level_names); type->level_names= NULL; } } } } if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) { - _XkbFree(names->keys); + xfree(names->keys); names->keys= NULL; names->num_keys= 0; } if ((which&XkbKeyAliasesMask)&&(names->key_aliases)){ - _XkbFree(names->key_aliases); + xfree(names->key_aliases); names->key_aliases=NULL; names->num_key_aliases=0; } if ((which&XkbRGNamesMask)&&(names->radio_groups)) { - _XkbFree(names->radio_groups); + xfree(names->radio_groups); names->radio_groups= NULL; names->num_rg= 0; } if (freeMap) { - _XkbFree(names); + xfree(names); xkb->names= NULL; } return; @@ -261,7 +261,7 @@ static void XkbFreeControls(XkbDescPtr xkb,unsigned which,Bool freeMap) { if (freeMap && (xkb!=NULL) && (xkb->ctrls!=NULL)) { - _XkbFree(xkb->ctrls); + xfree(xkb->ctrls); xkb->ctrls= NULL; } return; @@ -286,7 +286,7 @@ static void XkbFreeIndicatorMaps(XkbDescPtr xkb) { if ((xkb!=NULL)&&(xkb->indicators!=NULL)) { - _XkbFree(xkb->indicators); + xfree(xkb->indicators); xkb->indicators= NULL; } return; @@ -330,6 +330,6 @@ XkbFreeKeyboard(XkbDescPtr xkb,unsigned which,Bool freeAll) if (which&XkbControlsMask) XkbFreeControls(xkb,XkbAllControlsMask,True); if (freeAll) - _XkbFree(xkb); + xfree(xkb); return; } diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c index 9561a3df8..752b11a94 100644 --- a/xkb/XKBGAlloc.c +++ b/xkb/XKBGAlloc.c @@ -51,7 +51,7 @@ _XkbFreeGeomLeafElems( Bool freeAll, if ((freeAll)||(*elems==NULL)) { *num_inout= *sz_inout= 0; if (*elems!=NULL) { - _XkbFree(*elems); + xfree(*elems); *elems= NULL; } return; @@ -115,7 +115,7 @@ register char *ptr; if (freeAll) { (*num_inout)= (*sz_inout)= 0; if (*elems) { - _XkbFree(*elems); + xfree(*elems); *elems= NULL; } } @@ -138,11 +138,11 @@ _XkbClearProperty(char *prop_in) XkbPropertyPtr prop= (XkbPropertyPtr)prop_in; if (prop->name) { - _XkbFree(prop->name); + xfree(prop->name); prop->name= NULL; } if (prop->value) { - _XkbFree(prop->value); + xfree(prop->value); prop->value= NULL; } return; @@ -184,7 +184,7 @@ _XkbClearColor(char *color_in) XkbColorPtr color= (XkbColorPtr)color_in; if (color->spec) - _XkbFree(color->spec); + xfree(color->spec); return; } @@ -381,11 +381,11 @@ XkbDoodadPtr doodad= (XkbDoodadPtr)doodad_in; case XkbTextDoodad: { if (doodad->text.text!=NULL) { - _XkbFree(doodad->text.text); + xfree(doodad->text.text); doodad->text.text= NULL; } if (doodad->text.font!=NULL) { - _XkbFree(doodad->text.font); + xfree(doodad->text.font); doodad->text.font= NULL; } } @@ -393,7 +393,7 @@ XkbDoodadPtr doodad= (XkbDoodadPtr)doodad_in; case XkbLogoDoodad: { if (doodad->logo.logo_name!=NULL) { - _XkbFree(doodad->logo.logo_name); + xfree(doodad->logo.logo_name); doodad->logo.logo_name= NULL; } } @@ -413,7 +413,7 @@ register XkbDoodadPtr doodad; _XkbClearDoodad((char *)doodad); } if (freeAll) - _XkbFree(doodads); + xfree(doodads); } return; } @@ -442,10 +442,10 @@ XkbFreeGeometry(XkbGeometryPtr geom,unsigned which,Bool freeMap) XkbFreeGeomKeyAliases(geom,0,geom->num_key_aliases,True); if (freeMap) { if (geom->label_font!=NULL) { - _XkbFree(geom->label_font); + xfree(geom->label_font); geom->label_font= NULL; } - _XkbFree(geom); + xfree(geom); } return; } @@ -469,8 +469,8 @@ _XkbGeomAlloc( void ** old, *total= (*num)+num_new; if ((*old)!=NULL) - (*old)= _XkbRealloc((*old),(*total)*sz_elem); - else (*old)= _XkbCalloc((*total),sz_elem); + (*old)= xrealloc((*old),(*total)*sz_elem); + else (*old)= xcalloc((*total),sz_elem); if ((*old)==NULL) { *total= *num= 0; return BadAlloc; @@ -664,8 +664,8 @@ register XkbPropertyPtr prop; for (i=0,prop=geom->properties;inum_properties;i++,prop++) { if ((prop->name)&&(strcmp(name,prop->name)==0)) { if (prop->value) - _XkbFree(prop->value); - prop->value= (char *)_XkbAlloc(strlen(value)+1); + xfree(prop->value); + prop->value= xalloc(strlen(value)+1); if (prop->value) strcpy(prop->value,value); return prop; @@ -676,13 +676,13 @@ register XkbPropertyPtr prop; return NULL; } prop= &geom->properties[geom->num_properties]; - prop->name= (char *)_XkbAlloc(strlen(name)+1); + prop->name= xalloc(strlen(name)+1); if (!name) return NULL; strcpy(prop->name,name); - prop->value= (char *)_XkbAlloc(strlen(value)+1); + prop->value= xalloc(strlen(value)+1); if (!value) { - _XkbFree(prop->name); + xfree(prop->name); prop->name= NULL; return NULL; } @@ -738,7 +738,7 @@ register XkbColorPtr color; } color= &geom->colors[geom->num_colors]; color->pixel= pixel; - color->spec= (char *)_XkbAlloc(strlen(spec)+1); + color->spec= xalloc(strlen(spec)+1); if (!color->spec) return NULL; strcpy(color->spec,spec); @@ -852,7 +852,7 @@ XkbSectionPtr section; return NULL; if ((sz_doodads>0)&&(_XkbAllocDoodads(section,sz_doodads)!=Success)) { if (section->rows) { - _XkbFree(section->rows); + xfree(section->rows); section->rows= NULL; section->sz_rows= section->num_rows= 0; } diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c index de8ee29fa..728c0297b 100644 --- a/xkb/XKBMAlloc.c +++ b/xkb/XKBMAlloc.c @@ -79,7 +79,7 @@ XkbClientMapPtr map; map->types= _XkbTypedRealloc(map->types,nTotalTypes,XkbKeyTypeRec); if (map->types==NULL) { - _XkbFree(prev_types); + xfree(prev_types); map->num_types= map->size_types= 0; return BadAlloc; } @@ -172,7 +172,7 @@ XkbServerMapPtr map; need= map->num_acts+nNewActions; map->acts= _XkbTypedRealloc(map->acts,need,XkbAction); if (map->acts==NULL) { - _XkbFree(prev_acts); + xfree(prev_acts); map->num_acts= map->size_acts= 0; return BadAlloc; } @@ -222,15 +222,15 @@ XkbCopyKeyType(XkbKeyTypePtr from,XkbKeyTypePtr into) if ((!from)||(!into)) return BadMatch; if (into->map) { - _XkbFree(into->map); + xfree(into->map); into->map= NULL; } if (into->preserve) { - _XkbFree(into->preserve); + xfree(into->preserve); into->preserve= NULL; } if (into->level_names) { - _XkbFree(into->level_names); + xfree(into->level_names); into->level_names= NULL; } *into= *from; @@ -299,10 +299,10 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; type= &xkb->map->types[type_ndx]; if (map_count==0) { if (type->map!=NULL) - _XkbFree(type->map); + xfree(type->map); type->map= NULL; if (type->preserve!=NULL) - _XkbFree(type->preserve); + xfree(type->preserve); type->preserve= NULL; type->map_count= 0; } @@ -313,7 +313,7 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; type->map=_XkbTypedRealloc(type->map,map_count,XkbKTMapEntryRec); if (!type->map) { if (prev_map) - _XkbFree(prev_map); + xfree(prev_map); return BadAlloc; } if (want_preserve) { @@ -325,12 +325,12 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; } if (!type->preserve) { if (prev_preserve) - _XkbFree(prev_preserve); + xfree(prev_preserve); return BadAlloc; } } else if (type->preserve!=NULL) { - _XkbFree(type->preserve); + xfree(type->preserve); type->preserve= NULL; } type->map_count= map_count; @@ -342,7 +342,7 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; type->level_names=_XkbTypedRealloc(type->level_names,new_num_lvls,Atom); if (!type->level_names) { if (prev_level_names) - _XkbFree(prev_level_names); + xfree(prev_level_names); return BadAlloc; } } @@ -422,7 +422,7 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; } } type->num_levels= new_num_lvls; - _XkbFree(xkb->map->syms); + xfree(xkb->map->syms); xkb->map->syms= newSyms; xkb->map->num_syms= nSyms; return Success; @@ -518,7 +518,7 @@ KeySym *newSyms; xkb->map->key_sym_map[i].offset = nSyms; nSyms+= nKeySyms; } - _XkbFree(xkb->map->syms); + xfree(xkb->map->syms); xkb->map->syms = newSyms; xkb->map->num_syms = nSyms; return &xkb->map->syms[xkb->map->key_sym_map[key].offset]; @@ -640,7 +640,7 @@ int tmp; xkb->map->key_sym_map= _XkbTypedRealloc(xkb->map->key_sym_map, (maxKC+1),XkbSymMapRec); if (!xkb->map->key_sym_map) { - _XkbFree(prev_key_sym_map); + xfree(prev_key_sym_map); return BadAlloc; } bzero((char *)&xkb->map->key_sym_map[xkb->max_key_code], @@ -658,7 +658,7 @@ int tmp; xkb->map->modmap= _XkbTypedRealloc(xkb->map->modmap, (maxKC+1),unsigned char); if (!xkb->map->modmap) { - _XkbFree(prev_modmap); + xfree(prev_modmap); return BadAlloc; } bzero((char *)&xkb->map->modmap[xkb->max_key_code],tmp); @@ -677,7 +677,7 @@ int tmp; xkb->server->behaviors=_XkbTypedRealloc(xkb->server->behaviors, (maxKC+1),XkbBehavior); if (!xkb->server->behaviors) { - _XkbFree(prev_behaviors); + xfree(prev_behaviors); return BadAlloc; } bzero((char *)&xkb->server->behaviors[xkb->max_key_code], @@ -695,7 +695,7 @@ int tmp; xkb->server->key_acts= _XkbTypedRealloc(xkb->server->key_acts, (maxKC+1),unsigned short); if (!xkb->server->key_acts) { - _XkbFree(prev_key_acts); + xfree(prev_key_acts); return BadAlloc; } bzero((char *)&xkb->server->key_acts[xkb->max_key_code], @@ -713,7 +713,7 @@ int tmp; xkb->server->vmodmap= _XkbTypedRealloc(xkb->server->vmodmap, (maxKC+1),unsigned short); if (!xkb->server->vmodmap) { - _XkbFree(prev_vmodmap); + xfree(prev_vmodmap); return BadAlloc; } bzero((char *)&xkb->server->vmodmap[xkb->max_key_code], @@ -732,7 +732,7 @@ int tmp; xkb->names->keys= _XkbTypedRealloc(xkb->names->keys, (maxKC+1),XkbKeyNameRec); if (!xkb->names->keys) { - _XkbFree(prev_keys); + xfree(prev_keys); return BadAlloc; } bzero((char *)&xkb->names->keys[xkb->max_key_code], @@ -793,7 +793,7 @@ XkbAction *newActs; xkb->server->key_acts[i]= nActs; nActs+= nKeyActs; } - _XkbFree(xkb->server->acts); + xfree(xkb->server->acts); xkb->server->acts = newActs; xkb->server->num_acts= nActs; return &xkb->server->acts[xkb->server->key_acts[key]]; @@ -816,42 +816,42 @@ XkbClientMapPtr map; XkbKeyTypePtr type; for (i=0,type=map->types;inum_types;i++,type++) { if (type->map!=NULL) { - _XkbFree(type->map); + xfree(type->map); type->map= NULL; } if (type->preserve!=NULL) { - _XkbFree(type->preserve); + xfree(type->preserve); type->preserve= NULL; } type->map_count= 0; if (type->level_names!=NULL) { - _XkbFree(type->level_names); + xfree(type->level_names); type->level_names= NULL; } } } - _XkbFree(map->types); + xfree(map->types); map->num_types= map->size_types= 0; map->types= NULL; } } if (what&XkbKeySymsMask) { if (map->key_sym_map!=NULL) { - _XkbFree(map->key_sym_map); + xfree(map->key_sym_map); map->key_sym_map= NULL; } if (map->syms!=NULL) { - _XkbFree(map->syms); + xfree(map->syms); map->size_syms= map->num_syms= 0; map->syms= NULL; } } if ((what&XkbModifierMapMask)&&(map->modmap!=NULL)) { - _XkbFree(map->modmap); + xfree(map->modmap); map->modmap= NULL; } if (freeMap) { - _XkbFree(xkb->map); + xfree(xkb->map); xkb->map= NULL; } return; @@ -868,31 +868,31 @@ XkbServerMapPtr map; what= XkbAllServerInfoMask; map= xkb->server; if ((what&XkbExplicitComponentsMask)&&(map->explicit!=NULL)) { - _XkbFree(map->explicit); + xfree(map->explicit); map->explicit= NULL; } if (what&XkbKeyActionsMask) { if (map->key_acts!=NULL) { - _XkbFree(map->key_acts); + xfree(map->key_acts); map->key_acts= NULL; } if (map->acts!=NULL) { - _XkbFree(map->acts); + xfree(map->acts); map->num_acts= map->size_acts= 0; map->acts= NULL; } } if ((what&XkbKeyBehaviorsMask)&&(map->behaviors!=NULL)) { - _XkbFree(map->behaviors); + xfree(map->behaviors); map->behaviors= NULL; } if ((what&XkbVirtualModMapMask)&&(map->vmodmap!=NULL)) { - _XkbFree(map->vmodmap); + xfree(map->vmodmap); map->vmodmap= NULL; } if (freeMap) { - _XkbFree(xkb->server); + xfree(xkb->server); xkb->server= NULL; } return; diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c index 82d37d19f..9cb7061f3 100644 --- a/xkb/XKBMisc.c +++ b/xkb/XKBMisc.c @@ -507,7 +507,7 @@ unsigned changed,tmp; mc->changed|= changed; } if (interps!=ibuf) - _XkbFree(interps); + xfree(interps); return True; } diff --git a/xkb/maprules.c b/xkb/maprules.c index a0141a3d1..168c5277f 100644 --- a/xkb/maprules.c +++ b/xkb/maprules.c @@ -78,7 +78,7 @@ static void FreeInputLine(InputLine *line) { if (line->line!=line->buf) - _XkbFree(line->line); + xfree(line->line); line->line_num= 1; line->num_line= 0; line->sz_line= DFLT_LINE_SIZE; @@ -91,11 +91,11 @@ InputLineAddChar(InputLine *line,int ch) { if (line->num_line>=line->sz_line) { if (line->line==line->buf) { - line->line= (char *)_XkbAlloc(line->sz_line*2); + line->line= xalloc(line->sz_line*2); memcpy(line->line,line->buf,line->sz_line); } else { - line->line=(char *)_XkbRealloc((char *)line->line,line->sz_line*2); + line->line= xrealloc((char *)line->line,line->sz_line*2); } line->sz_line*= 2; } @@ -553,9 +553,9 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs) static void FreeMultiDefs(XkbRF_MultiDefsPtr defs) { - if (defs->options) _XkbFree(defs->options); - if (defs->layout[1]) _XkbFree(defs->layout[1]); - if (defs->variant[1]) _XkbFree(defs->variant[1]); + if (defs->options) xfree(defs->options); + if (defs->layout[1]) xfree(defs->layout[1]); + if (defs->variant[1]) xfree(defs->variant[1]); } static void @@ -769,7 +769,7 @@ int len, ndx; } str= index(&str[0],'%'); } - name= (char *)_XkbAlloc(len+1); + name= xalloc(len+1); str= orig; outstr= name; while (*str!='\0') { @@ -819,7 +819,7 @@ int len, ndx; } *outstr++= '\0'; if (orig!=name) - _XkbFree(orig); + xfree(orig); return name; } @@ -988,32 +988,32 @@ XkbRF_GroupPtr group; return; if (rules->rules) { for (i=0,rule=rules->rules;inum_rules;i++,rule++) { - if (rule->model) _XkbFree(rule->model); - if (rule->layout) _XkbFree(rule->layout); - if (rule->variant) _XkbFree(rule->variant); - if (rule->option) _XkbFree(rule->option); - if (rule->keycodes) _XkbFree(rule->keycodes); - if (rule->symbols) _XkbFree(rule->symbols); - if (rule->types) _XkbFree(rule->types); - if (rule->compat) _XkbFree(rule->compat); - if (rule->geometry) _XkbFree(rule->geometry); + if (rule->model) xfree(rule->model); + if (rule->layout) xfree(rule->layout); + if (rule->variant) xfree(rule->variant); + if (rule->option) xfree(rule->option); + if (rule->keycodes) xfree(rule->keycodes); + if (rule->symbols) xfree(rule->symbols); + if (rule->types) xfree(rule->types); + if (rule->compat) xfree(rule->compat); + if (rule->geometry) xfree(rule->geometry); bzero((char *)rule,sizeof(XkbRF_RuleRec)); } - _XkbFree(rules->rules); + xfree(rules->rules); rules->num_rules= rules->sz_rules= 0; rules->rules= NULL; } if (rules->groups) { for (i=0, group=rules->groups;inum_groups;i++,group++) { - if (group->name) _XkbFree(group->name); - if (group->words) _XkbFree(group->words); + if (group->name) xfree(group->name); + if (group->words) xfree(group->words); } - _XkbFree(rules->groups); + xfree(rules->groups); rules->num_groups= 0; rules->groups= NULL; } if (freeRules) - _XkbFree(rules); + xfree(rules); return; } diff --git a/xkb/xkb.c b/xkb/xkb.c index b2fe11cae..445c55ffd 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -1363,7 +1363,7 @@ unsigned i,len; char *desc,*start; len= (rep->length*4)-(SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply)); - start= desc= (char *)xcalloc(1, len); + start= desc= xcalloc(1, len); if (!start) return BadAlloc; if ( rep->nTypes>0 ) @@ -2184,8 +2184,8 @@ unsigned first,last; if (maxRG>(int)xkbi->nRadioGroups) { int sz = maxRG*sizeof(XkbRadioGroupRec); if (xkbi->radioGroups) - xkbi->radioGroups=(XkbRadioGroupPtr)_XkbRealloc(xkbi->radioGroups,sz); - else xkbi->radioGroups= (XkbRadioGroupPtr)_XkbCalloc(1, sz); + xkbi->radioGroups= xrealloc(xkbi->radioGroups,sz); + else xkbi->radioGroups= xcalloc(1, sz); if (xkbi->radioGroups) { if (xkbi->nRadioGroups) bzero(&xkbi->radioGroups[xkbi->nRadioGroups], @@ -2627,7 +2627,7 @@ int size; size= rep->length*4; if (size>0) { - data = (char *)xalloc(size); + data = xalloc(size); if (data) { register unsigned i,bit; xkbModsWireDesc * grp; @@ -2994,7 +2994,7 @@ register unsigned bit; length = rep->length*4; if (length>0) { CARD8 *to; - to= map= (CARD8 *)xalloc(length); + to= map= xalloc(length); if (map) { xkbIndicatorMapWireDesc *wire = (xkbIndicatorMapWireDesc *)to; for (i=0,bit=1;iindicators,n); } - start = desc = (char *)xalloc(length); + start = desc = xalloc(length); if ( !start ) return BadAlloc; if (xkb->names) { @@ -4116,7 +4116,7 @@ _XkbSetNames(ClientPtr client, DeviceIntPtr dev, xkbSetNamesReq *stuff) tmp+= stuff->nKeyAliases*2; } else if (names->key_aliases!=NULL) { - _XkbFree(names->key_aliases); + xfree(names->key_aliases); names->key_aliases= NULL; names->num_key_aliases= 0; } @@ -4135,7 +4135,7 @@ _XkbSetNames(ClientPtr client, DeviceIntPtr dev, xkbSetNamesReq *stuff) tmp+= stuff->nRadioGroups; } else if (names->radio_groups) { - _XkbFree(names->radio_groups); + xfree(names->radio_groups); names->radio_groups= NULL; names->num_rg= 0; } @@ -4735,7 +4735,7 @@ XkbSendGeometry( ClientPtr client, if (geom!=NULL) { len= rep->length*4; - start= desc= (char *)xalloc(len); + start= desc= xalloc(len); if (!start) return BadAlloc; desc= XkbWriteCountedString(desc,geom->label_font,client->swapped); @@ -4829,7 +4829,7 @@ CARD16 len,*plen; swaps(plen,n); } len= *plen; - str= (char *)_XkbAlloc(len+1); + str= xalloc(len+1); if (str) { memcpy(str,&wire[2],len); str[len]= '\0'; @@ -5444,7 +5444,7 @@ unsigned char *wire,*str,*tmp,*legal; wire= *pWire; len= (*(unsigned char *)wire++); if (len>0) { - str= (unsigned char *)_XkbCalloc(1, len+1); + str= xcalloc(1, len+1); if (str) { tmp= str; for (i=0;inoClientException; @@ -5869,11 +5869,11 @@ ProcXkbGetKbdByName(ClientPtr client) XkbFreeKeyboard(new,XkbAllComponentsMask,True); new= NULL; } - if (names.keycodes) { _XkbFree(names.keycodes); names.keycodes= NULL; } - if (names.types) { _XkbFree(names.types); names.types= NULL; } - if (names.compat) { _XkbFree(names.compat); names.compat= NULL; } - if (names.symbols) { _XkbFree(names.symbols); names.symbols= NULL; } - if (names.geometry) { _XkbFree(names.geometry); names.geometry= NULL; } + if (names.keycodes) { xfree(names.keycodes); names.keycodes= NULL; } + if (names.types) { xfree(names.types); names.types= NULL; } + if (names.compat) { xfree(names.compat); names.compat= NULL; } + if (names.symbols) { xfree(names.symbols); names.symbols= NULL; } + if (names.geometry) { xfree(names.geometry); names.geometry= NULL; } return client->noClientException; } @@ -6188,7 +6188,7 @@ char * str; } WriteToClient(client,SIZEOF(xkbGetDeviceInfoReply), (char *)&rep); - str= (char*) xalloc(nameLen); + str= xalloc(nameLen); if (!str) return BadAlloc; XkbWriteCountedString(str,dev->name,client->swapped); diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c index 9293c60be..489f309a4 100644 --- a/xkb/xkbEvents.c +++ b/xkb/xkbEvents.c @@ -1136,7 +1136,7 @@ ClientPtr client = NULL; autoCtrls= interest->autoCtrls; autoValues= interest->autoCtrlValues; client= interest->client; - _XkbFree(interest); + xfree(interest); found= True; } while ((!found)&&(interest->next)) { @@ -1146,7 +1146,7 @@ ClientPtr client = NULL; autoCtrls= victim->autoCtrls; autoValues= victim->autoCtrlValues; client= victim->client; - _XkbFree(victim); + xfree(victim); found= True; } interest = interest->next; diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index 7c611bcc7..bea8ce0cc 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -222,19 +222,19 @@ static void XkbSetRulesUsed(XkbRMLVOSet *rmlvo) { if (XkbRulesUsed) - _XkbFree(XkbRulesUsed); + xfree(XkbRulesUsed); XkbRulesUsed= (rmlvo->rules?_XkbDupString(rmlvo->rules):NULL); if (XkbModelUsed) - _XkbFree(XkbModelUsed); + xfree(XkbModelUsed); XkbModelUsed= (rmlvo->model?_XkbDupString(rmlvo->model):NULL); if (XkbLayoutUsed) - _XkbFree(XkbLayoutUsed); + xfree(XkbLayoutUsed); XkbLayoutUsed= (rmlvo->layout?_XkbDupString(rmlvo->layout):NULL); if (XkbVariantUsed) - _XkbFree(XkbVariantUsed); + xfree(XkbVariantUsed); XkbVariantUsed= (rmlvo->variant?_XkbDupString(rmlvo->variant):NULL); if (XkbOptionsUsed) - _XkbFree(XkbOptionsUsed); + xfree(XkbOptionsUsed); XkbOptionsUsed= (rmlvo->options?_XkbDupString(rmlvo->options):NULL); if (XkbWantRulesProp) QueueWorkProc(XkbWriteRulesProp,NULL,NULL); @@ -246,27 +246,27 @@ XkbSetRulesDflts(XkbRMLVOSet *rmlvo) { if (rmlvo->rules) { if (XkbRulesDflt) - _XkbFree(XkbRulesDflt); + xfree(XkbRulesDflt); XkbRulesDflt= _XkbDupString(rmlvo->rules); } if (rmlvo->model) { if (XkbModelDflt) - _XkbFree(XkbModelDflt); + xfree(XkbModelDflt); XkbModelDflt= _XkbDupString(rmlvo->model); } if (rmlvo->layout) { if (XkbLayoutDflt) - _XkbFree(XkbLayoutDflt); + xfree(XkbLayoutDflt); XkbLayoutDflt= _XkbDupString(rmlvo->layout); } if (rmlvo->variant) { if (XkbVariantDflt) - _XkbFree(XkbVariantDflt); + xfree(XkbVariantDflt); XkbVariantDflt= _XkbDupString(rmlvo->variant); } if (rmlvo->options) { if (XkbOptionsDflt) - _XkbFree(XkbOptionsDflt); + xfree(XkbOptionsDflt); XkbOptionsDflt= _XkbDupString(rmlvo->options); } return; @@ -275,15 +275,15 @@ XkbSetRulesDflts(XkbRMLVOSet *rmlvo) void XkbDeleteRulesDflts(void) { - _XkbFree(XkbRulesDflt); + xfree(XkbRulesDflt); XkbRulesDflt = NULL; - _XkbFree(XkbModelDflt); + xfree(XkbModelDflt); XkbModelDflt = NULL; - _XkbFree(XkbLayoutDflt); + xfree(XkbLayoutDflt); XkbLayoutDflt = NULL; - _XkbFree(XkbVariantDflt); + xfree(XkbVariantDflt); XkbVariantDflt = NULL; - _XkbFree(XkbOptionsDflt); + xfree(XkbOptionsDflt); XkbOptionsDflt = NULL; XkbFreeKeyboard(xkb_cached_map, XkbAllComponentsMask, True); @@ -643,7 +643,7 @@ void XkbFreeInfo(XkbSrvInfoPtr xkbi) { if (xkbi->radioGroups) { - _XkbFree(xkbi->radioGroups); + xfree(xkbi->radioGroups); xkbi->radioGroups= NULL; } if (xkbi->mouseKeyTimer) { @@ -675,7 +675,7 @@ XkbFreeInfo(XkbSrvInfoPtr xkbi) XkbFreeKeyboard(xkbi->desc,XkbAllComponentsMask,True); xkbi->desc= NULL; } - _XkbFree(xkbi); + xfree(xkbi); return; } diff --git a/xkb/xkbLEDs.c b/xkb/xkbLEDs.c index a70ac841d..59cdba416 100644 --- a/xkb/xkbLEDs.c +++ b/xkb/xkbLEDs.c @@ -605,12 +605,12 @@ void XkbFreeSrvLedInfo(XkbSrvLedInfoPtr sli) { if ((sli->flags&XkbSLI_IsDefault)==0) { - if (sli->maps) _XkbFree(sli->maps); - if (sli->names) _XkbFree(sli->names); + if (sli->maps) xfree(sli->maps); + if (sli->names) xfree(sli->names); } sli->maps= NULL; sli->names= NULL; - _XkbFree(sli); + xfree(sli); return; } diff --git a/xkb/xkmread.c b/xkb/xkmread.c index dc8ab612d..206c40382 100644 --- a/xkb/xkmread.c +++ b/xkb/xkmread.c @@ -57,7 +57,7 @@ char *new; if (str==NULL) return NULL; - new= (char *)_XkbCalloc(strlen(str)+1,sizeof(char)); + new= xcalloc(strlen(str)+1,sizeof(char)); if (new) strcpy(new,str); return new; @@ -73,10 +73,10 @@ int newCount= *newCountRtrn; if (oldPtr==NULL) { if (newCount==0) return NULL; - oldPtr= _XkbCalloc(newCount,elemSize); + oldPtr= xcalloc(newCount,elemSize); } else if (oldCount Date: Thu, 30 Apr 2009 18:49:06 -0700 Subject: Fix a couple off-by-one array boundary checks. Error: Write outside array bounds at Xext/geext.c:406 in function 'GEWindowSetMask' [Symbolic analysis] In array dereference of cli->nextSib[extension] with index 'extension' Array size is 128 elements (of 4 bytes each), index <= 128 Error: Buffer overflow at dix/events.c:592 in function 'SetMaskForEvent' [Symbolic analysis] In array dereference of filters[deviceid] with index 'deviceid' Array size is 20 elements (of 512 bytes each), index >= 0 and index <= 20 Error: Read buffer overflow at hw/xfree86/loader/loader.c:226 in function 'LoaderOpen' [Symbolic analysis] In array dereference of refCount[new_handle] with index 'new_handle' Array size is 256 elements (of 4 bytes each), index >= 1 and index <= 256 These bugs were found using the Parfait source code analysis tool. For more information see http://research.sun.com/projects/parfait Signed-off-by: Alan Coopersmith Signed-off-by: Adam Jackson Acked-by: Peter Hutterer --- Xext/geext.c | 2 +- dix/events.c | 2 +- hw/xfree86/loader/loader.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Xext/geext.c b/Xext/geext.c index a58db038e..7ab99517d 100644 --- a/Xext/geext.c +++ b/Xext/geext.c @@ -364,7 +364,7 @@ GEWindowSetMask(ClientPtr pClient, DeviceIntPtr pDev, extension = (extension & 0x7F); - if (extension > MAXEXTENSIONS) + if (extension >= MAXEXTENSIONS) { ErrorF("Invalid extension number.\n"); return; diff --git a/dix/events.c b/dix/events.c index be88891a4..157f9a8a1 100644 --- a/dix/events.c +++ b/dix/events.c @@ -588,7 +588,7 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev, void SetMaskForEvent(int deviceid, Mask mask, int event) { - if (deviceid < 0 || deviceid > MAXDEVICES) + if (deviceid < 0 || deviceid >= MAXDEVICES) FatalError("SetMaskForEvent: bogus device id"); filters[deviceid][event] = mask; } diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c index ab7736254..1803d0eb1 100644 --- a/hw/xfree86/loader/loader.c +++ b/hw/xfree86/loader/loader.c @@ -223,7 +223,7 @@ LoaderOpen(const char *module, const char *cname, int handle, * Find a free handle. */ new_handle = 1; - while (refCount[new_handle] && new_handle < MAX_HANDLE) + while (new_handle < MAX_HANDLE && refCount[new_handle]) new_handle++; if (new_handle == MAX_HANDLE) { -- cgit v1.2.3 From 1e816065e5ec3b9394dc1fa5815457a664e15fd9 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 8 May 2009 21:31:01 -0700 Subject: Don't printf NULL pointers on HAL connection error Fixes Solaris bug 6801386 Xorg core dumps on startup if hald not running http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6801386 Signed-off-by: Alan Coopersmith --- config/hal.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/config/hal.c b/config/hal.c index 36fa839fb..731d9b8fc 100644 --- a/config/hal.c +++ b/config/hal.c @@ -493,12 +493,14 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info) } if (!libhal_ctx_init(info->hal_ctx, &error)) { 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; } if (!libhal_device_property_watch_all(info->hal_ctx, &error)) { 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; } 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: if (!libhal_ctx_shutdown(info->hal_ctx, &error)) 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: libhal_ctx_free(info->hal_ctx); out_err: -- cgit v1.2.3 From c2b668e6fff11c52f2a3f0dc3f4d1fc2c5bcf3e6 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Tue, 5 May 2009 20:27:53 -0700 Subject: XQuartz: pbproxy standalone: added missing variable declarations. (cherry picked from commit 2d947d17a3ef5fb8cef959bff0eb08b8bb5b6548) --- hw/xquartz/pbproxy/app-main.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/xquartz/pbproxy/app-main.m b/hw/xquartz/pbproxy/app-main.m index cb0fa5744..d4b43c6ae 100644 --- a/hw/xquartz/pbproxy/app-main.m +++ b/hw/xquartz/pbproxy/app-main.m @@ -50,6 +50,9 @@ static void signal_handler (int sig) { } int main (int argc, const char *argv[]) { + const char *s; + int i; + #ifdef DEBUG printf("pid: %u\n", getpid()); #endif -- cgit v1.2.3 From ebfd6688d1927288155221e7a78fbca9f9293952 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Pedersen Date: Sun, 10 May 2009 23:27:56 -0400 Subject: Make compositing with transformed windows work again. The coordinate translation was broken in pretty much every way imaginable. --- fb/fbpict.c | 24 ++++++++---------------- render/mipict.c | 4 ++-- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/fb/fbpict.c b/fb/fbpict.c index 1355e9071..c89691d1b 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -159,22 +159,9 @@ fbComposite (CARD8 op, { pixman_image_t *src, *mask, *dest; - xDst += pDst->pDrawable->x; - 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); + miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height); if (pMask) - miCompositeSourceValidate (pMask, xMask, yMask, width, height); + miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height); src = image_from_pict (pSrc, TRUE); mask = image_from_pict (pMask, TRUE); @@ -292,7 +279,8 @@ create_bits_picture (PicturePtr pict, 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 ( pict->format, @@ -321,8 +309,12 @@ create_bits_picture (PicturePtr pict, { if (pict->clientClipType != CT_NONE) 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_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y); } /* Indexed table */ diff --git a/render/mipict.c b/render/mipict.c index 777f111e5..c653ec4f5 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -358,8 +358,6 @@ miCompositeSourceValidate (PicturePtr pPicture, if (pScreen->SourceValidate) { - x -= pPicture->pDrawable->x; - y -= pPicture->pDrawable->y; if (pPicture->transform) { xPoint points[4]; @@ -394,6 +392,8 @@ miCompositeSourceValidate (PicturePtr pPicture, width = xmax - xmin; height = ymax - ymin; } + x += pPicture->pDrawable->x; + y += pPicture->pDrawable->y; (*pScreen->SourceValidate) (pDrawable, x, y, width, height); } } -- cgit v1.2.3 From ac13145dbcb284293582435409d8a90f276785c5 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 11 May 2009 15:45:46 +1000 Subject: xkb: if kbd init failed, NULL out the pointers after freeing them (#21278) Reproducible: Configure a server that uses the keyboard driver with an invalid ruleset, e.g. (Option "XkbRules" "foobar"). Ensure that Option "AllowEmptyInput" is "off" in the ServerFlags or ServerLayout section. Start the server. After failing to init the keymap, the server will try to clean up after the device, double-freeing some xkb structs that have not been reset properly. X.Org Bug 21278 Signed-off-by: Peter Hutterer --- xkb/xkbInit.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c index bea8ce0cc..e707f7ad3 100644 --- a/xkb/xkbInit.c +++ b/xkb/xkbInit.c @@ -622,10 +622,13 @@ unwind_desc: XkbFreeKeyboard(xkb, 0, TRUE); unwind_info: xfree(xkbi); + dev->key->xkbInfo = NULL; unwind_kbdfeed: xfree(dev->kbdfeed); + dev->kbdfeed = NULL; unwind_key: xfree(dev->key); + dev->key = NULL; return FALSE; } -- cgit v1.2.3 From 0952d12717031e9dda9e48123bb922d0f4e81834 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 11 May 2009 15:27:46 -0400 Subject: xselinux: Relax ownership restriction on SetSelectionUseContext. Instead, clients should keep track of the selection instances they use. --- Xext/xselinux.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 2c7262140..3a6f0960d 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -1346,15 +1346,6 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset) goto out; 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); pSid = (security_id_t *)(ptr + offset); -- cgit v1.2.3 From f250eea2e90fc50bec5214c2f41132b95edc2c46 Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Mon, 11 May 2009 22:52:46 +0200 Subject: DRI2: update DRI2 private drawable width & height according to X drawable --- hw/xfree86/dri2/dri2.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 1d49d7c65..385c5e8d4 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -257,6 +257,8 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height, pPriv->buffers = buffers; pPriv->bufferCount = *out_count; + pPriv->width = pDraw->width; + pPriv->height = pDraw->height; *width = pPriv->width; *height = pPriv->height; -- cgit v1.2.3 From b746a00cffca5c553b607a8e9c1074294a23b443 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 12 May 2009 16:11:01 -0700 Subject: Resync COPYING file with notices in code base as of xorg-server-1.6.1 Remove notices for code no longer in tree (Xprint, Xgl, kdrive, cfb, etc.) Add/update notices for new/changed code in tree Signed-off-by: Alan Coopersmith --- COPYING | 837 +++++++++++----------------------------------------------------- 1 file changed, 133 insertions(+), 704 deletions(-) diff --git a/COPYING b/COPYING index 6faa4b196..f92d653d9 100644 --- a/COPYING +++ b/COPYING @@ -7,10 +7,12 @@ Juliusz Chroboczek sorts before Intel Corporation sorts before Daniel Stone). Copyright © 2000-2001 Juliusz Chroboczek +Copyright © 1998 Egbert Eich Copyright © 2006-2007 Intel Corporation Copyright © 2006 Nokia Corporation Copyright © 2006-2008 Peter Hutterer Copyright © 1999 Keith Packard +Copyright © 2007-2008 Red Hat, Inc. Copyright © 2005-2007 Daniel Stone Copyright © 2006-2008 Simon Thum Copyright © 2006 Luc Verhaegen @@ -88,30 +90,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 2005 Kean Johnston -Copyright 1999 by The XFree86 Project, Inc. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the names of The XFree86 Project, Inc -and Kean Johnston not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -The XFree86 Project, Inc and Kean Johnston make no representations -about the suitability of this software for any purpose. It is provided -"as is" without express or implied warranty. - -THE XFREE86 PROJECT, INC AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELL, DAVID WEXELBLAT -OR KEAN JOHNSTON BE LIABLE FOR 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. - - Copyright 1985-1998, 2001 The Open Group Copyright 2002 Red Hat Inc., Durham, North Carolina. @@ -161,6 +139,7 @@ in this Software without prior written authorization from the X Consortium. Copyright © 1999-2000 SuSE, Inc. +Copyright © 2007 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that @@ -180,28 +159,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright © 2005 Novell, Inc. - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without -fee, provided that the above copyright notice appear in all copies -and that both that copyright notice and this permission notice -appear in supporting documentation, and that the name of -Novell, Inc. not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -Novell, Inc. makes no representations about the suitability of this -software for any purpose. It is provided "as is" without express or -implied warranty. - -NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL NOVELL, INC. BE LIABLE FOR 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. - - Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA. All Rights Reserved @@ -228,32 +185,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA. -All Rights Reserved - -Permission to use, copy, modify, and distribute this -software and its documentation for any purpose and without -fee is hereby granted, provided that the above copyright no- -tice appear in all copies and that both that copyright no- -tice and this permission notice appear in supporting docu- -mentation, and that the names of Sun or The Open Group -not be used in advertising or publicity pertaining to -distribution of the software without specific prior -written permission. Sun and The Open Group make no -representations about the suitability of this software for -any purpose. It is provided "as is" without any express or -implied warranty. - -SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT- -NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI- -ABLE FOR 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. - - Copyright © 2006 Sun Microsystems Permission to use, copy, modify, distribute, and sell this software and its @@ -321,26 +252,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1987-1992 by Digital Equipment Corp., Maynard, MA -X11R6 Changes Copyright (c) 1994 by Robert Chesler of Absol-Puter, Hudson, NH. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL AND ABSOL-PUTER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL DIGITAL OR ABSOL-PUTER BE LIABLE FOR 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. - - Copyright 1997 Digital Equipment Corporation. All rights reserved. @@ -545,7 +456,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Copyright 2005 Red Hat, Inc. +Copyright © 2008 Red Hat, Inc. +Partly based on code Copyright © 2000 SuSE, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without @@ -558,14 +470,31 @@ Hat makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +NO EVENT SHALL Red Hat BE LIABLE FOR 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. +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR 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. + Copyright (c) 2006, Red Hat, Inc. @@ -590,7 +519,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Red Hat. -Copyright © 2006 Red Hat, Inc +Copyright © 2006, 2007 Red Hat, Inc Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without @@ -693,26 +622,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Copyright IBM Corporation 1987,1988,1989 -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of IBM not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -IBM BE LIABLE FOR 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. - - (C) Copyright IBM Corporation 2003 All Rights Reserved. @@ -931,29 +840,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 2000 Intel Corporation. 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, sub license, 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 NON-INFRINGEMENT. -IN NO EVENT SHALL INTEL, AND/OR ITS SUPPLIERS 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 © 2004 Nokia Permission to use, copy, modify, distribute, and sell this software and its @@ -975,30 +861,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1998-2003 VIA Technologies, Inc. -Copyright 2001-2003 S3 Graphics, 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, sub license, -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 NON-INFRINGEMENT. IN NO EVENT SHALL -VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS 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. - - (c)Copyright 1988,1991 Adobe Systems Incorporated. All rights reserved. @@ -1106,60 +968,26 @@ Copyright © 1999 Keith Packard Copyright © 2000 Compaq Computer Corporation Copyright © 2002 MontaVista Software Inc. Copyright © 2005 OpenedHand Ltd. +Copyright © 2006 Nokia Corporation Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting -documentation, and that the name of Keith Packard or Compaq not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Keith Packard and Compaq makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -KEITH PACKARD AND COMPAQ DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR 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. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Michael Taht or MontaVista not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Michael Taht and Montavista make no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -MICHAEL TAHT AND MONTAVISTA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL EITHER BE LIABLE FOR 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. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Matthew Allum or OpenedHand not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Matthew Allum and OpenedHand make no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. +documentation, and that the name of the authors and/or copyright holders +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The authors and/or +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. -MATTHEW ALLUM AND OPENEDHAND DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL EITHER BE LIABLE FOR 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. +THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS BE +LIABLE FOR 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. Copyright 1993 by Davor Matic @@ -1173,31 +1001,6 @@ the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -(c) Copyright 1996 by Sebastien Marineau - -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 -HOLGER VEIT 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. - -Except as contained in this notice, the name of Sebastien Marineau shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from Sebastien Marineau. - - Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. @@ -1270,29 +1073,6 @@ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany -Copyright 1993 by David Dawes - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the names of Thomas Roell and David Dawes -not be used in advertising or publicity pertaining to distribution of -the software without specific, written prior permission. Thomas Roell and -David Dawes makes no representations about the suitability of this -software for any purpose. It is provided "as is" without express or -implied warranty. - -THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR -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. - - Copyright 1990,91,92,93 by Thomas Roell, Germany. Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA. @@ -1316,158 +1096,40 @@ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 2001-2005 by Kean Johnston -Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany -Copyright 1993 by David Wexelblat +Copyright 1998 by Alan Hourihane, Wigan, England. +Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting -documentation, and that the names of Thomas Roell, David Wexelblat -and Kean Johnston not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -Thomas Roell, David Wexelblat and Kean Johnston make no representations +documentation, and that the name of Alan Hourihane not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Alan Hourihane makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -THOMAS ROELL, DAVID WEXELBLAT AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT -OR KEAN JOHNSTON BE LIABLE FOR 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. +ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ALAN HOURIHANE BE LIABLE FOR 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. -Copyright 2001-2005 by Kean Johnston -Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany -Copyright 1993 by David Dawes -Copyright 1993 by David Wexelblat +Copyright 1995 Kaleb S. KEITHLEY -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the names of Thomas Roell, David Dawes -and Kean Johnston not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -Thomas Roell, David Dawes and Kean Johnston make no representations -about the suitability of this software for any purpose. It is provided -"as is" without express or implied warranty. +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: -THOMAS ROELL, DAVID DAWES AND KEAN JOHNSTON DISCLAIM ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THOMAS ROELLm DAVID WEXELBLAT -OR KEAN JOHNSTON BE LIABLE FOR 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. - - -Copyright (c) 2001-2003 Torrey T. Lyons. -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, 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 -TORREY T. LYONS 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. - -Except as contained in this notice, the name(s) of the above copyright -holders shall not be used in advertising or otherwise to promote the sale, -use or other dealings in this Software without prior written authorization. - - -Copyright © 2004 David Reveman - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without -fee, provided that the above copyright notice appear in all copies -and that both that copyright notice and this permission notice -appear in supporting documentation, and that the name of -David Reveman not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -David Reveman makes no representations about the suitability of this -software for any purpose. It is provided "as is" without express or -implied warranty. - -DAVID REVEMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL DAVID REVEMAN BE LIABLE FOR 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. - - -Copyright 1993 Gerrit Jan Akkerman - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Gerrit Jan Akkerman not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -GERRIT JAN AKKERMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -IN NO EVENT SHALL GERRIT JAN AKKERMAN BE LIABLE FOR 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. - - -Copyright 1998 by Alan Hourihane, Wigan, England. -Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Alan Hourihane not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Alan Hourihane makes no representations -about the suitability of this software for any purpose. It is provided -"as is" without express or implied warranty. - -ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL ALAN HOURIHANE BE LIABLE FOR 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. - - -Copyright 1995 Kaleb S. KEITHLEY - -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 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 @@ -1504,27 +1166,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1993 by Thomas Mueller - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Thomas Mueller not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Thomas Mueller makes no representations -about the suitability of this software for any purpose. It is provided -"as is" without express or implied warranty. - -THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL THOMAS MUELLER BE LIABLE FOR 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. - - Copyright 2004, Egbert Eich Permission is hereby granted, free of charge, to any person obtaining a copy @@ -1662,27 +1303,6 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Copyright 2001,2005 by Kean Johnston - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name Kean Johnston not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Kean Johnston makes no -representations about the suitability of this software for any purpose. -It is provided "as is" without express or implied warranty. - -KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL KEAN JOHNSTON BE LIABLE FOR 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. - - Copyright 1992 by Rich Murphey Copyright 1993 by David Wexelblat @@ -1729,69 +1349,6 @@ CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright © 2004 Franco Catrin - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Franco Catrin not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Franco Catrin makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -FRANCO CATRIN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL FRANCO CATRIN BE LIABLE FOR 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. - - -Copyright © 2004 Ralph Thomas - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Ralph Thomas not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Ralph Thomas makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -RALPH THOMAS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL RALPH THOMAS BE LIABLE FOR 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. - - -Copyright © 2004 Damien Ciabrini - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Anders Carlsson not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Anders Carlsson makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -DAMIEN CIABRINI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL ANDERS CARLSSON BE LIABLE FOR 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. - - Copyright © 2003-2004 Anders Carlsson Permission to use, copy, modify, distribute, and sell this software and its @@ -1836,31 +1393,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 2000 Silicon Integrated Systems Corp, Inc., HsinChu, Taiwan. -Copyright 2003 Eric Anholt -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, sub license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL -ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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 © 2004 PillowElephantBadgerBankPond Permission to use, copy, modify, distribute, and sell this software and its @@ -1882,27 +1414,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 2004 by Costas Stylianou +44(0)7850 394095 - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Costas Sylianou not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Costas Stylianou makes no representations -about the suitability of this software for any purpose. It is provided -"as is" without express or implied warranty. - -COSTAS STYLIANOU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL COSTAS STYLIANOU BE LIABLE FOR 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. - - Copyright (c) 1998 Todd C. Miller Permission to use, copy, modify, and distribute this software for any @@ -1918,32 +1429,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright (C) 1995 Pascal Haible. 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, 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 -PASCAL HAIBLE 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. - -Except as contained in this notice, the name of Pascal Haible shall -not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from -Pascal Haible. - - Copyright © 2003-2004 Philip Blundell Permission to use, copy, modify, distribute, and sell this software and its @@ -2005,16 +1490,19 @@ Copyright © 2004, 2005 Red Hat, Inc. Copyright © 2004 Nicholas Miell Copyright © 2005 Trolltech AS Copyright © 2006 Intel Corporation +Copyright © 2006-2007 Keith Packard +Copyright © 2008 Red Hat, Inc +Copyright © 2008 George Sapountzis Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Red Hat not be used in advertising or +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of the copyright holders not be used in advertising or publicity pertaining to distribution of the software without specific, -written prior permission. Red Hat makes no representations about the -suitability of this software for any purpose. It is provided "as is" -without express or implied warranty. +written prior permission. The copyright holders make no representations +about the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND @@ -2053,7 +1541,8 @@ Copyright 1987, 1998 The Open Group Copyright © 1998-1999, 2001 The XFree86 Project, Inc. Copyright © 2000 VA Linux Systems, Inc. Copyright (c) 2000, 2001 Nokia Home Communications -Copyright 2003-2006 Sun Microsystems, Inc. +Copyright 2003-2006, 2008 Sun Microsystems, Inc. +Copyright © 2007, 2008 Red Hat, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a @@ -2082,33 +1571,6 @@ or other dealings in this Software without prior written authorization of the copyright holder. -Copyright (c) 1998-1999 Shunsuke Akiyama . -Copyright (c) 1998-1999 X-TrueType Server Project -Copyright (c) 1999 Lennart Augustsson -All rights reserved - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. - - Copyright 1996 by Thomas E. Dickey All Rights Reserved @@ -2131,45 +1593,14 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -(c) Copyright 1996 Hewlett-Packard Company -(c) Copyright 1996 International Business Machines Corp. -(c) Copyright 1996, 2004 Sun Microsystems, Inc. -(c) Copyright 1996 Novell, Inc. -(c) Copyright 1996 Digital Equipment Corp. -(c) Copyright 1996 Fujitsu Limited -(c) Copyright 1996 Hitachi, Ltd. -Copyright (c) 2003-2005 Roland Mainz - -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 THE -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. - -Except as contained in this notice, the names of the copyright holders shall -not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from said -copyright holders. - - Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. Copyright (c) 2001 Andreas Monitzer. Copyright (c) 2001-2004 Greg Parker. Copyright (c) 2001-2004 Torrey T. Lyons Copyright (c) 2002-2003 Apple Computer, Inc. Copyright (c) 2004-2005 Alexander Gottwald -Copyright (c) 2002-2007 Apple Inc. +Copyright (c) 2002-2009 Apple Inc. +Copyright (c) 2007 Jeremy Huddleston All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a @@ -2196,6 +1627,8 @@ use or other dealings in this Software without prior written authorization. Copyright (C) 1999,2000 by Eric Sunshine +Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. + All rights reserved. Redistribution and use in source and binary forms, with or without @@ -2274,6 +1707,7 @@ the author(s). Copyright (C) 1996-1999 SciTech Software, Inc. Copyright (C) David Mosberger-Tang Copyright (C) 1999 Egbert Eich +Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, @@ -2360,26 +1794,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright 1994 by Glenn G. Lai -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyr notice and this permission notice appear in -supporting documentation, and that the name of Glenn G. Lai not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -Glenn G. Lai DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR 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. - - Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany Copyright 1992 by David Dawes Copyright 1992 by Jim Tsillas @@ -2453,28 +1867,6 @@ 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 (C) 1996 David S. Miller (davem@redhat.com) -Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) - -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 -JAKUB JELINEK OR DAVID MILLER 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 1997,1998 by UCHIYAMA Yasushi Permission to use, copy, modify, distribute, and sell this software and its @@ -2557,28 +1949,10 @@ 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 © 2006-2007 Keith Packard - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting documentation, and -that the name of the copyright holders not be used in advertising or -publicity pertaining to distribution of the software without specific, -written prior permission. The copyright holders make no representations -about the suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR 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. Copyright 2006 Adam Jackson. +Copyright 2007 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -2597,3 +1971,58 @@ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS 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 © 2007 OpenedHand Ltd + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of OpenedHand Ltd not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. OpenedHand Ltd makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL OpenedHand Ltd BE LIABLE FOR 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. + + +Copyright (c) 1989, 1990, 1993, 1994 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +This code is derived from software contributed to Berkeley by +Michael Rendell of Memorial University of Newfoundland. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. -- cgit v1.2.3 From f3c61377d0fb1f09a18833995556fc9ffd11e097 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 12 May 2009 18:27:09 -0700 Subject: COPYING file updates for git master changes since 1.6 branch Signed-off-by: Alan Coopersmith --- COPYING | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/COPYING b/COPYING index f92d653d9..b2cf8b26c 100644 --- a/COPYING +++ b/COPYING @@ -11,10 +11,11 @@ Copyright © 1998 Egbert Eich Copyright © 2006-2007 Intel Corporation Copyright © 2006 Nokia Corporation Copyright © 2006-2008 Peter Hutterer +Copyright © 2009 NVIDIA Corporation Copyright © 1999 Keith Packard -Copyright © 2007-2008 Red Hat, Inc. -Copyright © 2005-2007 Daniel Stone -Copyright © 2006-2008 Simon Thum +Copyright © 2007-2009 Red Hat, Inc. +Copyright © 2005-2008 Daniel Stone +Copyright © 2006-2009 Simon Thum Copyright © 2006 Luc Verhaegen Permission is hereby granted, free of charge, to any person obtaining a @@ -45,6 +46,7 @@ licenses. Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 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 @@ -68,16 +70,16 @@ be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the XFree86 Project. -Copyright 1997-2003 by The XFree86 Project, Inc. +Copyright 1997 by The XFree86 Project, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting -documentation, and that the names of Orest Zborowski and David Wexelblat +documentation, and that the name of the XFree86 Project, Inc. not be used in advertising or publicity pertaining to distribution of -the software without specific, written prior permission. Orest Zborowski -and David Wexelblat make no representations about the suitability of this +the software without specific, written prior permission. The Xfree86 +Project, Inc. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. @@ -597,7 +599,7 @@ authorization from the X Consortium. Copyright 1998-2000 Precision Insight, Inc., Cedar Park, Texas. Copyright 2000 VA Linux Systems, Inc. -Copyright (c) 2002 Apple Computer, Inc. +Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. Copyright (c) 2003-2004 Torrey T. Lyons. All Rights Reserved. @@ -1001,8 +1003,8 @@ the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -Copyright (C) 2001-2004 Harold L Hunt II -All Rights Reserved. +Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -1280,29 +1282,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -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 1992 by Rich Murphey Copyright 1993 by David Wexelblat -- cgit v1.2.3 From fc3ce861cdab8606610726ce7c53f57d950c2407 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 14 May 2009 11:35:25 +0200 Subject: randr12: Fix calculation of gamma ramp values. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The reciprocal gamma value was missed in the first copy and this mistake was propagated to the second one. Signed-off-by: Michel Dänzer --- hw/xfree86/modes/xf86Crtc.c | 6 +++--- hw/xfree86/modes/xf86RandR12.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 1b241cd33..0ab2f3df9 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -2228,19 +2228,19 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green, red[i] = i << 8; else 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) green[i] = i << 8; else 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) blue[i] = i << 8; else 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. */ diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index f941a3b4a..c71cfe5c3 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -1703,7 +1703,7 @@ gamma_to_ramp(float gamma, CARD16 *ramp, int size) if (gamma == 1.0) ramp[i] = i << 8; 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); } } -- cgit v1.2.3 From 2c1190f888515292de01e60fe74657c34b99fd9e Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 14 May 2009 11:39:16 +0200 Subject: randr12: Initialize and keep track of updates to VidMode extension gamma value. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way clients querying the gamma value via the VidMode extension at least get the last value set via the same, rather than always something bogus. Signed-off-by: Michel Dänzer --- hw/xfree86/common/xf86Helper.c | 10 +++++----- hw/xfree86/modes/xf86RandR12.c | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 0db77178a..61b3390e2 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -919,11 +919,6 @@ Bool xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma) { 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 xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC); #endif @@ -955,6 +950,11 @@ xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma) scrp->gamma.green = 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, "Using gamma correction (%.1f, %.1f, %.1f)\n", scrp->gamma.red, scrp->gamma.green, scrp->gamma.blue); diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index c71cfe5c3..1e3b70c09 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -1740,6 +1740,8 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma) xfree(points); + pScrn->gamma = gamma; + return Success; } -- cgit v1.2.3 From 2075d4bf9e53b8baef0b919da6c44771220cd4a5 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Thu, 14 May 2009 11:46:41 +0200 Subject: glx: If a destroyed window is bound to the current context, make it not current. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoids subsequent crashes due to stale pointers to the DrawableRec, see https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 and previous comments. Signed-off-by: Michel Dänzer --- glx/glxext.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/glx/glxext.c b/glx/glxext.c index 93391e9fd..6bc7bef8e 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -126,6 +126,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) __GLXcontext *c; for (c = glxAllContexts; c; c = c->next) { + if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) { + (*c->loseCurrent)(c); + __glXFlushContextCache(); + } if (c->drawPriv == glxPriv) c->drawPriv = NULL; if (c->readPriv == glxPriv) -- cgit v1.2.3 From c66cf7b64c7bcb31c81b9fde27cc40c1440753b1 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 14 May 2009 06:53:08 -0400 Subject: Update several of my and/or Red Hat's licenses to standard form. --- COPYING | 70 +------------------------------------ dix/window.c | 29 ++++++++------- hw/xfree86/ddc/interpret_edid.c | 21 +++++------ hw/xfree86/ddc/print_edid.c | 21 +++++------ hw/xfree86/xf8_16bpp/cfb8_16.h | 15 ++++---- hw/xfree86/xf8_16bpp/xf8_16module.c | 15 ++++---- mi/mibstore.c | 21 +++++------ os/backtrace.c | 21 +++++------ 8 files changed, 75 insertions(+), 138 deletions(-) diff --git a/COPYING b/COPYING index b2cf8b26c..09f330e0f 100644 --- a/COPYING +++ b/COPYING @@ -11,6 +11,7 @@ Copyright © 1998 Egbert Eich Copyright © 2006-2007 Intel Corporation Copyright © 2006 Nokia Corporation Copyright © 2006-2008 Peter Hutterer +Copyright © 2006 Adam Jackson Copyright © 2009 NVIDIA Corporation Copyright © 1999 Keith Packard Copyright © 2007-2009 Red Hat, Inc. @@ -498,51 +499,6 @@ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright (c) 2006, Red Hat, Inc. - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -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 -RED HAT 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. - -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 © 2006, 2007 Red Hat, Inc - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without -fee, provided that the above copyright notice appear in all copies -and that both that copyright notice and this permission notice -appear in supporting documentation, and that the name of Red Hat, -Inc not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. Red Hat, Inc makes no representations about the -suitability of this software for any purpose. It is provided "as -is" without express or implied warranty. - -RED HAT, INC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL RED HAT, INC BE LIABLE FOR 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. - - Copyright © 2006 Red Hat, Inc. (C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. All Rights Reserved. @@ -1928,30 +1884,6 @@ 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 2006 Adam Jackson. -Copyright 2007 Red Hat, 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 -on the rights to use, copy, modify, merge, publish, distribute, sub -license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS 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 © 2007 OpenedHand Ltd Permission to use, copy, modify, distribute, and sell this software and its diff --git a/dix/window.c b/dix/window.c index 324ddb71e..df8ac53f7 100644 --- a/dix/window.c +++ b/dix/window.c @@ -2,25 +2,24 @@ Copyright (c) 2006, Red Hat, Inc. -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. +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 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 -RED HAT 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. - -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. +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. Copyright 1987, 1998 The Open Group diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c index c0e3df96c..3edfd1fb5 100644 --- a/hw/xfree86/ddc/interpret_edid.c +++ b/hw/xfree86/ddc/interpret_edid.c @@ -3,22 +3,23 @@ * Copyright 2007 Red Hat, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * them Software is furnished to do so, subject to the following conditions: + * 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 MERCHANTIBILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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. * * interpret_edid.c: interpret a primary EDID block */ diff --git a/hw/xfree86/ddc/print_edid.c b/hw/xfree86/ddc/print_edid.c index 7b6e2989a..e16dcbb9a 100644 --- a/hw/xfree86/ddc/print_edid.c +++ b/hw/xfree86/ddc/print_edid.c @@ -3,22 +3,23 @@ * Copyright 2007 Red Hat, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * them Software is furnished to do so, subject to the following conditions: + * 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 MERCHANTIBILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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. * * print_edid.c: print out all information retrieved from display device */ diff --git a/hw/xfree86/xf8_16bpp/cfb8_16.h b/hw/xfree86/xf8_16bpp/cfb8_16.h index d847a60c1..b6ab955f3 100644 --- a/hw/xfree86/xf8_16bpp/cfb8_16.h +++ b/hw/xfree86/xf8_16bpp/cfb8_16.h @@ -4,9 +4,9 @@ * 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 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 @@ -14,10 +14,11 @@ * * 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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. */ #ifndef _CFB8_16_H diff --git a/hw/xfree86/xf8_16bpp/xf8_16module.c b/hw/xfree86/xf8_16bpp/xf8_16module.c index dd4f011b1..6a4529ae8 100644 --- a/hw/xfree86/xf8_16bpp/xf8_16module.c +++ b/hw/xfree86/xf8_16bpp/xf8_16module.c @@ -4,9 +4,9 @@ * 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 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 @@ -14,10 +14,11 @@ * * 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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_XORG_CONFIG_H diff --git a/mi/mibstore.c b/mi/mibstore.c index ef89a76c7..262b4944d 100644 --- a/mi/mibstore.c +++ b/mi/mibstore.c @@ -2,22 +2,23 @@ * Copyright 2007 Red Hat, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * them Software is furnished to do so, subject to the following conditions: + * 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 MERCHANTIBILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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 diff --git a/os/backtrace.c b/os/backtrace.c index 19ff58d7a..3cfae3e16 100644 --- a/os/backtrace.c +++ b/os/backtrace.c @@ -2,22 +2,23 @@ * Copyright 2008 Red Hat, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * them Software is furnished to do so, subject to the following conditions: + * 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 MERCHANTIBILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS 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. + * 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 -- cgit v1.2.3 From ed9aecf8517bf74e943e3e5dd3ee407524e8f122 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 14 May 2009 06:55:21 -0400 Subject: COPYING: SGI FreeB 1.1 -> SGI FreeB 2.0 --- COPYING | 89 ++++++++++++++--------------------------------------------------- 1 file changed, 19 insertions(+), 70 deletions(-) diff --git a/COPYING b/COPYING index 09f330e0f..e2a71d60d 100644 --- a/COPYING +++ b/COPYING @@ -310,79 +310,28 @@ dealings in this Software without prior written authorization from Digital Equipment Corporation. -Copyright (c) 1993-1997 by Silicon Graphics Computer Systems, Inc. +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. -Permission to use, copy, modify, and distribute this -software and its documentation for any purpose and without -fee is hereby granted, provided that the above copyright -notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting -documentation, and that the name of Silicon Graphics not be -used in advertising or publicity pertaining to distribution -of the software without specific prior written permission. -Silicon Graphics makes no representation about the suitability -of this software for any purpose. It is provided "as is" -without any express or implied warranty. - -SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON -GRAPHICS BE LIABLE FOR 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. +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 including the dates of first publication and +either this permission notice or a reference to +http://oss.sgi.com/projects/FreeB/ +shall be included in all copies or substantial portions of the Software. -License Applicability. Except to the extent portions of this file are -made subject to an alternative license as permitted in the SGI Free -Software License B, Version 1.1 (the "License"), the contents of this -file are subject only to the provisions of the License. You may not use -this file except in compliance with the License. You may obtain a copy -of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 -Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: - -http://oss.sgi.com/projects/FreeB - -Note that, as provided in the License, the Software is distributed on an -"AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS -DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND -CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A -PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - -Original Code. The Original Code is: OpenGL Sample Implementation, -Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, -Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. -Copyright in any portions created by third parties is as indicated -elsewhere herein. All Rights Reserved. - -Additional Notice Provisions: The application programming interfaces -established by SGI in conjunction with the Original Code are The -OpenGL(R) Graphics System: A Specification (Version 1.2.1), released -April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version -1.3), released November 4, 1998; and OpenGL(R) Graphics with the X -Window System(R) (Version 1.3), released October 19, 1998. This software -was created using the OpenGL(R) version 1.2.1 Sample Implementation -published by SGI, but has not been independently verified as being -compliant with the OpenGL(R) version 1.2.1 Specification. - - -The contents of this file are subject to the GLX Public License Version 1.0 -(the "License"). You may not use this file except in compliance with the -License. You may obtain a copy of the License at Silicon Graphics, Inc., -attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 -or at http://www.sgi.com/software/opensource/glx/license.html. - -Software distributed under the License is distributed on an "AS IS" -basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY -IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR -PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific -language governing rights and limitations under the License. - -The Original Software is GLX version 1.2 source code, released February, -1999. The developer of the Original Software is Silicon Graphics, Inc. -Those portions of the Subject Software created by Silicon Graphics, Inc. -are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. +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 +SILICON GRAPHICS, INC. 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 (c) 1994, 1995 Hewlett-Packard Company -- cgit v1.2.3 From 4cc33190ef1a4207c0f8fc74201cdf2568a239c2 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Thu, 14 May 2009 17:01:57 +0200 Subject: xfree86: Add two __FreeBSD_kernel__ checks Debian bug#525475 Reported-by: Petr Salinger Signed-off-by: Julien Cristau --- hw/xfree86/os-support/bus/Pci.h | 3 ++- hw/xfree86/os-support/shared/stdResource.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h index 7623e9738..79b38f015 100644 --- a/hw/xfree86/os-support/bus/Pci.h +++ b/hw/xfree86/os-support/bus/Pci.h @@ -168,7 +168,8 @@ #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__) #define ARCH_PCI_INIT bsdPciInit #endif diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c index a4c162d97..9db349bc0 100644 --- a/hw/xfree86/os-support/shared/stdResource.c +++ b/hw/xfree86/os-support/shared/stdResource.c @@ -43,7 +43,8 @@ /* Avoid Imakefile changes */ #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__) #define xf86StdAccResFromOS xf86AccResFromOS #endif -- cgit v1.2.3 From c1bbac2708bbccbec01cecba39cdf2b8160c1dc3 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 14 May 2009 16:00:41 -0400 Subject: Fix mem_barrier() on Alpha Some clean up (da086901c6579e41b28b1418fa12ebb82744fc87) went a bit too far and removed the needed mem_barrier macro on Alpha. This re-adds it. --- hw/xfree86/common/compiler.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h index 2601693ca..40b463efb 100644 --- a/hw/xfree86/common/compiler.h +++ b/hw/xfree86/common/compiler.h @@ -357,7 +357,8 @@ static __inline__ void stw_u(unsigned long r5, unsigned short * r11) # 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__) -- cgit v1.2.3 From 850675d4de4373e5df95507dbf2cd9affaaf54bc Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Fri, 15 May 2009 15:48:37 +0200 Subject: EXA: Take GC client clip type into account for migration. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18950 . Signed-off-by: Michel Dänzer --- exa/exa_accel.c | 35 +++++++++++++++++------------------ exa/exa_priv.h | 10 ++++++---- exa/exa_render.c | 2 +- exa/exa_unaccel.c | 2 +- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/exa/exa_accel.c b/exa/exa_accel.c index d284ff560..39f343784 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -406,7 +406,8 @@ exaHWCopyNtoN (DrawablePtr pSrcDrawable, xfree(rects); if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask, - pGC->fillStyle, pGC->alu)) { + pGC->fillStyle, pGC->alu, + pGC->clientClipType)) { dstregion = REGION_CREATE(pScreen, NullBox, 0); REGION_COPY(pScreen, dstregion, srcregion); 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, - Pixel pixel, CARD32 planemask, CARD32 alu); + Pixel pixel, CARD32 planemask, CARD32 alu, + unsigned int clientClipType); static void exaPolyFillRect(DrawablePtr pDrawable, @@ -787,10 +789,11 @@ exaPolyFillRect(DrawablePtr pDrawable, if (((pGC->fillStyle == FillSolid || pGC->tileIsPixel) && exaFillRegionSolid(pDrawable, pReg, pGC->fillStyle == FillSolid ? pGC->fgPixel : pGC->tile.pixel, pGC->planemask, - pGC->alu)) || + pGC->alu, pGC->clientClipType)) || (pGC->fillStyle == FillTiled && !pGC->tileIsPixel && exaFillRegionTiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg, - pGC->planemask, pGC->alu))) { + pGC->planemask, pGC->alu, + pGC->clientClipType))) { goto out; } } @@ -952,11 +955,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) } static Bool -exaFillRegionSolid (DrawablePtr pDrawable, - RegionPtr pRegion, - Pixel pixel, - CARD32 planemask, - CARD32 alu) +exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel, + CARD32 planemask, CARD32 alu, unsigned int clientClipType) { ExaScreenPriv(pDrawable->pScreen); PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable); @@ -969,7 +969,8 @@ exaFillRegionSolid (DrawablePtr pDrawable, pixmaps[0].as_src = FALSE; pixmaps[0].pPix = pPixmap; pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid, - alu) ? NULL : pRegion; + alu, clientClipType) + ? NULL : pRegion; exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff); REGION_TRANSLATE(pScreen, pRegion, xoff, yoff); @@ -1032,12 +1033,9 @@ out: * Based on fbFillRegionTiled(), fbTile(). */ Bool -exaFillRegionTiled (DrawablePtr pDrawable, - RegionPtr pRegion, - PixmapPtr pTile, - DDXPointPtr pPatOrg, - CARD32 planemask, - CARD32 alu) +exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, + DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu, + unsigned int clientClipType) { ExaScreenPriv(pDrawable->pScreen); PixmapPtr pPixmap; @@ -1060,13 +1058,14 @@ exaFillRegionTiled (DrawablePtr pDrawable, if (tileWidth == 1 && tileHeight == 1) return exaFillRegionSolid(pDrawable, pRegion, exaGetPixmapFirstPixel (pTile), planemask, - alu); + alu, clientClipType); pixmaps[0].as_dst = TRUE; pixmaps[0].as_src = FALSE; pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable); pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled, - alu) ? NULL : pRegion; + alu, clientClipType) + ? NULL : pRegion; pixmaps[1].as_dst = FALSE; pixmaps[1].as_src = TRUE; pixmaps[1].pPix = pTile; diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 9efbbc98c..874e7e987 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -415,11 +415,12 @@ ExaCheckAddTraps (PicturePtr pPicture, static _X_INLINE Bool 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 || - !EXA_PM_IS_SOLID(pDrawable, planemask)); + clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask)); } void @@ -427,7 +428,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); Bool exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, - DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu); + DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu, + unsigned int clientClipType); void exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h, diff --git a/exa/exa_render.c b/exa/exa_render.c index a9344977f..14d710b57 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -945,7 +945,7 @@ exaComposite(CARD8 op, ret = exaFillRegionTiled(pDst->pDrawable, ®ion, (PixmapPtr)pSrc->pDrawable, - &patOrg, FB_ALLONES, GXcopy); + &patOrg, FB_ALLONES, GXcopy, CT_NONE); REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c index 4279c877c..0d53b67d8 100644 --- a/exa/exa_unaccel.c +++ b/exa/exa_unaccel.c @@ -106,7 +106,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, EXA_GC_PROLOGUE(pGC); EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable))); if (exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle, - pGC->alu)) + pGC->alu, pGC->clientClipType)) exaPrepareAccess (pDrawable, EXA_PREPARE_DEST); else exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pExaPixmap->pDamage ? -- cgit v1.2.3 From 7c8327f0a75087a85864256a9cea80dd4b86def5 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Fri, 15 May 2009 15:48:37 +0200 Subject: EXA: Always damage glyph cache pixmap manually after uploading a glyph. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michel Dänzer --- exa/exa_glyphs.c | 73 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c index d2a0168b4..b8d2e52bf 100644 --- a/exa/exa_glyphs.c +++ b/exa/exa_glyphs.c @@ -354,8 +354,14 @@ exaGlyphCacheHashRemove(ExaGlyphCachePtr cache, * is to use the UploadToScreen() driver hook; this allows us to * pipeline glyph uploads and to avoid creating offscreen pixmaps for * 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, ExaGlyphCachePtr cache, int pos, @@ -369,16 +375,16 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen, ExaMigrationRec pixmaps[1]; if (!pExaScr->info->UploadToScreen || pExaScr->swappedOut || pExaPixmap->accel_blocked) - return FALSE; + goto composite; /* If the glyph pixmap is already uploaded, no point in doing * things this way */ if (exaPixmapIsOffscreen(pGlyphPixmap)) - return FALSE; + goto composite; /* UploadToScreen only works if bpp match */ if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel) - return FALSE; + goto composite; /* cache pixmap must be offscreen. */ pixmaps[0].as_dst = TRUE; @@ -388,26 +394,37 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen, exaDoMigration (pixmaps, 1, TRUE); if (!exaPixmapIsOffscreen(pCachePixmap)) - return FALSE; + goto composite; /* CACHE_{X,Y} are in pixmap coordinates, no need for cache{X,Y}off */ - if (!pExaScr->info->UploadToScreen(pCachePixmap, - CACHE_X(pos), - CACHE_Y(pos), - pGlyph->info.width, - pGlyph->info.height, - (char *)pExaPixmap->sys_ptr, - pExaPixmap->sys_pitch)) - return FALSE; - - /* This pixmap should never be bound to a window, so no need to offset coordinates. */ + if (pExaScr->info->UploadToScreen(pCachePixmap, + CACHE_X(pos), + CACHE_Y(pos), + pGlyph->info.width, + pGlyph->info.height, + (char *)pExaPixmap->sys_ptr, + pExaPixmap->sys_pitch)) + goto damage; + +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, CACHE_X(pos), CACHE_Y(pos), - CACHE_X(pos) + pGlyph->info.width, - CACHE_Y(pos) + pGlyph->info.height); - - return TRUE; + CACHE_X(pos) + cache->glyphWidth, + CACHE_Y(pos) + cache->glyphHeight); } static ExaGlyphCacheResult @@ -483,23 +500,7 @@ exaGlyphCacheBufferGlyph(ScreenPtr pScreen, cache->evictionPosition = rand() % cache->size; } - /* Now actually upload the glyph into the cache picture; if - * 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); - } - + exaGlyphCacheUploadGlyph(pScreen, cache, pos, pGlyph); } buffer->mask = cache->picture; -- cgit v1.2.3 From 2be5eecb4b0f30b9c55d12521415edbb88c1f8fd Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Fri, 15 May 2009 17:29:32 +0200 Subject: xfree86: add edid quirk for Samsung Syncmaster 2333HD It reports vertical size in cm in the detailed mode. X.Org bug#21750 Reported-by: Peter Poklop Signed-off-by: Julien Cristau --- hw/xfree86/modes/xf86EdidModes.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index 9e6a666f7..4340edd1f 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -160,6 +160,11 @@ static Bool quirk_detailed_v_in_cm (int scrnIndex, xf86MonPtr DDC) DDC->vendor.prod_id == 47360) return TRUE; + /* Bug #21750: Samsung Syncmaster 2333HD */ + if (memcmp (DDC->vendor.name, "SAM", 4) == 0 && + DDC->vendor.prod_id == 1157) + return TRUE; + return FALSE; } -- cgit v1.2.3 From 94c5093c8bc803d0b14429b5a4d07ae46da865cc Mon Sep 17 00:00:00 2001 From: David Marx Date: Wed, 13 May 2009 17:53:30 -0700 Subject: Solaris: Make sure non-inline versions of asm routines end with ret statements Signed-off-by: Alan Coopersmith --- hw/xfree86/os-support/solaris/solaris-amd64.S | 2 +- hw/xfree86/os-support/solaris/solaris-ia32.S | 2 +- hw/xfree86/os-support/solaris/solaris-sparcv8plus.S | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/os-support/solaris/solaris-amd64.S b/hw/xfree86/os-support/solaris/solaris-amd64.S index 9f5e58cb0..4a0e0f48a 100644 --- a/hw/xfree86/os-support/solaris/solaris-amd64.S +++ b/hw/xfree86/os-support/solaris/solaris-amd64.S @@ -32,7 +32,7 @@ #define _ASM #include #define FUNCTION_START(f,n) ENTRY(f) -#define FUNCTION_END(f) SET_SIZE(f) +#define FUNCTION_END(f) ret; SET_SIZE(f) #endif FUNCTION_START(inb,4) diff --git a/hw/xfree86/os-support/solaris/solaris-ia32.S b/hw/xfree86/os-support/solaris/solaris-ia32.S index e2d9cf60a..280154bab 100644 --- a/hw/xfree86/os-support/solaris/solaris-ia32.S +++ b/hw/xfree86/os-support/solaris/solaris-ia32.S @@ -32,7 +32,7 @@ #define _ASM #include #define FUNCTION_START(f,n) ENTRY(f) -#define FUNCTION_END(f) SET_SIZE(f) +#define FUNCTION_END(f) ret; SET_SIZE(f) #endif FUNCTION_START(inb,4) diff --git a/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S b/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S index fb23942ef..dbaa0308b 100644 --- a/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S +++ b/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S @@ -33,7 +33,7 @@ #define _ASM #include #define FUNCTION_START(f,n) ENTRY(f) -#define FUNCTION_END(f) SET_SIZE(f) +#define FUNCTION_END(f) retl; nop; SET_SIZE(f) #endif /* Converted from common/compiler.h gcc inline format to Sun cc inline -- cgit v1.2.3 From 8609a4e883e917d1652fbe810108de99bc89713f Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 15 May 2009 11:22:32 -0700 Subject: Correct some Sun license notices to Sun's standard X11 license format Signed-off-by: Alan Coopersmith --- COPYING | 21 --------------------- composite/compalloc.c | 41 ++++++++++++++++++++++++----------------- composite/compext.c | 41 ++++++++++++++++++++++++----------------- composite/compinit.c | 41 ++++++++++++++++++++++++----------------- composite/compint.h | 41 ++++++++++++++++++++++++----------------- composite/compoverlay.c | 41 ++++++++++++++++++++++++----------------- composite/compwindow.c | 41 ++++++++++++++++++++++++----------------- xfixes/cursor.c | 41 ++++++++++++++++++++++++----------------- xfixes/xfixes.c | 41 ++++++++++++++++++++++++----------------- xfixes/xfixesint.h | 41 ++++++++++++++++++++++++----------------- 10 files changed, 216 insertions(+), 174 deletions(-) diff --git a/COPYING b/COPYING index e2a71d60d..5dc8c1dfb 100644 --- a/COPYING +++ b/COPYING @@ -188,27 +188,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright © 2006 Sun Microsystems - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Sun Microsystems not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Sun Microsystems makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. - - Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts. Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts. Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England. diff --git a/composite/compalloc.c b/composite/compalloc.c index 1bac9a417..3f427dbe1 100644 --- a/composite/compalloc.c +++ b/composite/compalloc.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/composite/compext.c b/composite/compext.c index 829c90fbf..608f29a8a 100644 --- a/composite/compext.c +++ b/composite/compext.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/composite/compinit.c b/composite/compinit.c index ee269afa0..dfc3929ee 100644 --- a/composite/compinit.c +++ b/composite/compinit.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/composite/compint.h b/composite/compint.h index fd2fea153..852c277c2 100644 --- a/composite/compint.h +++ b/composite/compint.h @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/composite/compoverlay.c b/composite/compoverlay.c index 68b4f1288..e213ce71e 100644 --- a/composite/compoverlay.c +++ b/composite/compoverlay.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/composite/compwindow.c b/composite/compwindow.c index 577fa733e..4267a51c7 100644 --- a/composite/compwindow.c +++ b/composite/compwindow.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2003 Keith Packard * diff --git a/xfixes/cursor.c b/xfixes/cursor.c index 6fa2dff8e..534c82605 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2002 Keith Packard * diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c index 3b8ed5a13..25c92ea93 100644 --- a/xfixes/xfixes.c +++ b/xfixes/xfixes.c @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2002 Keith Packard * diff --git a/xfixes/xfixesint.h b/xfixes/xfixesint.h index 04117a46c..d7c53ee07 100644 --- a/xfixes/xfixesint.h +++ b/xfixes/xfixesint.h @@ -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 - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Sun Microsystems not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Sun Microsystems makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. + * 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. * - * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR 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. + * 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. * * Copyright © 2002 Keith Packard * -- cgit v1.2.3 From c1d7deca9281ba1df0df1abcea1fe7f841b10ff9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 12 May 2009 21:24:07 +1000 Subject: mi: un-deprecate miPointerWarpCursor This function was deprecated in ef68273f5bdb27a492ec0b69548ec4fbede46c08 because it didn't take a device argument. The device argument was added in 1c7568b8a1417257fa67c7fca69aa253099b9461 though, so the deprecation is obsolete. Signed-off-by: Peter Hutterer --- mi/mipointer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mi/mipointer.h b/mi/mipointer.h index 8b13f0848..7dc1ae7cc 100644 --- a/mi/mipointer.h +++ b/mi/mipointer.h @@ -108,7 +108,7 @@ extern _X_EXPORT void miPointerWarpCursor( ScreenPtr /*pScreen*/, int /*x*/, int /*y*/ -) _X_DEPRECATED; +); /* Deprecated in favour of miPointerSetPosition. */ extern _X_EXPORT void miPointerAbsoluteCursor( -- cgit v1.2.3 From 6f9e22049862ee9ac7f604411d005d8bb1b2dd1c Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 11 May 2009 12:51:40 +1000 Subject: dix: ensure Activate/DeactivateGrab has a valid value. Xephyr doesn't manually set Activate/DeactivateGrab for new devices, resulting in a NULL-pointer dereference later when a grab is activated. Avoid the segfault by ensuring that the pointer is always valid. Signed-off-by: Peter Hutterer --- dix/devices.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dix/devices.c b/dix/devices.c index afe340b2f..6f464e7ca 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -224,6 +224,8 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart) /* device grab defaults */ dev->deviceGrab.grabTime = currentTime; + dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab; + dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab; dev->coreEvents = TRUE; -- cgit v1.2.3 From b1b5ec45c1cb650ccb8c659218f9481379c777d9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 11 May 2009 12:53:56 +1000 Subject: kdrive: set Activate/Deactivate grab for input devices (#21591) X.Org Bug 21591 --- hw/kdrive/src/kinput.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index 7ed36017f..0d216a9b8 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -915,6 +915,8 @@ KdAddKeyboard (KdKeyboardInfo *ki) return !Success; } + ki->dixdev->deviceGrab.ActivateGrab = ActivateKeyboardGrab; + ki->dixdev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab; RegisterOtherDevice(ki->dixdev); #ifdef DEBUG @@ -984,6 +986,8 @@ KdAddPointer (KdPointerInfo *pi) return BadDevice; } + pi->dixdev->deviceGrab.ActivateGrab = ActivatePointerGrab; + pi->dixdev->deviceGrab.DeactivateGrab = DeactivatePointerGrab; RegisterOtherDevice(pi->dixdev); for (prev = &kdPointers; *prev; prev = &(*prev)->next); -- cgit v1.2.3 From 2f6253376df45e508284ff7766b186cfc7fb56d6 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Sat, 9 May 2009 10:33:20 +1000 Subject: xfree86: Remove superfluous ifdef DEBUG checks. Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Bus.c | 46 ++++++---------------- hw/xfree86/common/xf86Config.c | 12 ++---- hw/xfree86/common/xf86Events.c | 20 +++------- hw/xfree86/common/xf86Helper.c | 46 ++++++---------------- hw/xfree86/common/xf86Init.c | 18 +++------ hw/xfree86/common/xf86Mode.c | 16 ++------ hw/xfree86/common/xf86VidMode.c | 18 +++------ hw/xfree86/common/xf86fbman.c | 36 ++++++----------- hw/xfree86/common/xf86sbusBus.c | 14 ++----- hw/xfree86/os-support/linux/int10/linux.c | 36 +++++------------ .../os-support/linux/int10/vm86/linux_vm86.c | 4 +- hw/xfree86/os-support/linux/lnx_acpi.c | 14 ++----- hw/xfree86/os-support/linux/lnx_apm.c | 14 ++----- hw/xfree86/os-support/linux/lnx_axp.c | 12 ++---- hw/xfree86/os-support/linux/lnx_font.c | 12 ++---- hw/xfree86/os-support/linux/lnx_video.c | 20 +++------- hw/xfree86/os-support/sco/sco_video.c | 8 +--- hw/xfree86/os-support/shared/bios_mmap.c | 4 +- hw/xfree86/os-support/shared/posix_tty.c | 21 ++++------ hw/xfree86/ramdac/TI.c | 4 +- hw/xfree86/vbe/vbeModes.c | 4 +- hw/xfree86/vgahw/vgaHW.c | 40 ++++++------------- 22 files changed, 118 insertions(+), 301 deletions(-) diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c index 8040f580b..8382d911a 100644 --- a/hw/xfree86/common/xf86Bus.c +++ b/hw/xfree86/common/xf86Bus.c @@ -639,9 +639,7 @@ xf86EnableAccess(ScrnInfoPtr pScrn) register xf86AccessPtr pAcc; EntityAccessPtr tmp; -#ifdef DEBUG - ErrorF("Enable access %i\n",pScrn->scrnIndex); -#endif + DebugF("Enable access %i\n",pScrn->scrnIndex); /* Entity is not under access control or currently enabled */ if (!pScrn->access) { @@ -844,10 +842,8 @@ checkConflictBlock(resRange *range, resPtr pRes) case ResBlock: if (range->rBegin < pRes->block_end && range->rEnd > pRes->block_begin) { -#ifdef DEBUG - ErrorF("b-b conflict w: %lx %lx\n", + DebugF("b-b conflict w: %lx %lx\n", pRes->block_begin,pRes->block_end); -#endif return pRes->block_end < range->rEnd ? pRes->block_end : range->rEnd; } @@ -856,12 +852,10 @@ checkConflictBlock(resRange *range, resPtr pRes) if (pRes->sparse_base > range->rEnd) return 0; val = (~pRes->sparse_mask | pRes->sparse_base) & getMask(range->rEnd); -#ifdef DEBUG - ErrorF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ," + DebugF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ," "val = 0x%lx\n", pRes->sparse_base, pRes->sparse_mask, range->rBegin, range->rEnd, val); -#endif i = sizeof(memType) * 8; tmp = prev = pRes->sparse_base; @@ -873,11 +867,9 @@ checkConflictBlock(resRange *range, resPtr pRes) prev = tmp; } if (tmp >= range->rBegin) { -#ifdef DEBUG - ErrorF("conflict found at: 0x%lx\n",tmp); - ErrorF("b-d conflict w: %lx %lx\n", + DebugF("conflict found at: 0x%lx\n",tmp); + DebugF("b-d conflict w: %lx %lx\n", pRes->sparse_base,pRes->sparse_mask); -#endif return tmp; } else @@ -902,10 +894,8 @@ checkConflictSparse(resRange *range, resPtr pRes) case ResSparse: tmp = pRes->sparse_mask & range->rMask; if ((tmp & pRes->sparse_base) == (tmp & range->rBase)) { -#ifdef DEBUG - ErrorF("s-b conflict w: %lx %lx\n", + DebugF("s-b conflict w: %lx %lx\n", pRes->sparse_base,pRes->sparse_mask); -#endif return pRes->sparse_mask; } return 0; @@ -918,9 +908,7 @@ checkConflictSparse(resRange *range, resPtr pRes) tmp = prev = range->rBase; while (i) { -#ifdef DEBUG - ErrorF("tmp = 0x%lx\n",tmp); -#endif + DebugF("tmp = 0x%lx\n",tmp); tmp |= 1<< (--i) & val; if (tmp > pRes->block_end) tmp = prev; @@ -947,11 +935,9 @@ checkConflictSparse(resRange *range, resPtr pRes) m_mask = mask > m_mask ? mask : m_mask; base = base + mask + 1; } -#ifdef DEBUG - ErrorF("conflict found at: 0x%lx\n",tmp); - ErrorF("b-b conflict w: %lx %lx\n", + DebugF("conflict found at: 0x%lx\n",tmp); + DebugF("b-b conflict w: %lx %lx\n", pRes->block_begin,pRes->block_end); -#endif return ~m_mask; } } @@ -1557,12 +1543,10 @@ xf86EnterServerState(xf86State state) * We take care not to call xf86BlockSIGIO() twice. */ SetSIGIOForState(state); -#ifdef DEBUG if (state == SETUP) - ErrorF("Entering SETUP state\n"); + DebugF("Entering SETUP state\n"); else - ErrorF("Entering OPERATING state\n"); -#endif + DebugF("Entering OPERATING state\n"); /* When servicing a dumb framebuffer we don't need to do anything */ if (doFramebufferMode) return; @@ -1620,10 +1604,8 @@ xf86EnterServerState(xf86State state) xf86Screens[i]->busAccess = NULL; } -#ifdef DEBUG if (xf86Screens[i]->busAccess) - ErrorF("Screen %i setting vga route\n",i); -#endif + DebugF("Screen %i setting vga route\n",i); switch (rt) { case MEM_IO: xf86MsgVerb(X_INFO, 3, "Screen %i shares mem & io resources\n",i); @@ -1967,9 +1949,7 @@ xf86PostScreenInit(void) return; } -#ifdef DEBUG - ErrorF("PostScreenInit generation: %i\n",serverGeneration); -#endif + DebugF("PostScreenInit generation: %i\n",serverGeneration); if (serverGeneration == 1) { checkRoutingForScreens(OPERATING); for (i=0; ilist.next; } -#ifdef DEBUG - ErrorF("Found %d screens in the layout section %s", + DebugF("Found %d screens in the layout section %s", count, conf_layout->lay_identifier); -#endif if (!count) /* alloc enough storage even if no screen is specified */ count = 1; @@ -1678,10 +1676,8 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, count++; idp = (XF86ConfInactivePtr)idp->list.next; } -#ifdef DEBUG - ErrorF("Found %d inactive devices in the layout section %s\n", + DebugF("Found %d inactive devices in the layout section %s\n", count, conf_layout->lay_identifier); -#endif gdp = xnfalloc((count + 1) * sizeof(GDevRec)); gdp[count].identifier = NULL; idp = conf_layout->lay_inactive_lst; @@ -1703,10 +1699,8 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout, count++; irp = (XF86ConfInputrefPtr)irp->list.next; } -#ifdef DEBUG - ErrorF("Found %d input devices in the layout section %s\n", + DebugF("Found %d input devices in the layout section %s\n", count, conf_layout->lay_identifier); -#endif indp = xnfcalloc((count + 1), sizeof(IDevPtr)); indp[count] = NULL; irp = conf_layout->lay_input_lst; diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index aa818c358..e9b4dfe60 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -183,9 +183,7 @@ ProcessInputEvents (void) void xf86ProcessActionEvent(ActionEvent action, void *arg) { -#ifdef DEBUG - ErrorF("ProcessActionEvent(%d,%x)\n", (int) action, arg); -#endif + DebugF("ProcessActionEvent(%d,%x)\n", (int) action, arg); switch (action) { case ACTION_TERMINATE: if (!xf86Info.dontZap) { @@ -429,9 +427,7 @@ xf86VTSwitch(void) InputInfoPtr pInfo; IHPtr ih; -#ifdef DEBUG - ErrorF("xf86VTSwitch()\n"); -#endif + DebugF("xf86VTSwitch()\n"); #ifdef XFreeXDGA if(!DGAVTSwitch()) @@ -444,10 +440,8 @@ xf86VTSwitch(void) */ if (xf86Screens[0]->vtSema) { -#ifdef DEBUG - ErrorF("xf86VTSwitch: Leaving, xf86Exiting is %s\n", + DebugF("xf86VTSwitch: Leaving, xf86Exiting is %s\n", BOOLTOSTRING((dispatchException & DE_TERMINATE) ? TRUE : FALSE)); -#endif #ifdef DPMSExtension if (DPMSPowerLevel != DPMSModeOn) DPMSSet(serverClient, DPMSModeOn); @@ -483,9 +477,7 @@ xf86VTSwitch(void) * switch failed */ -#ifdef DEBUG - ErrorF("xf86VTSwitch: Leave failed\n"); -#endif + DebugF("xf86VTSwitch: Leave failed\n"); prevSIGIO = xf86BlockSIGIO(); xf86AccessEnter(); xf86EnterServerState(SETUP); @@ -534,9 +526,7 @@ xf86VTSwitch(void) } } else { -#ifdef DEBUG - ErrorF("xf86VTSwitch: Entering\n"); -#endif + DebugF("xf86VTSwitch: Entering\n"); if (!xf86VTSwitchTo()) return; prevSIGIO = xf86BlockSIGIO(); diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 61b3390e2..441efb098 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -212,15 +212,13 @@ xf86AllocateScreen(DriverPtr drv, int flags) xf86Screens[i]->CurrentAccess = &xf86CurrentAccess; xf86Screens[i]->resourceType = MEM_IO; -#ifdef DEBUG /* OOps -- What's this ? */ - ErrorF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n", + DebugF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n", i, xf86Screens[i]->pScreen ); if ( NULL != xf86Screens[i]->pScreen ) { - ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", + DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", i, xf86Screens[i]->pScreen->CreateWindow ); } -#endif xf86Screens[i]->DriverFunc = drv->driverFunc; @@ -1735,9 +1733,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID, } -#ifdef DEBUG - ErrorF("%s instances found: %d\n", driverName, allocatedInstances); -#endif + DebugF("%s instances found: %d\n", driverName, allocatedInstances); /* * Check for devices that need duplicated instances. This is required @@ -1820,9 +1816,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID, instances[i].dev = dev; } } -#ifdef DEBUG - ErrorF("%s instances found: %d\n", driverName, numClaimedInstances); -#endif + DebugF("%s instances found: %d\n", driverName, numClaimedInstances); /* * Now check that a chipset or chipID override in the device section * is valid. Chipset has precedence over chipID. @@ -1926,11 +1920,9 @@ xf86MatchPciInstances(const char *driverName, int vendorID, if (instances[i].screen == 0 && !xf86CheckPciSlot( pPci )) continue; -#ifdef DEBUG - ErrorF("%s: card at %d:%d:%d is claimed by a Device section\n", + DebugF("%s: card at %d:%d:%d is claimed by a Device section\n", driverName, pPci->bus, pPci->dev, pPci->func); -#endif - + /* Allocate an entry in the lists to be returned */ numFound++; retEntities = xnfrealloc(retEntities, numFound * sizeof(int)); @@ -2621,10 +2613,8 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, int i; Bool existing = FALSE; -#ifdef DEBUG - ErrorF("xf86RegisterRootWindowProperty(%d, %ld, %ld, %d, %ld, %p)\n", + DebugF("xf86RegisterRootWindowProperty(%d, %ld, %ld, %d, %ld, %p)\n", ScrnIndex, property, type, format, len, value); -#endif if (ScrnIndex<0 || ScrnIndex>=xf86NumScreens) { return(BadMatch); @@ -2660,15 +2650,11 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, pNewProp->size = len; pNewProp->data = value; -#ifdef DEBUG - ErrorF("new property filled\n"); -#endif + DebugF("new property filled\n"); if (NULL==xf86RegisteredPropertiesTable) { -#ifdef DEBUG - ErrorF("creating xf86RegisteredPropertiesTable[] size %d\n", + DebugF("creating xf86RegisteredPropertiesTable[] size %d\n", xf86NumScreens); -#endif if ( NULL==(xf86RegisteredPropertiesTable=(RootWinPropPtr*)xnfcalloc(sizeof(RootWinProp),xf86NumScreens) )) { return(BadAlloc); } @@ -2677,12 +2663,10 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, } } -#ifdef DEBUG - ErrorF("xf86RegisteredPropertiesTable %p\n", + DebugF("xf86RegisteredPropertiesTable %p\n", (void *)xf86RegisteredPropertiesTable); - ErrorF("xf86RegisteredPropertiesTable[%d] %p\n", + DebugF("xf86RegisteredPropertiesTable[%d] %p\n", ScrnIndex, (void *)xf86RegisteredPropertiesTable[ScrnIndex]); -#endif if (!existing) { if ( xf86RegisteredPropertiesTable[ScrnIndex] == NULL) { @@ -2690,17 +2674,13 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type, } else { pRegProp = xf86RegisteredPropertiesTable[ScrnIndex]; while (pRegProp->next != NULL) { -#ifdef DEBUG - ErrorF("- next %p\n", (void *)pRegProp); -#endif + DebugF("- next %p\n", (void *)pRegProp); pRegProp = pRegProp->next; } pRegProp->next = pNewProp; } } -#ifdef DEBUG - ErrorF("xf86RegisterRootWindowProperty succeeded\n"); -#endif + DebugF("xf86RegisterRootWindowProperty succeeded\n"); return(Success); } diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index cf28ae73e..c4e5898ae 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -316,9 +316,7 @@ xf86CreateRootWindow(WindowPtr pWin) CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); -#ifdef DEBUG - ErrorF("xf86CreateRootWindow(%p)\n", pWin); -#endif + DebugF("xf86CreateRootWindow(%p)\n", pWin); if ( pScreen->CreateWindow != xf86CreateRootWindow ) { /* Can't find hook we are hung on */ @@ -365,9 +363,7 @@ xf86CreateRootWindow(WindowPtr pWin) } } -#ifdef DEBUG - ErrorF("xf86CreateRootWindow() returns %d\n", ret); -#endif + DebugF("xf86CreateRootWindow() returns %d\n", ret); return (ret); } @@ -471,10 +467,8 @@ probe_devices_from_device_sections(DriverPtr drvp) if ( (devList[i]->screen == 0) && !xf86CheckPciSlot( pPci ) ) continue; -#ifdef DEBUG - ErrorF("%s: card at %d:%d:%d is claimed by a Device section\n", + DebugF("%s: card at %d:%d:%d is claimed by a Device section\n", drvp->driverName, pPci->bus, pPci->dev, pPci->func); -#endif /* Allocate an entry in the lists to be returned */ entry = xf86ClaimPciSlot(pPci, drvp, device_id, @@ -1246,12 +1240,10 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) FatalError("AddScreen/ScreenInit failed for driver %d\n", i); } -#ifdef DEBUG - ErrorF("InitOutput - xf86Screens[%d]->pScreen = %p\n", + DebugF("InitOutput - xf86Screens[%d]->pScreen = %p\n", i, xf86Screens[i]->pScreen ); - ErrorF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", + DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n", i, xf86Screens[i]->pScreen->CreateWindow ); -#endif dixSetPrivate(&screenInfo.screens[scr_index]->devPrivates, xf86CreateRootWindowKey, diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c index 522d3c28b..6dcebe15e 100644 --- a/hw/xfree86/common/xf86Mode.c +++ b/hw/xfree86/common/xf86Mode.c @@ -654,10 +654,8 @@ xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor) return MODE_ERROR; } -#ifdef DEBUG - ErrorF("xf86CheckModeForMonitor(%p %s, %p %s)\n", + DebugF("xf86CheckModeForMonitor(%p %s, %p %s)\n", mode, mode->name, monitor, monitor->id); -#endif /* Some basic mode validity checks */ if (0 >= mode->HDisplay || mode->HDisplay > mode->HSyncStart || @@ -808,10 +806,8 @@ xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, return MODE_ERROR; } -#ifdef DEBUG - ErrorF("xf86InitialCheckModeForDriver(%p, %p %s, %p, 0x%x, %d, %d, %d)\n", + DebugF("xf86InitialCheckModeForDriver(%p, %p %s, %p, 0x%x, %d, %d, %d)\n", scrp, mode, mode->name , clockRanges, strategy, maxPitch, virtualX, virtualY); -#endif /* Some basic mode validity checks */ if (0 >= mode->HDisplay || mode->HDisplay > mode->HSyncStart || @@ -1210,14 +1206,12 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes, range vrefresh[MAX_VREFRESH]; Bool inferred_virtual = FALSE; -#ifdef DEBUG - ErrorF("xf86ValidateModes(%p, %p, %p, %p,\n\t\t %p, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x)\n", + DebugF("xf86ValidateModes(%p, %p, %p, %p,\n\t\t %p, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x)\n", scrp, availModes, modeNames, clockRanges, linePitches, minPitch, maxPitch, pitchInc, minHeight, maxHeight, virtualX, virtualY, apertureSize, strategy ); -#endif /* Some sanity checking */ if (scrp == NULL || scrp->name == NULL || !scrp->monitor || @@ -1860,15 +1854,13 @@ xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags) do { xf86SetModeCrtc(p, adjustFlags); -#ifdef DEBUG - ErrorF("%sMode %s: %d (%d) %d %d (%d) %d %d (%d) %d %d (%d) %d\n", + DebugF("%sMode %s: %d (%d) %d %d (%d) %d %d (%d) %d %d (%d) %d\n", (p->type & M_T_DEFAULT) ? "Default " : "", p->name, p->CrtcHDisplay, p->CrtcHBlankStart, p->CrtcHSyncStart, p->CrtcHSyncEnd, p->CrtcHBlankEnd, p->CrtcHTotal, p->CrtcVDisplay, p->CrtcVBlankStart, p->CrtcVSyncStart, p->CrtcVSyncEnd, p->CrtcVBlankEnd, p->CrtcVTotal); -#endif p = p->next; } while (p != NULL && p != scrp->modes); } diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c index d855bd1a8..49b86e73a 100644 --- a/hw/xfree86/common/xf86VidMode.c +++ b/hw/xfree86/common/xf86VidMode.c @@ -56,12 +56,6 @@ static Bool VidModeClose(int i, ScreenPtr pScreen); #endif -#ifdef DEBUG -# define DEBUG_P(x) ErrorF(x"\n"); -#else -# define DEBUG_P(x) /**/ -#endif - Bool VidModeExtensionInit(ScreenPtr pScreen) { @@ -69,7 +63,7 @@ VidModeExtensionInit(ScreenPtr pScreen) VidModePtr pVidMode; if (!xf86GetVidModeEnabled()) { - DEBUG_P("!xf86GetVidModeEnabled()"); + DebugF("!xf86GetVidModeEnabled()\n"); return FALSE; } @@ -77,7 +71,7 @@ VidModeExtensionInit(ScreenPtr pScreen) if (!dixSetPrivate(&pScreen->devPrivates, VidModeKey, xcalloc(sizeof(VidModeRec), 1))) { - DEBUG_P("xcalloc failed"); + DebugF("xcalloc failed\n"); return FALSE; } @@ -89,7 +83,7 @@ VidModeExtensionInit(ScreenPtr pScreen) VidModeCount++; return TRUE; #else - DEBUG_P("no vidmode extension"); + DebugF("no vidmode extension\n"); return FALSE; #endif } @@ -123,13 +117,13 @@ VidModeAvailable(int scrnIndex) VidModePtr pVidMode; if (VidModeKey == NULL) { - DEBUG_P("VidModeKey == NULL"); + DebugF("VidModeKey == NULL\n"); return FALSE; } pScrn = xf86Screens[scrnIndex]; if (pScrn == NULL) { - DEBUG_P("pScrn == NULL"); + DebugF("pScrn == NULL\n"); return FALSE; } @@ -137,7 +131,7 @@ VidModeAvailable(int scrnIndex) if (pVidMode) return TRUE; else { - DEBUG_P("pVidMode == NULL"); + DebugF("pVidMode == NULL\n"); return FALSE; } } diff --git a/hw/xfree86/common/xf86fbman.c b/hw/xfree86/common/xf86fbman.c index 510c3d8c4..5b8871723 100644 --- a/hw/xfree86/common/xf86fbman.c +++ b/hw/xfree86/common/xf86fbman.c @@ -802,10 +802,10 @@ LinearRemoveCBWrapper(FBAreaPtr area) xfree(pLink); } -#ifdef DEBUG static void -Dump(FBLinearLinkPtr pLink) +DumpDebug(FBLinearLinkPtr pLink) { +#ifdef DEBUG if (!pLink) ErrorF("MMmm, PLINK IS NULL!\n"); while (pLink) { @@ -817,8 +817,8 @@ Dump(FBLinearLinkPtr pLink) pLink = pLink->next; } -} #endif +} static FBLinearPtr AllocateLinear( @@ -889,9 +889,7 @@ AllocateLinear( linear->linear.RemoveLinearCallback = NULL; linear->linear.devPrivate.ptr = NULL; -#ifdef DEBUG - Dump(offman->LinearAreas); -#endif + DumpDebug(offman->LinearAreas); return &(linear->linear); } @@ -916,15 +914,11 @@ localAllocateOffscreenLinear( xf86FBScreenKey); /* Try to allocate from linear memory first...... */ -#ifdef DEBUG - ErrorF("ALLOCATING LINEAR\n"); -#endif + DebugF("ALLOCATING LINEAR\n"); if ((linear = AllocateLinear(offman, length, gran, privData))) return linear; -#ifdef DEBUG - ErrorF("NOPE, ALLOCATING AREA\n"); -#endif + DebugF("NOPE, ALLOCATING AREA\n"); if(!(link = xalloc(sizeof(FBLinearLink)))) return NULL; @@ -978,9 +972,7 @@ localAllocateOffscreenLinear( } else xfree(link); -#ifdef DEBUG - Dump(offman->LinearAreas); -#endif + DumpDebug(offman->LinearAreas); return linear; } @@ -1005,17 +997,13 @@ localFreeOffscreenLinear(FBLinearPtr linear) } if(pLink->area) { /* really an XY area */ -#ifdef DEBUG - ErrorF("FREEING AREA\n"); -#endif + DebugF("FREEING AREA\n"); localFreeOffscreenArea(pLink->area); if(pLinkPrev) pLinkPrev->next = pLink->next; else offman->LinearAreas = pLink->next; xfree(pLink); -#ifdef DEBUG - Dump(offman->LinearAreas); -#endif + DumpDebug(offman->LinearAreas); return; } @@ -1037,10 +1025,8 @@ localFreeOffscreenLinear(FBLinearPtr linear) } } -#ifdef DEBUG - ErrorF("FREEING LINEAR\n"); - Dump(offman->LinearAreas); -#endif + DebugF("FREEING LINEAR\n"); + DumpDebug(offman->LinearAreas); } diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c index 924c2bcb6..4936e75be 100644 --- a/hw/xfree86/common/xf86sbusBus.c +++ b/hw/xfree86/common/xf86sbusBus.c @@ -435,9 +435,7 @@ xf86MatchSbusInstances(const char *driverName, int sbusDevId, return actualcards; } -#ifdef DEBUG - ErrorF("%s instances found: %d\n", driverName, allocatedInstances); -#endif + DebugF("%s instances found: %d\n", driverName, allocatedInstances); for (i = 0; i < allocatedInstances; i++) { char *promPath = NULL; @@ -494,9 +492,7 @@ xf86MatchSbusInstances(const char *driverName, int sbusDevId, xfree(promPath); } -#ifdef DEBUG - ErrorF("%s instances found: %d\n", driverName, numClaimedInstances); -#endif + DebugF("%s instances found: %d\n", driverName, numClaimedInstances); /* * Of the claimed instances, check that another driver hasn't already @@ -510,11 +506,9 @@ xf86MatchSbusInstances(const char *driverName, int sbusDevId, if (!xf86CheckSbusSlot(psdp->fbNum)) continue; -#ifdef DEBUG - ErrorF("%s: card at fb%d %08x is claimed by a Device section\n", + DebugF("%s: card at fb%d %08x is claimed by a Device section\n", driverName, psdp->fbNum, psdp->node.node); -#endif - + /* Allocate an entry in the lists to be returned */ numFound++; retEntities = xnfrealloc(retEntities, numFound * sizeof(int)); diff --git a/hw/xfree86/os-support/linux/int10/linux.c b/hw/xfree86/os-support/linux/int10/linux.c index 8274bbbfb..0cf3507c3 100644 --- a/hw/xfree86/os-support/linux/int10/linux.c +++ b/hw/xfree86/os-support/linux/int10/linux.c @@ -115,9 +115,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) if ((!vidMem) || (!sysMem)) { if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { if (!sysMem) { -#ifdef DEBUG - ErrorF("Mapping sys bios area\n"); -#endif + DebugF("Mapping sys bios area\n"); if ((sysMem = mmap((void *)(SYS_BIOS), BIOS_SIZE, PROT_READ | PROT_EXEC, MAP_SHARED | MAP_FIXED, fd, SYS_BIOS)) @@ -128,9 +126,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) } } if (!vidMem) { -#ifdef DEBUG - ErrorF("Mapping VRAM area\n"); -#endif + DebugF("Mapping VRAM area\n"); if ((vidMem = mmap((void *)(V_RAM), VRAM_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED | MAP_FIXED, fd, V_RAM)) @@ -162,9 +158,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) (pointer)xnfcalloc(1, ALLOC_ENTRIES(pagesize)); if (!xf86IsEntityPrimary(entityIndex)) { -#ifdef DEBUG - ErrorF("Mapping high memory area\n"); -#endif + DebugF("Mapping high memory area\n"); if ((high_mem = shmget(counter++, HIGH_MEM_SIZE, IPC_CREAT | SHM_R | SHM_W)) == -1) { if (errno == ENOSYS) @@ -176,9 +170,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) goto error1; } } else { -#ifdef DEBUG - ErrorF("Mapping Video BIOS\n"); -#endif + DebugF("Mapping Video BIOS\n"); videoBiosMapped = TRUE; if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { if ((vMem = mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS, @@ -195,9 +187,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) } ((linuxInt10Priv*)pInt->private)->highMem = high_mem; -#ifdef DEBUG - ErrorF("Mapping 640kB area\n"); -#endif + DebugF("Mapping 640kB area\n"); if ((low_mem = shmget(counter++, V_RAM, IPC_CREAT | SHM_R | SHM_W)) == -1) { xf86DrvMsg(screen, X_ERROR, @@ -229,16 +219,12 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) Int10Current = pInt; -#ifdef DEBUG - ErrorF("Mapping int area\n"); -#endif + DebugF("Mapping int area\n"); if (xf86ReadBIOS(0, 0, (unsigned char *)0, LOW_PAGE_SIZE) < 0) { xf86DrvMsg(screen, X_ERROR, "Cannot read int vect\n"); goto error3; } -#ifdef DEBUG - ErrorF("done\n"); -#endif + DebugF("done\n"); /* * Read in everything between V_BIOS and SYS_BIOS as some system BIOSes * have executable code there. Note that xf86ReadBIOS() can only bring in @@ -246,17 +232,13 @@ xf86ExtendedInitInt10(int entityIndex, int Flags) */ if (!videoBiosMapped) { memset((pointer)V_BIOS, 0, SYS_BIOS - V_BIOS); -#ifdef DEBUG - ErrorF("Reading BIOS\n"); -#endif + DebugF("Reading BIOS\n"); for (cs = V_BIOS; cs < SYS_BIOS; cs += V_BIOS_SIZE) if (xf86ReadBIOS(cs, 0, (pointer)cs, V_BIOS_SIZE) < V_BIOS_SIZE) xf86DrvMsg(screen, X_WARNING, "Unable to retrieve all of segment 0x%06lX.\n", (long)cs); -#ifdef DEBUG - ErrorF("done\n"); -#endif + DebugF("done\n"); } if (xf86IsEntityPrimary(entityIndex) && !(initPrimary(options))) { diff --git a/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c b/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c index 9412b07a4..34afd9502 100644 --- a/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c +++ b/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c @@ -172,9 +172,7 @@ vm86_GP_fault(xf86Int10InfoPtr pInt) break; case 0xf4: -#ifdef DEBUG - ErrorF("hlt at %p\n", lina); -#endif + DebugF("hlt at %p\n", lina); return FALSE; case 0x0f: diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c index 8e11f4a59..5fad19451 100644 --- a/hw/xfree86/os-support/linux/lnx_acpi.c +++ b/hw/xfree86/os-support/linux/lnx_acpi.c @@ -135,15 +135,11 @@ lnxACPIOpen(void) int r = -1; static int warned = 0; -#ifdef DEBUG - ErrorF("ACPI: OSPMOpen called\n"); -#endif + DebugF("ACPI: OSPMOpen called\n"); if (ACPIihPtr || !xf86Info.pmFlag) return NULL; -#ifdef DEBUG - ErrorF("ACPI: Opening device\n"); -#endif + DebugF("ACPI: Opening device\n"); if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) { memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; @@ -172,10 +168,8 @@ static void lnxCloseACPI(void) { int fd; - -#ifdef DEBUG - ErrorF("ACPI: Closing device\n"); -#endif + + DebugF("ACPI: Closing device\n"); if (ACPIihPtr) { fd = xf86RemoveGeneralHandler(ACPIihPtr); shutdown(fd, 2); diff --git a/hw/xfree86/os-support/linux/lnx_apm.c b/hw/xfree86/os-support/linux/lnx_apm.c index 9dae00e57..4ccc7d662 100644 --- a/hw/xfree86/os-support/linux/lnx_apm.c +++ b/hw/xfree86/os-support/linux/lnx_apm.c @@ -160,15 +160,11 @@ lnxAPMOpen(void) { int fd, pfd; -#ifdef DEBUG - ErrorF("APM: OSPMOpen called\n"); -#endif + DebugF("APM: OSPMOpen called\n"); if (APMihPtr || !xf86Info.pmFlag) return NULL; -#ifdef DEBUG - ErrorF("APM: Opening device\n"); -#endif + DebugF("APM: Opening device\n"); if ((fd = open( APM_DEVICE, O_RDWR )) > -1) { if (access( APM_PROC, R_OK ) || ((pfd = open( APM_PROC, O_RDONLY)) == -1)) { @@ -191,10 +187,8 @@ static void lnxCloseAPM(void) { int fd; - -#ifdef DEBUG - ErrorF("APM: Closing device\n"); -#endif + + DebugF("APM: Closing device\n"); if (APMihPtr) { fd = xf86RemoveGeneralHandler(APMihPtr); close(fd); diff --git a/hw/xfree86/os-support/linux/lnx_axp.c b/hw/xfree86/os-support/linux/lnx_axp.c index f7151c8f4..d25999924 100644 --- a/hw/xfree86/os-support/linux/lnx_axp.c +++ b/hw/xfree86/os-support/linux/lnx_axp.c @@ -69,21 +69,15 @@ lnxGetAXP(void) switch (count) { case 1: sscanf(res, "cpu model : %s",cpu); -#ifdef DEBUG - ErrorF("CPU %s\n",cpu); -#endif + DebugF("CPU %s\n",cpu); break; case 5: sscanf(res, "system type : %s",systype); -#ifdef DEBUG - ErrorF("system type : %s\n",systype); -#endif + DebugF("system type : %s\n",systype); break; case 6: sscanf(res, "system variation : %s",sysvari); -#ifdef DEBUG - ErrorF("system variation: %s\n",sysvari); -#endif + DebugF("system variation: %s\n",sysvari); break; } count++; diff --git a/hw/xfree86/os-support/linux/lnx_font.c b/hw/xfree86/os-support/linux/lnx_font.c index e9a5b6aef..5b2696af5 100644 --- a/hw/xfree86/os-support/linux/lnx_font.c +++ b/hw/xfree86/os-support/linux/lnx_font.c @@ -65,9 +65,7 @@ getfont(int *width, int *height, op.flags = 0; SYSCALL(result = ioctl(xf86Info.consoleFd, KDFONTOP, &op)); -#ifdef DEBUG - ErrorF("Console font read: h: %i count: %i\n",op.height,op.charcount); -#endif + DebugF("Console font read: h: %i count: %i\n",op.height,op.charcount); if (!result) { @@ -130,9 +128,7 @@ lnx_savefont(void) int fd; int width = 32, height = 32, charcount = 2048; -#ifdef DEBUG - ErrorF("SAVE font\n"); -#endif + DebugF("SAVE font\n"); #if CHECK_OS_VERSION /* Check if the kernel has full support for this */ @@ -247,9 +243,7 @@ lnx_restorefont(void) { if (lnxfont.data == NULL) return FALSE; -#ifdef DEBUG - ErrorF("RESTORE font\n"); -#endif + DebugF("RESTORE font\n"); #if 0 /* must wack the height to make the kernel reprogram the VGA registers */ if (!setfont(lnxfont.width, lnxfont.height + 1, lnxfont.charcount, diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c index ed3576638..73409dfba 100644 --- a/hw/xfree86/os-support/linux/lnx_video.c +++ b/hw/xfree86/os-support/linux/lnx_video.c @@ -292,9 +292,7 @@ mtrr_add_wc_region(int screenNum, unsigned long base, unsigned long size, lbase = lbase >> 1, d_size <<= 1); while (d_size > n_size) d_size = d_size >> 1; -#ifdef DEBUG - ErrorF("WC_BASE: 0x%lx WC_END: 0x%lx\n",base,base+d_size-1); -#endif + DebugF("WC_BASE: 0x%lx WC_END: 0x%lx\n",base,base+d_size-1); n_base += d_size; n_size -= d_size; if (n_size) { @@ -424,11 +422,9 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags) realBase = Base & ~(getpagesize() - 1); alignOff = Base - realBase; -#ifdef DEBUG - ErrorF("base: %lx, realBase: %lx, alignOff: %lx \n", + DebugF("base: %lx, realBase: %lx, alignOff: %lx \n", Base,realBase,alignOff); -#endif - + #if defined(__ia64__) || defined(__arm__) || defined(__s390__) #ifndef MAP_WRITECOMBINED #define MAP_WRITECOMBINED 0x00010000 @@ -469,9 +465,7 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags) " (0x%08lx,0x%lx) (%s)\n", Base, Size, strerror(errno)); } -#ifdef DEBUG - ErrorF("base: %lx aligned base: %lx\n",base, base + alignOff); -#endif + DebugF("base: %lx aligned base: %lx\n",base, base + alignOff); return (char *)base + alignOff; } #endif /* !(__sparc__) */ @@ -481,10 +475,8 @@ unmapVidMem(int ScreenNum, pointer Base, unsigned long Size) { memType alignOff = (memType)Base - ((memType)Base & ~(getpagesize() - 1)); - -#ifdef DEBUG - ErrorF("alignment offset: %lx\n",alignOff); -#endif + + DebugF("alignment offset: %lx\n",alignOff); munmap((caddr_t)((memType)Base - alignOff), (Size + alignOff)); } diff --git a/hw/xfree86/os-support/sco/sco_video.c b/hw/xfree86/os-support/sco/sco_video.c index 7edf71db3..f63b71df8 100644 --- a/hw/xfree86/os-support/sco/sco_video.c +++ b/hw/xfree86/os-support/sco/sco_video.c @@ -124,9 +124,7 @@ mapVidMemMMAP(int ScreenNum, unsigned long Base, unsigned long Size, int flags) realBase = Base & ~(getpagesize() - 1); alignOff = Base - realBase; -#ifdef DEBUG - ErrorF("base: %lx, realBase: %lx, alignOff: %lx\n", Base,realBase,alignOff); -#endif + DebugF("base: %lx, realBase: %lx, alignOff: %lx\n", Base,realBase,alignOff); base = mmap((caddr_t)0, Size + alignOff, (flags & VIDMEM_READONLY) ? PROT_READ : (PROT_READ | PROT_WRITE), @@ -138,9 +136,7 @@ mapVidMemMMAP(int ScreenNum, unsigned long Base, unsigned long Size, int flags) return 0; /* NOTREACHED */ } -#ifdef DEBUG - ErrorF("base: %lx aligned base: %lx\n",base, base + alignOff); -#endif + DebugF("base: %lx aligned base: %lx\n",base, base + alignOff); return (pointer)((char *)base + alignOff); } diff --git a/hw/xfree86/os-support/shared/bios_mmap.c b/hw/xfree86/os-support/shared/bios_mmap.c index 96d56bf1c..40afd5b8e 100644 --- a/hw/xfree86/os-support/shared/bios_mmap.c +++ b/hw/xfree86/os-support/shared/bios_mmap.c @@ -68,10 +68,8 @@ xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf, close(fd); return(-1); } -#ifdef DEBUG - ErrorF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n", + DebugF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n", Base, ptr[0] | (ptr[1] << 8)); -#endif (void)memcpy(Buf, (void *)(ptr + Offset), Len); (void)munmap((caddr_t)ptr, mlen); (void)close(fd); diff --git a/hw/xfree86/os-support/shared/posix_tty.c b/hw/xfree86/os-support/shared/posix_tty.c index 697d0e51c..bf1bb03a3 100644 --- a/hw/xfree86/os-support/shared/posix_tty.c +++ b/hw/xfree86/os-support/shared/posix_tty.c @@ -400,17 +400,14 @@ int xf86ReadSerial (int fd, void *buf, int count) { int r; -#ifdef DEBUG int i; -#endif + SYSCALL (r = read (fd, buf, count)); -#ifdef DEBUG - ErrorF("ReadingSerial: 0x%x", + DebugF("ReadingSerial: 0x%x", (unsigned char)*(((unsigned char *)buf))); for (i = 1; i < r; i++) - ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i)); - ErrorF("\n"); -#endif + DebugF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i)); + DebugF("\n"); return (r); } @@ -418,14 +415,12 @@ int xf86WriteSerial (int fd, const void *buf, int count) { int r; -#ifdef DEBUG int i; - ErrorF("WritingSerial: 0x%x",(unsigned char)*(((unsigned char *)buf))); + DebugF("WritingSerial: 0x%x",(unsigned char)*(((unsigned char *)buf))); for (i = 1; i < count; i++) ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i)); - ErrorF("\n"); -#endif + DebugF("\n"); SYSCALL (r = write (fd, buf, count)); return (r); } @@ -482,9 +477,7 @@ xf86FlushInput(int fd) struct timeval timeout; char c[4]; -#ifdef DEBUG - ErrorF("FlushingSerial\n"); -#endif + DebugF("FlushingSerial\n"); if (tcflush(fd, TCIFLUSH) == 0) return 0; diff --git a/hw/xfree86/ramdac/TI.c b/hw/xfree86/ramdac/TI.c index f421fc39a..1c541d76b 100644 --- a/hw/xfree86/ramdac/TI.c +++ b/hw/xfree86/ramdac/TI.c @@ -115,10 +115,8 @@ TIramdacCalculateMNPForClock( VCO = 8.0 * IntRef * best_m / best_n; ActualClock = VCO / ( 1 << p ); -#ifdef DEBUG - ErrorF( "f_out=%ld f_vco=%.1f n=%d m=%d p=%d\n", + DebugF( "f_out=%ld f_vco=%.1f n=%d m=%d p=%d\n", ActualClock, VCO, *rN, *rM, *rP); -#endif return (ActualClock); } diff --git a/hw/xfree86/vbe/vbeModes.c b/hw/xfree86/vbe/vbeModes.c index fb730a708..1a4d2407c 100644 --- a/hw/xfree86/vbe/vbeModes.c +++ b/hw/xfree86/vbe/vbeModes.c @@ -414,11 +414,9 @@ VBESetModeParameters(ScrnInfoPtr pScrn, vbeInfoPtr pVbe) data->block->PixelClock = best->Clock * 1000; /* XXX May not have this. */ clock = VBEGetPixelClock(pVbe, data->mode, data->block->PixelClock); -#ifdef DEBUG - ErrorF("Setting clock %.2fMHz, closest is %.2fMHz\n", + DebugF("Setting clock %.2fMHz, closest is %.2fMHz\n", (double)data->block->PixelClock / 1000000.0, (double)clock / 1000000.0); -#endif if (clock) data->block->PixelClock = clock; data->mode |= (1 << 11); diff --git a/hw/xfree86/vgahw/vgaHW.c b/hw/xfree86/vgahw/vgaHW.c index 9d466e3dc..004376b75 100644 --- a/hw/xfree86/vgahw/vgaHW.c +++ b/hw/xfree86/vgahw/vgaHW.c @@ -1025,32 +1025,24 @@ vgaHWSaveMode(ScrnInfoPtr scrninfp, vgaRegPtr save) for (i = 0; i < save->numCRTC; i++) { save->CRTC[i] = hwp->readCrtc(hwp, i); -#ifdef DEBUG - ErrorF("CRTC[0x%02x] = 0x%02x\n", i, save->CRTC[i]); -#endif + DebugF("CRTC[0x%02x] = 0x%02x\n", i, save->CRTC[i]); } hwp->enablePalette(hwp); for (i = 0; i < save->numAttribute; i++) { save->Attribute[i] = hwp->readAttr(hwp, i); -#ifdef DEBUG - ErrorF("Attribute[0x%02x] = 0x%02x\n", i, save->Attribute[i]); -#endif + DebugF("Attribute[0x%02x] = 0x%02x\n", i, save->Attribute[i]); } hwp->disablePalette(hwp); for (i = 0; i < save->numGraphics; i++) { save->Graphics[i] = hwp->readGr(hwp, i); -#ifdef DEBUG - ErrorF("Graphics[0x%02x] = 0x%02x\n", i, save->Graphics[i]); -#endif + DebugF("Graphics[0x%02x] = 0x%02x\n", i, save->Graphics[i]); } for (i = 1; i < save->numSequencer; i++) { save->Sequencer[i] = hwp->readSeq(hwp, i); -#ifdef DEBUG - ErrorF("Sequencer[0x%02x] = 0x%02x\n", i, save->Sequencer[i]); -#endif + DebugF("Sequencer[0x%02x] = 0x%02x\n", i, save->Sequencer[i]); } } @@ -1088,18 +1080,16 @@ vgaHWSaveColormap(ScrnInfoPtr scrninfp, vgaRegPtr save) hwp->writeDacReadAddr(hwp, 0x00); for (i = 0; i < 6; i++) { save->DAC[i] = hwp->readDacData(hwp); -#ifdef DEBUG switch (i % 3) { case 0: - ErrorF("DAC[0x%02x] = 0x%02x, ", i / 3, save->DAC[i]); + DebugF("DAC[0x%02x] = 0x%02x, ", i / 3, save->DAC[i]); break; case 1: - ErrorF("0x%02x, ", save->DAC[i]); + DebugF("0x%02x, ", save->DAC[i]); break; case 2: - ErrorF("0x%02x\n", save->DAC[i]); + DebugF("0x%02x\n", save->DAC[i]); } -#endif } /* @@ -1131,18 +1121,16 @@ vgaHWSaveColormap(ScrnInfoPtr scrninfp, vgaRegPtr save) for (i = 6; i < 768; i++) { save->DAC[i] = hwp->readDacData(hwp); DACDelay(hwp); -#ifdef DEBUG switch (i % 3) { case 0: - ErrorF("DAC[0x%02x] = 0x%02x, ", i / 3, save->DAC[i]); + DebugF("DAC[0x%02x] = 0x%02x, ", i / 3, save->DAC[i]); break; case 1: - ErrorF("0x%02x, ", save->DAC[i]); + DebugF("0x%02x, ", save->DAC[i]); break; case 2: - ErrorF("0x%02x\n", save->DAC[i]); + DebugF("0x%02x\n", save->DAC[i]); } -#endif } } @@ -1772,9 +1760,7 @@ vgaHWMapMem(ScrnInfoPtr scrp) * XXX This is not correct but we do it * for now. */ -#ifdef DEBUG - ErrorF("Mapping VGAMem\n"); -#endif + DebugF("Mapping VGAMem\n"); hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO_32BIT, hwp->dev, hwp->MapPhys, hwp->MapSize); return hwp->Base != NULL; @@ -1790,9 +1776,7 @@ vgaHWUnmapMem(ScrnInfoPtr scrp) if (hwp->Base == NULL) return; -#ifdef DEBUG - ErrorF("Unmapping VGAMem\n"); -#endif + DebugF("Unmapping VGAMem\n"); xf86UnMapVidMem(scr_index, hwp->Base, hwp->MapSize); hwp->Base = NULL; } -- cgit v1.2.3 From 8331bde0adeccefb275c4d707e7b2cb1d95b1581 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Fri, 15 May 2009 21:36:28 +0100 Subject: Cygwin/X: link with libmain.a to provide main() Commit 987579c930bda803427a28cb82773c389f5110d6 moves main.c into into libmain.a to be linked with separately, and updates the various DDXs to link with libmain.a, except Xwin, which also needs this change. Signed-off-by: Jon TURNEY --- hw/xwin/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am index 504c2a6cd..4f9513088 100644 --- a/hw/xwin/Makefile.am +++ b/hw/xwin/Makefile.am @@ -147,7 +147,7 @@ XWin_SOURCES = $(SRCS) INCLUDES = -I$(top_srcdir)/miext/rootless XWin_DEPENDENCIES = $(XWIN_LIBS) -XWin_LDADD = $(XWIN_LIBS) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS) +XWin_LDADD = $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS) .rc.o: $(WINDRES) --use-temp-file -i $< --input-format=rc -o $@ -O coff -DPROJECT_NAME=\"$(VENDOR_NAME_SHORT)\" -- cgit v1.2.3 From 510cbd43cd4e34bd459e8f74ab2855714b4ca95d Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 18 May 2009 17:48:57 +0200 Subject: EXA: Defragment offscreen memory. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At most once per second, under the following circumstances: * We can't satisfy an offscreen memory allocation, but there seems to be enough offscreen memory available in total. or * The server has been idle for at least 100ms, and there is more than one available offscreen area. Signed-off-by: Michel Dänzer --- exa/exa.c | 53 ++++++++++++ exa/exa.h | 13 +++ exa/exa_offscreen.c | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++-- exa/exa_priv.h | 8 ++ 4 files changed, 297 insertions(+), 8 deletions(-) diff --git a/exa/exa.c b/exa/exa.c index 2de348a8d..089350b24 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -1048,6 +1048,50 @@ exaCreateScreenResources(ScreenPtr pScreen) 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 * screen private, before calling down to the next CloseSccreen. @@ -1063,6 +1107,10 @@ exaCloseScreen(int i, ScreenPtr pScreen) if (ps->Glyphs == exaGlyphs) 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, CloseScreen); unwrap(pExaScr, pScreen, GetImage); @@ -1223,6 +1271,11 @@ exaDriverInit (ScreenPtr pScreen, /* * 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, CloseScreen, exaCloseScreen); wrap(pExaScr, pScreen, GetImage, exaGetImage); diff --git a/exa/exa.h b/exa/exa.h index 3e1f1c75a..0701ec98f 100644 --- a/exa/exa.h +++ b/exa/exa.h @@ -66,6 +66,9 @@ struct _ExaOffscreenArea { ExaOffscreenArea *next; 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) +/** + * 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 */ diff --git a/exa/exa_offscreen.c b/exa/exa_offscreen.c index d7198cbdc..043fd83ae 100644 --- a/exa/exa_offscreen.c +++ b/exa/exa_offscreen.c @@ -172,7 +172,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, { ExaOffscreenArea *area; ExaScreenPriv (pScreen); - int tmp, real_size = 0; + int tmp, real_size = 0, free_total = 0, largest_avail = 0; #if DEBUG_OFFSCREEN static int number = 0; ErrorF("================= ============ allocating a new pixmap %d\n", ++number); @@ -213,6 +213,35 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, /* does it fit? */ if (real_size <= area->size) 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; + tmp = area->base_offset % align; + if (tmp) + real_size += (align - tmp); + + /* does it fit? */ + if (real_size > area->size) + area = NULL; + } + } } if (!area) @@ -255,16 +284,31 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, if (!new_area) return NULL; new_area->base_offset = area->base_offset + real_size; + +#if DEBUG_OFFSCREEN + if (new_area->base_offset >= pExaScr->info->memorySize) + ErrorF("new_area->base_offset = 0x%08x >= memorySize!\n", + new_area->base_offset); +#endif + new_area->offset = new_area->base_offset; + new_area->align = 0; new_area->size = area->size - real_size; new_area->state = ExaOffscreenAvail; new_area->save = NULL; new_area->last_use = 0; new_area->eviction_cost = 0; new_area->next = area->next; + if (area->next) + area->next->prev = new_area; + else + pExaScr->info->offScreenAreas->prev = new_area; area->next = new_area; + new_area->prev = area; area->size = real_size; - } + } else + pExaScr->numOffscreenAvailable--; + /* * Mark this area as in use */ @@ -277,6 +321,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, area->last_use = pExaScr->offScreenCounter++; area->offset = (area->base_offset + align - 1); area->offset -= area->offset % align; + area->align = align; ExaOffscreenValidate (pScreen); @@ -391,7 +436,7 @@ exaEnableDisableFBAccess (int index, Bool enable) /* merge the next free area into this one */ static void -ExaOffscreenMerge (ExaOffscreenArea *area) +ExaOffscreenMerge (ExaScreenPrivPtr pExaScr, ExaOffscreenArea *area) { ExaOffscreenArea *next = area->next; @@ -399,7 +444,13 @@ ExaOffscreenMerge (ExaOffscreenArea *area) area->size += next->size; /* frob pointer */ area->next = next->next; + if (area->next) + area->next->prev = area; + else + pExaScr->info->offScreenAreas->prev = area; xfree (next); + + pExaScr->numOffscreenAvailable--; } /** @@ -436,19 +487,19 @@ exaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area) if (area == pExaScr->info->offScreenAreas) prev = NULL; else - for (prev = pExaScr->info->offScreenAreas; prev; prev = prev->next) - if (prev->next == area) - break; + prev = area->prev; + + pExaScr->numOffscreenAvailable++; /* link with next area if free */ if (next && next->state == ExaOffscreenAvail) - ExaOffscreenMerge (area); + ExaOffscreenMerge (pExaScr, area); /* link with prev area if free */ if (prev && prev->state == ExaOffscreenAvail) { area = prev; - ExaOffscreenMerge (area); + ExaOffscreenMerge (pExaScr, area); } ExaOffscreenValidate (pScreen); @@ -468,6 +519,167 @@ ExaOffscreenMarkUsed (PixmapPtr pPixmap) 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. * @@ -491,15 +703,18 @@ exaOffscreenInit (ScreenPtr pScreen) area->state = ExaOffscreenAvail; area->base_offset = pExaScr->info->offScreenBase; area->offset = area->base_offset; + area->align = 0; area->size = pExaScr->info->memorySize - area->base_offset; area->save = NULL; area->next = NULL; + area->prev = area; area->last_use = 0; area->eviction_cost = 0; /* Add it to the free areas */ pExaScr->info->offScreenAreas = area; pExaScr->offScreenCounter = 1; + pExaScr->numOffscreenAvailable = 1; ExaOffscreenValidate (pScreen); diff --git a/exa/exa_priv.h b/exa/exa_priv.h index 874e7e987..b3df1a586 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -145,6 +145,8 @@ typedef struct { typedef void (*EnableDisableFBAccessProcPtr)(int, Bool); typedef struct { ExaDriverPtr info; + ScreenBlockHandlerProcPtr SavedBlockHandler; + ScreenWakeupHandlerProcPtr SavedWakeupHandler; CreateGCProcPtr SavedCreateGC; CloseScreenProcPtr SavedCloseScreen; GetImageProcPtr SavedGetImage; @@ -170,6 +172,9 @@ typedef struct { unsigned disableFbCount; Bool optimize_migration; unsigned offScreenCounter; + unsigned numOffscreenAvailable; + CARD32 lastDefragment; + CARD32 nextDefragment; /* Store all accessed pixmaps, so we can check for duplicates. */ PixmapPtr prepare_access[6]; @@ -460,6 +465,9 @@ ExaOffscreenSwapOut (ScreenPtr pScreen); void ExaOffscreenSwapIn (ScreenPtr pScreen); +ExaOffscreenArea* +ExaOffscreenDefragment (ScreenPtr pScreen); + Bool exaOffscreenInit(ScreenPtr pScreen); -- cgit v1.2.3 From 4addfcd633484b7f53b5df1b92bfca8bfc1dc48d Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 18 May 2009 17:53:35 +0200 Subject: EXA: Allocate from the end of free offscreen memory rather than from the start. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way we don't always need to scan over previously allocated areas when looking for an available one, and there might be less fragmentation. Signed-off-by: Michel Dänzer --- exa/exa_offscreen.c | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/exa/exa_offscreen.c b/exa/exa_offscreen.c index 043fd83ae..eb53b2a30 100644 --- a/exa/exa_offscreen.c +++ b/exa/exa_offscreen.c @@ -93,7 +93,7 @@ exaFindAreaToEvict(ExaScreenPrivPtr pExaScr, int size, int align) { ExaOffscreenArea *begin, *end, *best; unsigned cost, best_cost; - int avail, real_size, tmp; + int avail, real_size; best_cost = UINT_MAX; begin = end = pExaScr->info->offScreenAreas; @@ -111,10 +111,7 @@ exaFindAreaToEvict(ExaScreenPrivPtr pExaScr, int size, int align) break; /* adjust size needed to account for alignment loss for this area */ - real_size = size; - tmp = begin->base_offset % align; - if (tmp) - real_size += (align - tmp); + real_size = size + (begin->base_offset + begin->size - size) % align; while (avail < real_size && end != NULL) { @@ -172,7 +169,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, { ExaOffscreenArea *area; ExaScreenPriv (pScreen); - int tmp, real_size = 0, free_total = 0, largest_avail = 0; + int real_size = 0, free_total = 0, largest_avail = 0; #if DEBUG_OFFSCREEN static int number = 0; ErrorF("================= ============ allocating a new pixmap %d\n", ++number); @@ -205,10 +202,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, continue; /* adjust size to match alignment requirement */ - real_size = size; - tmp = area->base_offset % align; - if (tmp) - real_size += (align - tmp); + real_size = size + (area->base_offset + area->size - size) % align; /* does it fit? */ if (real_size <= area->size) @@ -232,10 +226,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, if (area) { /* adjust size to match alignment requirement */ - real_size = size; - tmp = area->base_offset % align; - if (tmp) - real_size += (align - tmp); + real_size = size + (area->base_offset + area->size - size) % align; /* does it fit? */ if (real_size > area->size) @@ -257,10 +248,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, } /* adjust size needed to account for alignment loss for this area */ - real_size = size; - tmp = area->base_offset % align; - if (tmp) - real_size += (align - tmp); + real_size = size + (area->base_offset + area->size - size) % align; /* * Kick out first area if in use @@ -283,13 +271,7 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, ExaOffscreenArea *new_area = xalloc (sizeof (ExaOffscreenArea)); if (!new_area) return NULL; - new_area->base_offset = area->base_offset + real_size; - -#if DEBUG_OFFSCREEN - if (new_area->base_offset >= pExaScr->info->memorySize) - ErrorF("new_area->base_offset = 0x%08x >= memorySize!\n", - new_area->base_offset); -#endif + new_area->base_offset = area->base_offset; new_area->offset = new_area->base_offset; new_area->align = 0; @@ -298,13 +280,14 @@ exaOffscreenAlloc (ScreenPtr pScreen, int size, int align, new_area->save = NULL; new_area->last_use = 0; new_area->eviction_cost = 0; - new_area->next = area->next; - if (area->next) - area->next->prev = new_area; + new_area->next = area; + new_area->prev = area->prev; + if (area->prev->next) + area->prev->next = new_area; else - pExaScr->info->offScreenAreas->prev = new_area; - area->next = new_area; - new_area->prev = area; + pExaScr->info->offScreenAreas = new_area; + area->prev = new_area; + area->base_offset = new_area->base_offset + new_area->size; area->size = real_size; } else pExaScr->numOffscreenAvailable--; -- cgit v1.2.3 From 3cea176d5abcb0f14eefbdcbe17fed0847524dd4 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 19 May 2009 19:30:33 -0400 Subject: xace: Fix a bad device access hook call. Add a proper access mode, and reverse the logic of the return value. Zero ("Success") is returned on success from the hook calls. Signed-off-by: Eamon Walsh --- dix/events.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dix/events.c b/dix/events.c index 157f9a8a1..b3caec8be 100644 --- a/dix/events.c +++ b/dix/events.c @@ -4088,10 +4088,10 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin) { xKeymapEvent ke; ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)]; - if (XaceHook(XACE_DEVICE_ACCESS, client, dev, FALSE)) - memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31); - else + if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess)) bzero((char *)&ke.map[0], 31); + else + memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31); ke.type = KeymapNotify; DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1, -- cgit v1.2.3 From 77e90261d5f91e1170c6e02deb0e3739c24fcfd6 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 19 May 2009 19:36:03 -0400 Subject: dix/events.c: Use wClient where appropriate. Signed-off-by: Eamon Walsh --- dix/events.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dix/events.c b/dix/events.c index b3caec8be..fd9337682 100644 --- a/dix/events.c +++ b/dix/events.c @@ -3989,8 +3989,7 @@ CoreEnterLeaveEvent( if ((type == EnterNotify) && (mask & KeymapStateMask)) { xKeymapEvent ke; - ClientPtr client = grab ? rClient(grab) - : clients[CLIENT_ID(pWin->drawable.id)]; + ClientPtr client = grab ? rClient(grab) : wClient(pWin); if (XaceHook(XACE_DEVICE_ACCESS, client, keybd, DixReadAccess)) bzero((char *)&ke.map[0], 31); else @@ -4087,7 +4086,7 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin) ((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask)) { xKeymapEvent ke; - ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)]; + ClientPtr client = wClient(pWin); if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess)) bzero((char *)&ke.map[0], 31); else @@ -5181,7 +5180,7 @@ DeleteWindowFromAnyEvents(WindowPtr pWin, Bool freeResources) to None */ #ifdef NOTDEF - || clients[CLIENT_ID(parent->drawable.id)]->clientGone + || wClient(parent)->clientGone #endif ); DoFocusEvents(keybd, pWin, parent, focusEventMode); -- cgit v1.2.3 From 22a33a7250f879b8f3eb84176a1dc57027d8cfe4 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 19 May 2009 22:45:26 -0400 Subject: glx: Register names for the GLX resource types. Signed-off-by: Eamon Walsh --- glx/glxext.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/glx/glxext.c b/glx/glxext.c index 6bc7bef8e..bdacf8865 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -36,6 +36,7 @@ #include "glxserver.h" #include #include +#include #include "privates.h" #include #include "g_disptab.h" @@ -317,6 +318,10 @@ void GlxExtensionInit(void) __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone); __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone); + RegisterResourceName(__glXContextRes, "GLXContext"); + RegisterResourceName(__glXDrawableRes, "GLXDrawable"); + RegisterResourceName(__glXSwapBarrierRes, "GLXSwapBarrier"); + if (!dixRequestPrivate(glxClientPrivateKey, sizeof (__GLXclientState))) return; if (!AddCallback (&ClientStateCallback, glxClientCallback, 0)) -- cgit v1.2.3 From 79138eec1b49cbaca6a16f2bdd8579b5828aeb28 Mon Sep 17 00:00:00 2001 From: Matthias Hopf Date: Tue, 10 Mar 2009 16:03:26 +0100 Subject: randr: Setting gamma: inverse logic looks more sane --- hw/xfree86/modes/xf86Crtc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 0ab2f3df9..353b26874 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -353,7 +353,7 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati } /* 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->gamma_blue, crtc->gamma_size); -- cgit v1.2.3 From a2c5ee36b21c2ee5c0468f1b251e74c1412dbecb Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 21 May 2009 10:20:48 -0400 Subject: EDID: Be more cautious about finding vendor blocks. Many old monitors zero-fill the detailed descriptors, so check for that to avoid a useless warning like: (WW) RADEON(0): Unknown vendor-specific block 0 --- hw/xfree86/ddc/interpret_edid.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c index 3edfd1fb5..bdcc92e64 100644 --- a/hw/xfree86/ddc/interpret_edid.c +++ b/hw/xfree86/ddc/interpret_edid.c @@ -285,6 +285,8 @@ get_std_timing_section(Uchar *c, struct std_timings *r, } } +static const unsigned char empty_block[18]; + static void get_dt_md_section(Uchar *c, struct edid_version *ver, struct detailed_monitor_section *det_mon) @@ -336,10 +338,10 @@ get_dt_md_section(Uchar *c, struct edid_version *ver, det_mon[i].type = DS_UNKOWN; break; } - if (c[3] <= 0x0F) { + if (c[3] <= 0x0F && memcmp(c, empty_block, sizeof(empty_block))) { det_mon[i].type = DS_VENDOR + c[3]; } - } else { + } else { det_mon[i].type = DT; get_detailed_timing_section(c,&det_mon[i].section.d_timings); } -- cgit v1.2.3 From a8bd1e1f96d8e5380972a7dce8d9940cd912aa09 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Pedersen Date: Thu, 21 May 2009 18:21:28 -0400 Subject: Fix alpha map computation in miComputeCompositeRegion() According to the RENDER spec, the origin of the alpha map is interpreted relative to the origin of the drawable of the image, not the origin of drawable of the alpha map. The only use of alpha maps I have been able to find is in Qt and they don't use a non-zero alpha origin. --- render/mipict.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/render/mipict.c b/render/mipict.c index 777f111e5..fe1b8dad5 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -459,8 +459,8 @@ miComputeCompositeRegion (RegionPtr pRegion, if (pSrc->alphaMap) { if (!miClipPictureSrc (pRegion, pSrc->alphaMap, - xDst - (xSrc + pSrc->alphaOrigin.x), - yDst - (ySrc + pSrc->alphaOrigin.y))) + xDst - (xSrc - pSrc->alphaOrigin.x), + yDst - (ySrc - pSrc->alphaOrigin.y))) { pixman_region_fini (pRegion); return FALSE; @@ -477,8 +477,8 @@ miComputeCompositeRegion (RegionPtr pRegion, if (pMask->alphaMap) { if (!miClipPictureSrc (pRegion, pMask->alphaMap, - xDst - (xMask + pMask->alphaOrigin.x), - yDst - (yMask + pMask->alphaOrigin.y))) + xDst - (xMask - pMask->alphaOrigin.x), + yDst - (yMask - pMask->alphaOrigin.y))) { pixman_region_fini (pRegion); return FALSE; -- cgit v1.2.3 From cabff9007a4abad026b450a4aab155c7bcd94326 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 15 May 2009 08:33:07 +1000 Subject: xfree86: treat other drivers as mouse drivers in the config. Historically, if no input device was referenced in the ServerLayout, the server would pick the first "mouse" device found in the xorg.conf. This patch gives evdev, synaptics, vmmouse and void the same status. If there is a section in the config file using this driver - use it as the core pointer. Device selection is in driver-order, not in config-order. If a "mouse" device is listed after a "synaptics" device, the "mouse" device gets preference. This replicates the original behaviour. This code only takes effect if AllowEmptyInput is off and there is no core pointer in the server layout. Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Config.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 73235a974..165958b07 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -1090,8 +1090,8 @@ Bool xf86DRI2Enabled(void) * 2. The "CorePointer" and "CoreKeyboard" InputDevices referred to by * the active ServerLayout. * 3. The first InputDevices marked as "CorePointer" and "CoreKeyboard". - * 4. The first InputDevices that use the 'mouse' and 'keyboard' or 'kbd' - * drivers. + * 4. The first InputDevices that use 'keyboard' or 'kbd' and a valid mouse + * driver (mouse, synaptics, evdev, vmmouse, void) * 5. Default devices with an empty (default) configuration. These defaults * will reference the 'mouse' and 'keyboard' drivers. */ @@ -1110,6 +1110,8 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) int count = 0; MessageType from = X_DEFAULT; int found = 0; + const char *mousedrivers[] = { "mouse", "synaptics", "evdev", "vmmouse", + "void", NULL }; /* * First check if a core pointer or core keyboard have been specified @@ -1219,13 +1221,15 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) } } - /* 4. First pointer with 'mouse' as the driver. */ + /* 4. First pointer with an allowed mouse driver. */ if (!foundPointer && !xf86Info.allowEmptyInput) { + const char **driver = mousedrivers; confInput = xf86findInput(CONF_IMPLICIT_POINTER, xf86configptr->conf_input_lst); - if (!confInput) { - confInput = xf86findInputByDriver("mouse", + while (driver && !confInput) { + confInput = xf86findInputByDriver(*driver, xf86configptr->conf_input_lst); + driver++; } if (confInput) { foundPointer = TRUE; @@ -1280,10 +1284,13 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) * section ... deal. */ for (devs = servlayoutp->inputs; devs && *devs; devs++) { - if (!strcmp((*devs)->driver, "void") || !strcmp((*devs)->driver, "mouse") || - !strcmp((*devs)->driver, "vmmouse") || !strcmp((*devs)->driver, "evdev") || - !strcmp((*devs)->driver, "synaptics")) { - found = 1; break; + const char **driver = mousedrivers; + while(*driver) { + if (!strcmp((*devs)->driver, *driver)) { + found = 1; + break; + } + driver++; } } if (!found && !xf86Info.allowEmptyInput) { -- cgit v1.2.3 From 7db55a0806c82bd4143c8bf1b8eb2b62e456ad9a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 20 May 2009 14:38:25 +1000 Subject: dix: remove superfluous loop in change_modmap. A device can only be attached to a single master device. So instead of looping and searching for the master device, we can just use dev->u.master directly. Signed-off-by: Peter Hutterer --- dix/inpututils.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/dix/inpututils.c b/dix/inpututils.c index c6300880b..152214506 100644 --- a/dix/inpututils.c +++ b/dix/inpututils.c @@ -275,14 +275,10 @@ change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *modkeymap, do_modmap_change(client, tmp, modmap); } } - else { - for (tmp = inputInfo.devices; tmp; tmp = tmp->next) { - if (tmp->isMaster && tmp->u.lastSlave == dev) { - /* If this fails, expect the results to be weird. */ - if (check_modmap_change(client, tmp, modmap)) - do_modmap_change(client, tmp, modmap); - } - } + else if (dev->u.master && dev->u.master->u.lastSlave == dev) { + /* If this fails, expect the results to be weird. */ + if (check_modmap_change(client, dev->u.master, modmap)) + do_modmap_change(client, dev->u.master, modmap); } return Success; -- cgit v1.2.3 From 525aa17f804d37d1cfcbbf6b8e6cddb45e999b20 Mon Sep 17 00:00:00 2001 From: Tomas Janousek Date: Wed, 20 May 2009 15:03:01 +0200 Subject: Bug #6428, #16458, #21464: Fix crash due to uninitialized VModMap fields. In ProcXkbGetKbdByName, mrep.firstVModMapKey, .nVModMapKeys and .totalVModMapKeys were not initialized, contained random values and caused accesses to unallocated and later modified memory, causing XkbSizeVirtualModMap and XkbWriteVirtualModMap to see different number of nonzero values, resulting in writes past the end of an array in XkbSendMap. This patch initializes those values sensibly and reverts commits 5c0a2088 and 6dd4fc46, which have been plain non-sense. Signed-off-by: Tomas Janousek Signed-off-by: Peter Hutterer --- xkb/xkb.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xkb/xkb.c b/xkb/xkb.c index 445c55ffd..ec46238b8 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -1308,7 +1308,7 @@ XkbSizeVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep) rep->totalVModMapKeys= 0; return 0; } - for (nRtrn=i=0;inVModMapKeys-1;i++) { + for (nRtrn=i=0;inVModMapKeys;i++) { if (xkb->server->vmodmap[i+rep->firstVModMapKey]!=0) nRtrn++; } @@ -1327,7 +1327,7 @@ unsigned short * pMap; wire= (xkbVModMapWireDesc *)buf; pMap= &xkb->server->vmodmap[rep->firstVModMapKey]; - for (i=0;inVModMapKeys-1;i++,pMap++) { + for (i=0;inVModMapKeys;i++,pMap++) { if (*pMap!=0) { wire->key= i+rep->firstVModMapKey; wire->vmods= *pMap; @@ -5670,7 +5670,7 @@ ProcXkbGetKbdByName(ClientPtr client) mrep.present = 0; mrep.totalSyms = mrep.totalActs = mrep.totalKeyBehaviors= mrep.totalKeyExplicit= - mrep.totalModMapKeys= 0; + mrep.totalModMapKeys= mrep.totalVModMapKeys= 0; if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) { mrep.present|= XkbKeyTypesMask; mrep.firstType = 0; @@ -5696,6 +5696,8 @@ ProcXkbGetKbdByName(ClientPtr client) mrep.firstKeyExplicit = new->min_key_code; mrep.nKeyActs = mrep.nKeyBehaviors = mrep.nKeyExplicit = XkbNumKeys(new); + mrep.firstVModMapKey= new->min_key_code; + mrep.nVModMapKeys= XkbNumKeys(new); } else { mrep.virtualMods= 0; -- cgit v1.2.3 From 99e22b86c5f1a3653f3caaf01368a777d2b208d0 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 22 May 2009 12:01:55 -0400 Subject: EDID: Add modes from Established Timings III descriptor to mode pool EDID 1.4, section 3.10.3.9 --- hw/xfree86/ddc/edid.h | 2 +- hw/xfree86/ddc/interpret_edid.c | 1 + hw/xfree86/modes/xf86EdidModes.c | 87 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 86 insertions(+), 4 deletions(-) diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h index b55600329..42ee9d15e 100644 --- a/hw/xfree86/ddc/edid.h +++ b/hw/xfree86/ddc/edid.h @@ -533,7 +533,7 @@ struct detailed_monitor_section { struct whitePoints wp[2]; /* 32 */ /* color management data */ struct cvt_timings cvt[4]; /* 64 */ - /* established timings III */ + Uchar est_iii[6]; /* 6 */ } section; /* max: 80 */ }; diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c index bdcc92e64..12a52545e 100644 --- a/hw/xfree86/ddc/interpret_edid.c +++ b/hw/xfree86/ddc/interpret_edid.c @@ -330,6 +330,7 @@ get_dt_md_section(Uchar *c, struct edid_version *ver, break; case ADD_EST_TIMINGS: det_mon[i].type = DS_EST_III; + memcpy(det_mon[i].section.est_iii, c + 6, 6); break; case ADD_DUMMY: det_mon[i].type = DS_DUMMY; diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index 4340edd1f..50b669c3e 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -641,6 +641,85 @@ DDCModesFromCVT(int scrnIndex, struct cvt_timings *t) } #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 @@ -811,6 +890,7 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC) for (i = 0; i < DET_TIMINGS; i++) { struct detailed_monitor_section *det_mon = &DDC->det_mon[i]; + Mode = NULL; switch (det_mon->type) { case DT: Mode = DDCModeFromDetailedTiming(scrnIndex, @@ -818,22 +898,23 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC) preferred, quirks); preferred = FALSE; - Modes = xf86ModesAdd(Modes, Mode); break; case DS_STD_TIMINGS: Mode = DDCModesFromStandardTiming(det_mon->section.std_t, quirks, timing_level, rb); - Modes = xf86ModesAdd(Modes, Mode); break; #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0) case DS_CVT: Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt); - Modes = xf86ModesAdd(Modes, Mode); break; #endif + case DS_EST_III: + Mode = DDCModesFromEstIII(det_mon->section.est_iii); + break; default: break; } + Modes = xf86ModesAdd(Modes, Mode); } /* Add established timings */ -- cgit v1.2.3 From c70511931ca1441878daed50e710fa514f6ab077 Mon Sep 17 00:00:00 2001 From: Matthieu Herrb Date: Sun, 24 May 2009 10:32:38 +0200 Subject: fix typo in cabff9007 which led to an unintialized memory read and a crash. --- hw/xfree86/common/xf86Config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 165958b07..24049aaa0 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -1226,7 +1226,7 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) const char **driver = mousedrivers; confInput = xf86findInput(CONF_IMPLICIT_POINTER, xf86configptr->conf_input_lst); - while (driver && !confInput) { + while (*driver && !confInput) { confInput = xf86findInputByDriver(*driver, xf86configptr->conf_input_lst); driver++; -- cgit v1.2.3 From 12e725d08b4cf7dbb7f09b9ec09fa1b621156ea9 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Fri, 22 May 2009 09:54:38 +0200 Subject: randr: fix server crash in RRGetScreenInfo We don't return rates to randr < 1.1 clients, so don't allocate space for them. This fixes a FatalError due to not all allocated space being used. X.Org bug#21861 Reported-by: Guillaume Quintin Signed-off-by: Julien Cristau --- randr/rrscreen.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/randr/rrscreen.c b/randr/rrscreen.c index 94bf3ce99..46890bf74 100644 --- a/randr/rrscreen.c +++ b/randr/rrscreen.c @@ -664,8 +664,9 @@ ProcRRGetScreenInfo (ClientPtr client) rep.sizeID = pData->size; rep.rate = pData->refresh; - extraLen = (rep.nSizes * sizeof (xScreenSizes) + - rep.nrateEnts * sizeof (CARD16)); + extraLen = rep.nSizes * sizeof (xScreenSizes); + if (has_rate) + extraLen += rep.nrateEnts * sizeof (CARD16); if (extraLen) { -- cgit v1.2.3 From 6583477035234e23ead2fad9db7a07e5862447a4 Mon Sep 17 00:00:00 2001 From: Nicolai Hähnle Date: Sat, 23 May 2009 13:35:24 +0200 Subject: Remove reference to non-existing requestLog and requestLogIndex These fields were removed in 252ec504817e05b185e4896a2d899e9c00b8aeef. Signed-off-by: Nicolai Haehnle Signed-off-by: Peter Hutterer --- dix/dispatch.c | 6 ------ include/dixstruct.h | 4 ---- 2 files changed, 10 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index ce3294d32..dbb97e05f 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -413,12 +413,6 @@ Dispatch(void) } client->sequence++; -#ifdef DEBUG - if (client->requestLogIndex == MAX_REQUEST_LOG) - client->requestLogIndex = 0; - client->requestLog[client->requestLogIndex] = MAJOROP; - client->requestLogIndex++; -#endif #ifdef XSERVER_DTRACE XSERVER_REQUEST_START(LookupMajorName(MAJOROP), MAJOROP, ((xReq *)client->requestBuffer)->length, diff --git a/include/dixstruct.h b/include/dixstruct.h index 7335fad95..696b793ff 100644 --- a/include/dixstruct.h +++ b/include/dixstruct.h @@ -37,10 +37,6 @@ SOFTWARE. * translation from client ids to server addresses. */ -#ifdef DEBUG -#define MAX_REQUEST_LOG 100 -#endif - extern _X_EXPORT CallbackListPtr ClientStateCallback; typedef struct { -- cgit v1.2.3 From d053c3b35f730fdaddd22f841dbd8ed6c9a07ba0 Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Sun, 2 Nov 2008 20:46:40 +0000 Subject: Xming: Slightly adjust the formatting of the logged command line Copyright (C) Colin Harrison 2005-2008 http://www.straightrunning.com/XmingNotes/ http://sourceforge.net/projects/xming/ Signed-off-by: Jon TURNEY --- hw/xwin/winprocarg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/xwin/winprocarg.c b/hw/xwin/winprocarg.c index 38ee9a2df..f20598db9 100755 --- a/hw/xwin/winprocarg.c +++ b/hw/xwin/winprocarg.c @@ -1448,13 +1448,13 @@ winLogCommandLine (int argc, char *argv[]) for (i = 0, iCurrLen = 0; i < argc; ++i) if (argv[i]) { - /* Add a character for lines that overflow */ + /* Adds two characters for lines that overflow */ if ((strlen (argv[i]) < CHARS_PER_LINE && iCurrLen + strlen (argv[i]) > CHARS_PER_LINE) || strlen (argv[i]) > CHARS_PER_LINE) { iCurrLen = 0; - ++iSize; + iSize += 2; } /* Add space for item and trailing space */ @@ -1484,7 +1484,7 @@ winLogCommandLine (int argc, char *argv[]) iCurrLen = 0; /* Add line break if it fits */ - strncat (g_pszCommandLine, "\n", iSize - strlen (g_pszCommandLine)); + strncat (g_pszCommandLine, "\n ", iSize - strlen (g_pszCommandLine)); } strncat (g_pszCommandLine, argv[i], iSize - strlen (g_pszCommandLine)); -- cgit v1.2.3 From a72865868f03b675f86990476fcee601822894b3 Mon Sep 17 00:00:00 2001 From: Joe Krahn Date: Tue, 20 Jan 2009 17:09:43 +0000 Subject: Cygwin/X: Consolidate dialog initialization in winInitDialog() Changed windialogs.c to set icons via window properties rather than class properties, and use LoadImage() for small icons, because LoadIcon() can only open large icons. Since this code is redundant across the dialogs, I put it in the winCenterDialog function, along with a few other redundant instructions, and renamed in winInitDialog(). Also, don't bogusly put our dialogs at the center of the virtual desktop if we are on a multimonitor system (this causes the dialog to end up split across two monitors in a dual-monitor side-by-side setup) Corrections to use HWND_TOPMOST instead of HWND_TOP and not to use SWP_NOZORDER from Colin Harrison fd.o bugzilla #4491 Signed-off-by: Jon TURNEY --- hw/xwin/windialogs.c | 116 ++++++++++++++++++++++----------------------------- 1 file changed, 50 insertions(+), 66 deletions(-) diff --git a/hw/xwin/windialogs.c b/hw/xwin/windialogs.c index ab06b0d00..274c04618 100755 --- a/hw/xwin/windialogs.c +++ b/hw/xwin/windialogs.c @@ -181,32 +181,64 @@ winUnoverrideURLButton (HWND hwnd, int id) /* * Center a dialog window in the desktop window + * and set small and large icons to X icons. */ static void -winCenterDialog (HWND hwndDlg) +winInitDialog (HWND hwndDlg) { HWND hwndDesk; - RECT rc, rcDlg, rcDesk; + RECT rc, rcDlg, rcDesk; + HICON hIcon, hIconSmall; hwndDesk = GetParent (hwndDlg); if (!hwndDesk || IsIconic (hwndDesk)) hwndDesk = GetDesktopWindow (); - GetWindowRect (hwndDesk, &rcDesk); - GetWindowRect (hwndDlg, &rcDlg); - CopyRect (&rc, &rcDesk); - - OffsetRect (&rcDlg, -rcDlg.left, -rcDlg.top); - OffsetRect (&rc, -rc.left, -rc.top); - OffsetRect (&rc, -rcDlg.right, -rcDlg.bottom); - - SetWindowPos (hwndDlg, - HWND_TOP, - rcDesk.left + (rc.right / 2), - rcDesk.top + (rc.bottom / 2), + /* Remove minimize and maximize buttons */ + SetWindowLong (hwndDlg, GWL_STYLE, + GetWindowLong (hwndDlg, GWL_STYLE) + & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX)); + + /* Set Window not to show in the task bar */ + SetWindowLong (hwndDlg, GWL_EXSTYLE, + GetWindowLong (hwndDlg, GWL_EXSTYLE) & ~WS_EX_APPWINDOW ); + + /* Center dialog window in the screen. Not done for multi-monitor systems, where + * it is likely to end up split across the screens. In that case, it appears + * near the Tray icon. + */ + if (GetSystemMetrics(SM_CMONITORS)>1) { + /* Still need to refresh the frame change. */ + SetWindowPos (hwndDlg, HWND_TOPMOST, 0,0,0,0, + SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED); + } else { + GetWindowRect (hwndDesk, &rcDesk); + GetWindowRect (hwndDlg, &rcDlg); + CopyRect (&rc, &rcDesk); + + OffsetRect (&rcDlg, -rcDlg.left, -rcDlg.top); + OffsetRect (&rc, -rc.left, -rc.top); + OffsetRect (&rc, -rcDlg.right, -rcDlg.bottom); + + SetWindowPos (hwndDlg, + HWND_TOPMOST, + rcDesk.left + (rc.right / 2), + rcDesk.top + (rc.bottom / 2), 0, 0, - SWP_NOSIZE | SWP_NOZORDER); + SWP_NOSIZE | SWP_FRAMECHANGED); + } + + /* Set icon to standard app icon */ + hIcon = LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN)); + hIconSmall = LoadImage (g_hInstance, + MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON, + GetSystemMetrics(SM_CXSMICON), + GetSystemMetrics(SM_CYSMICON), + LR_SHARED); + + PostMessage (hwndDlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon); + PostMessage (hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIconSmall); } @@ -271,15 +303,6 @@ winDisplayExitDialog (winPrivScreenPtr pScreenPriv) winExitDlgProc, (int) pScreenPriv); - /* Drop minimize and maximize buttons */ - SetWindowLong (g_hDlgExit, GWL_STYLE, - GetWindowLong (g_hDlgExit, GWL_STYLE) - & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX)); - SetWindowLong (g_hDlgExit, GWL_EXSTYLE, - GetWindowLong (g_hDlgExit, GWL_EXSTYLE) & ~WS_EX_APPWINDOW ); - SetWindowPos (g_hDlgExit, HWND_TOPMOST, 0, 0, 0, 0, - SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); - /* Show the dialog box */ ShowWindow (g_hDlgExit, SW_SHOW); @@ -314,14 +337,7 @@ winExitDlgProc (HWND hDialog, UINT message, /* Store pointers to private structures for future use */ s_pScreenPriv = (winPrivScreenPtr) lParam; - winCenterDialog (hDialog); - - /* Set icon to standard app icon */ - PostMessage (hDialog, - WM_SETICON, - ICON_SMALL, - (LPARAM) LoadIcon (g_hInstance, - MAKEINTRESOURCE(IDI_XWIN))); + winInitDialog (hDialog); /* Format the connected clients string */ pszConnectedClients = Xprintf (CONNECTED_CLIENTS_FORMAT, @@ -413,17 +429,6 @@ winDisplayDepthChangeDialog (winPrivScreenPtr pScreenPriv) pScreenPriv->hwndScreen, winChangeDepthDlgProc, (int) pScreenPriv); - - /* Drop minimize and maximize buttons */ - SetWindowLong (g_hDlgDepthChange, GWL_STYLE, - GetWindowLong (g_hDlgDepthChange, GWL_STYLE) - & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX)); - SetWindowLong (g_hDlgDepthChange, GWL_EXSTYLE, - GetWindowLong (g_hDlgDepthChange, GWL_EXSTYLE) - & ~WS_EX_APPWINDOW ); - SetWindowPos (g_hDlgDepthChange, 0, 0, 0, 0, 0, - SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOZORDER | SWP_NOSIZE); - /* Show the dialog box */ ShowWindow (g_hDlgDepthChange, SW_SHOW); @@ -480,13 +485,7 @@ winChangeDepthDlgProc (HWND hwndDialog, UINT message, s_pScreenPriv->dwLastWindowsBitsPixel); #endif - winCenterDialog( hwndDialog ); - - /* Set icon to standard app icon */ - PostMessage (hwndDialog, - WM_SETICON, - ICON_SMALL, - (LPARAM) LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN))); + winInitDialog( hwndDialog ); return TRUE; @@ -572,15 +571,6 @@ winDisplayAboutDialog (winPrivScreenPtr pScreenPriv) winAboutDlgProc, (int) pScreenPriv); - /* Drop minimize and maximize buttons */ - SetWindowLong (g_hDlgAbout, GWL_STYLE, - GetWindowLong (g_hDlgAbout, GWL_STYLE) - & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX)); - SetWindowLong (g_hDlgAbout, GWL_EXSTYLE, - GetWindowLong (g_hDlgAbout, GWL_EXSTYLE) & ~WS_EX_APPWINDOW); - SetWindowPos (g_hDlgAbout, 0, 0, 0, 0, 0, - SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); - /* Show the dialog box */ ShowWindow (g_hDlgAbout, SW_SHOW); @@ -622,13 +612,7 @@ winAboutDlgProc (HWND hwndDialog, UINT message, s_pScreenInfo = s_pScreenPriv->pScreenInfo; s_pScreen = s_pScreenInfo->pScreen; - winCenterDialog (hwndDialog); - - /* Set icon to standard app icon */ - PostMessage (hwndDialog, - WM_SETICON, - ICON_SMALL, - (LPARAM) LoadIcon (g_hInstance, MAKEINTRESOURCE(IDI_XWIN))); + winInitDialog (hwndDialog); /* Override the URL buttons */ winOverrideURLButton (hwndDialog, ID_ABOUT_CHANGELOG); -- cgit v1.2.3 From 888e6961a4ee76d05d212cfb946f089caafb3f69 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Wed, 7 Jan 2009 18:29:16 +0000 Subject: Cygwin/X: Correctly allow for the native window frame width in ValidateSizing() Fix internal WM to correctly calculate the native window border when validating window sizing Signed-off-by: Jon TURNEY --- hw/xwin/winmultiwindowwndproc.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c index b5e789c2c..0dd88851f 100644 --- a/hw/xwin/winmultiwindowwndproc.c +++ b/hw/xwin/winmultiwindowwndproc.c @@ -207,6 +207,8 @@ ValidateSizing (HWND hwnd, WindowPtr pWin, WinXSizeHints sizeHints; RECT *rect; int iWidth, iHeight; + RECT rcClient, rcWindow; + int iBorderWidthX, iBorderWidthY; /* Invalid input checking */ if (pWin==NULL || lParam==0) @@ -228,19 +230,20 @@ ValidateSizing (HWND hwnd, WindowPtr pWin, iWidth = rect->right - rect->left; iHeight = rect->bottom - rect->top; - /* Now remove size of any borders */ - iWidth -= 2 * GetSystemMetrics(SM_CXSIZEFRAME); - iHeight -= (GetSystemMetrics(SM_CYCAPTION) - + 2 * GetSystemMetrics(SM_CYSIZEFRAME)); - + /* Now remove size of any borders and title bar */ + GetClientRect(hwnd, &rcClient); + GetWindowRect(hwnd, &rcWindow); + iBorderWidthX = (rcWindow.right - rcWindow.left) - (rcClient.right - rcClient.left); + iBorderWidthY = (rcWindow.bottom - rcWindow.top) - (rcClient.bottom - rcClient.top); + iWidth -= iBorderWidthX; + iHeight -= iBorderWidthY; /* Constrain the size to legal values */ ConstrainSize (sizeHints, &iWidth, &iHeight); - /* Add back the borders */ - iWidth += 2 * GetSystemMetrics(SM_CXSIZEFRAME); - iHeight += (GetSystemMetrics(SM_CYCAPTION) - + 2 * GetSystemMetrics(SM_CYSIZEFRAME)); + /* Add back the size of borders and title bar */ + iWidth += iBorderWidthX; + iHeight += iBorderWidthY; /* Adjust size according to where we're dragging from */ switch(wParam) { -- cgit v1.2.3 From 4ec110327bdc4f2617cd6116539812d7ef96b24e Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Sun, 4 Jan 2009 18:29:49 +0000 Subject: Xming: Prevent the mouse wheel from stalling when another window is minimized. Fix internal WM to prevent the mouse wheel from stalling when another window is minimized. Signed-off-by: Jon TURNEY --- hw/xwin/winmultiwindowwndproc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c index 0dd88851f..becae2949 100644 --- a/hw/xwin/winmultiwindowwndproc.c +++ b/hw/xwin/winmultiwindowwndproc.c @@ -786,6 +786,10 @@ winTopLevelWindowProc (HWND hwnd, UINT message, if (!pWin || !pWin->overrideRedirect) /* for OOo menus */ winSendMessageToWM (s_pScreenPriv->pWMInfo, &wmMsg); } + /* Prevent the mouse wheel from stalling when another window is minimized */ + if (HIWORD(wParam) == 0 && LOWORD(wParam) == WA_ACTIVE && + (HWND)lParam != NULL && (HWND)lParam != (HWND)GetParent(hwnd)) + SetFocus(hwnd); return 0; case WM_ACTIVATEAPP: -- cgit v1.2.3 From 71ba9856a4f01aa7a42f1178c8da98a2e5ac23ae Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Tue, 3 Feb 2009 15:52:11 +0000 Subject: Xming: Cache atom lookups in clipboard integration code Cache the CLIPBOARD atom lookups in winClipboardWindowProc() Cache atom lookups in winClipboardFlushXEvents() Recache on server regeneration Copyright (C) Colin Harrison 2005-2008 http://www.straightrunning.com/XmingNotes/ http://sourceforge.net/projects/xming/ Signed-off-by: Jon TURNEY --- hw/xwin/winclipboardwndproc.c | 26 +++++++++++++------------- hw/xwin/winclipboardxevents.c | 27 +++++++++++++++------------ 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/hw/xwin/winclipboardwndproc.c b/hw/xwin/winclipboardwndproc.c index 04c0c586a..65faedf65 100644 --- a/hw/xwin/winclipboardwndproc.c +++ b/hw/xwin/winclipboardwndproc.c @@ -36,6 +36,7 @@ #include #include #include "winclipboard.h" +#include "misc.h" extern void winFixClipboardChain(); @@ -261,6 +262,8 @@ winClipboardWindowProc (HWND hwnd, UINT message, case WM_DRAWCLIPBOARD: { + static Atom atomClipboard; + static int generation; static Bool s_fProcessingDrawClipboard = FALSE; Display *pDisplay = g_pClipboardDisplay; Window iWindow = g_iClipboardWindow; @@ -268,6 +271,12 @@ winClipboardWindowProc (HWND hwnd, UINT message, winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Enter\n"); + if (generation != serverGeneration) + { + generation = serverGeneration; + atomClipboard = XInternAtom (pDisplay, "CLIPBOARD", False); + } + /* * We've occasionally seen a loop in the clipboard chain. * Try and fix it on the first hint of recursion. @@ -355,17 +364,13 @@ winClipboardWindowProc (HWND hwnd, UINT message, /* Release CLIPBOARD selection if owned */ iReturn = XGetSelectionOwner (pDisplay, - XInternAtom (pDisplay, - "CLIPBOARD", - False)); + atomClipboard); if (iReturn == g_iClipboardWindow) { winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD - " "CLIPBOARD selection is owned by us.\n"); XSetSelectionOwner (pDisplay, - XInternAtom (pDisplay, - "CLIPBOARD", - False), + atomClipboard, None, CurrentTime); } @@ -399,17 +404,12 @@ winClipboardWindowProc (HWND hwnd, UINT message, /* Reassert ownership of the CLIPBOARD */ iReturn = XSetSelectionOwner (pDisplay, - XInternAtom (pDisplay, - "CLIPBOARD", - False), + atomClipboard, iWindow, CurrentTime); if (iReturn == BadAtom || iReturn == BadWindow || - XGetSelectionOwner (pDisplay, - XInternAtom (pDisplay, - "CLIPBOARD", - False)) != iWindow) + XGetSelectionOwner (pDisplay, atomClipboard) != iWindow) { winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - " "Could not reassert ownership of CLIPBOARD\n"); diff --git a/hw/xwin/winclipboardxevents.c b/hw/xwin/winclipboardxevents.c index 95e86b1dc..ab8d5e42f 100644 --- a/hw/xwin/winclipboardxevents.c +++ b/hw/xwin/winclipboardxevents.c @@ -34,6 +34,7 @@ #include #endif #include "winclipboard.h" +#include "misc.h" /* @@ -53,18 +54,20 @@ winClipboardFlushXEvents (HWND hwnd, Display *pDisplay, Bool fUseUnicode) { - Atom atomLocalProperty = XInternAtom (pDisplay, - WIN_LOCAL_PROPERTY, - False); - Atom atomUTF8String = XInternAtom (pDisplay, - "UTF8_STRING", - False); - Atom atomCompoundText = XInternAtom (pDisplay, - "COMPOUND_TEXT", - False); - Atom atomTargets = XInternAtom (pDisplay, - "TARGETS", - False); + static Atom atomLocalProperty; + static Atom atomCompoundText; + static Atom atomUTF8String; + static Atom atomTargets; + static int generation; + + if (generation != serverGeneration) + { + generation = serverGeneration; + atomLocalProperty = XInternAtom (pDisplay, WIN_LOCAL_PROPERTY, False); + atomUTF8String = XInternAtom (pDisplay, "UTF8_STRING", False); + atomCompoundText = XInternAtom (pDisplay, "COMPOUND_TEXT", False); + atomTargets = XInternAtom (pDisplay, "TARGETS", False); + } /* Process all pending events */ while (XPending (pDisplay)) -- cgit v1.2.3 From fbe9ed27b1c2f932a74aa6ced134ecec021a3fc1 Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Thu, 29 Jan 2009 10:55:38 +0000 Subject: Xming: Avoid log spam if a windows application won't provide CF_UNICODETEXT clipboard format Signed-off-by: Jon TURNEY --- hw/xwin/winclipboardxevents.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/xwin/winclipboardxevents.c b/hw/xwin/winclipboardxevents.c index ab8d5e42f..0a64ba6db 100644 --- a/hw/xwin/winclipboardxevents.c +++ b/hw/xwin/winclipboardxevents.c @@ -191,8 +191,13 @@ winClipboardFlushXEvents (HWND hwnd, if (fUseUnicode && !IsClipboardFormatAvailable (CF_UNICODETEXT)) { - ErrorF ("winClipboardFlushXEvents - CF_UNICODETEXT is not " - "available from Win32 clipboard. Aborting.\n"); + static int count; /* Hack to stop acroread spamming the log */ + static HWND lasthwnd; /* I've not seen any other client get here repeatedly? */ + if (hwnd != lasthwnd) count = 0; + count++; + if (count < 6) ErrorF ("winClipboardFlushXEvents - CF_UNICODETEXT is not " + "available from Win32 clipboard. Aborting %d.\n", count); + lasthwnd = hwnd; /* Abort */ fAbort = TRUE; -- cgit v1.2.3 From d190a27a33ab8c198568baf184fad14df57e24ad Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Thu, 29 Jan 2009 11:00:49 +0000 Subject: Xming: Various tidy ups in winClipboardFlushXEvents() Signed-off-by: Jon TURNEY --- hw/xwin/winclipboardxevents.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/xwin/winclipboardxevents.c b/hw/xwin/winclipboardxevents.c index 0a64ba6db..ec40814db 100644 --- a/hw/xwin/winclipboardxevents.c +++ b/hw/xwin/winclipboardxevents.c @@ -311,6 +311,7 @@ winClipboardFlushXEvents (HWND hwnd, /* Initialize the text property */ xtpText.value = NULL; + xtpText.nitems = 0; /* Create the text property from the text list */ if (fUseUnicode) @@ -371,10 +372,13 @@ winClipboardFlushXEvents (HWND hwnd, /* Release the clipboard data */ GlobalUnlock (hGlobal); pszGlobalData = NULL; + fCloseClipboard = FALSE; + CloseClipboard (); /* Clean up */ XFree (xtpText.value); xtpText.value = NULL; + xtpText.nitems = 0; /* Setup selection notify event */ eventSelection.type = SelectionNotify; @@ -405,7 +409,11 @@ winClipboardFlushXEvents (HWND hwnd, winClipboardFlushXEvents_SelectionRequest_Done: /* Free allocated resources */ if (xtpText.value) + { XFree (xtpText.value); + xtpText.value = NULL; + xtpText.nitems = 0; + } if (pszConvertData) free (pszConvertData); if (hGlobal && pszGlobalData) @@ -446,7 +454,10 @@ winClipboardFlushXEvents (HWND hwnd, /* Close clipboard if it was opened */ if (fCloseClipboard) + { + fCloseClipboard = FALSE; CloseClipboard (); + } break; @@ -628,6 +639,7 @@ winClipboardFlushXEvents (HWND hwnd, /* Conversion succeeded or some unconvertible characters */ if (ppszTextList != NULL) { + iReturnDataLen = 0; for (i = 0; i < iCount; i++) { iReturnDataLen += strlen(ppszTextList[i]); @@ -673,6 +685,7 @@ winClipboardFlushXEvents (HWND hwnd, ppszTextList = NULL; XFree (xtpText.value); xtpText.value = NULL; + xtpText.nitems = 0; /* Convert the X clipboard string to DOS format */ winClipboardUNIXtoDOS (&pszReturnData, strlen (pszReturnData)); @@ -786,7 +799,11 @@ winClipboardFlushXEvents (HWND hwnd, if (ppszTextList) XFreeStringList (ppszTextList); if (xtpText.value) + { XFree (xtpText.value); + xtpText.value = NULL; + xtpText.nitems = 0; + } if (pszConvertData) free (pszConvertData); if (pwszUnicodeStr) -- cgit v1.2.3 From 966c8fccf16e77c8f459b4b175718323f2ec5d58 Mon Sep 17 00:00:00 2001 From: Colin Harrison Date: Mon, 5 Jan 2009 18:04:42 +0000 Subject: Xming: Fix some log spam Signed-off-by: Jon TURNEY --- hw/xwin/winmultiwindowwm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c index ea9dfca36..194dbf64c 100644 --- a/hw/xwin/winmultiwindowwm.c +++ b/hw/xwin/winmultiwindowwm.c @@ -1359,7 +1359,9 @@ winMultiWindowXMsgProcErrorHandler (Display *pDisplay, XErrorEvent *pErr) pErr->error_code, pszErrorMsg, sizeof (pszErrorMsg)); +#if CYGMULTIWINDOW_DEBUG ErrorF ("winMultiWindowXMsgProcErrorHandler - ERROR: %s\n", pszErrorMsg); +#endif return 0; } -- cgit v1.2.3 From 9955252564922e7e8702dfb6eab52c75605a4a22 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Mon, 5 Jan 2009 17:55:58 +0000 Subject: Cygwin/X: Remove unused TimeSinceLastInputEvent() Signed-off-by: Jon TURNEY --- hw/xwin/InitInput.c | 10 ---------- hw/xwin/win.h | 1 - hw/xwin/winmouse.c | 1 - 3 files changed, 12 deletions(-) diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c index 76c1715cf..2eaa024a8 100644 --- a/hw/xwin/InitInput.c +++ b/hw/xwin/InitInput.c @@ -48,7 +48,6 @@ DISPATCH_PROC(winProcSetSelectionOwner); * Local global declarations */ -CARD32 g_c32LastInputEventTime = 0; DeviceIntPtr g_pwinPointer; DeviceIntPtr g_pwinKeyboard; @@ -110,15 +109,6 @@ void DDXRingBell(int volume, int pitch, int duration) } -int -TimeSinceLastInputEvent () -{ - if (g_c32LastInputEventTime == 0) - g_c32LastInputEventTime = GetTickCount (); - return GetTickCount () - g_c32LastInputEventTime; -} - - /* See Porting Layer Definition - p. 17 */ void InitInput (int argc, char *argv[]) diff --git a/hw/xwin/win.h b/hw/xwin/win.h index 8005d5b33..9009df29b 100644 --- a/hw/xwin/win.h +++ b/hw/xwin/win.h @@ -636,7 +636,6 @@ extern DevPrivateKey g_iGCPrivateKey; extern DevPrivateKey g_iPixmapPrivateKey; extern DevPrivateKey g_iWindowPrivateKey; extern unsigned long g_ulServerGeneration; -extern CARD32 g_c32LastInputEventTime; extern DWORD g_dwEnginesSupported; extern HINSTANCE g_hInstance; extern int g_copyROP[]; diff --git a/hw/xwin/winmouse.c b/hw/xwin/winmouse.c index 188126b3a..9cfc945f8 100644 --- a/hw/xwin/winmouse.c +++ b/hw/xwin/winmouse.c @@ -354,7 +354,6 @@ winMouseButtonsHandle (ScreenPtr pScreen, void winEnqueueMotion(int x, int y) { miPointerSetPosition(g_pwinPointer, &x, &y); - g_c32LastInputEventTime = GetTickCount(); int i, nevents; int valuators[2]; -- cgit v1.2.3 From 996357e905c1082479bb238110b93bc170b8cb84 Mon Sep 17 00:00:00 2001 From: Joe Krahn Date: Tue, 20 Jan 2009 17:22:37 +0000 Subject: Cygwin/X: Update icons directly, rather than modifying the window's class Update icons directly to windows rather than modifying the window's class. Respect custom icons overriden via the configuration file. fd.o bugzilla #4491 Signed-off-by: Jon TURNEY --- hw/xwin/winmultiwindowicons.c | 54 ++++++++++++++++++---------------------- hw/xwin/winprefs.c | 35 ++++++++++++-------------- hw/xwin/winwin32rootlesswindow.c | 8 +++--- 3 files changed, 44 insertions(+), 53 deletions(-) diff --git a/hw/xwin/winmultiwindowicons.c b/hw/xwin/winmultiwindowicons.c index 88416bb70..8200aad88 100644 --- a/hw/xwin/winmultiwindowicons.c +++ b/hw/xwin/winmultiwindowicons.c @@ -364,43 +364,37 @@ void winUpdateIcon (Window id) { WindowPtr pWin; - HICON hIcon, hiconOld; + HICON hIcon, hIconSmall=NULL, hIconOld; pWin = (WindowPtr) LookupIDByType (id, RT_WINDOW); if (!pWin) return; - hIcon = winOverrideIcon ((unsigned long)pWin); + winWindowPriv(pWin); + if (pWinPriv->hWnd) { + hIcon = winOverrideIcon ((unsigned long)pWin); + if (!hIcon) { + hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON)); + if (!hIcon) { + hIcon = g_hIconX; + hIconSmall = g_hSmallIconX; + } else { + /* Leave undefined if not found */ + hIconSmall = winXIconToHICON (pWin, GetSystemMetrics(SM_CXSMICON)); + } + } - if (!hIcon) - hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON)); + /* Set the large icon */ + hIconOld = (HICON) SendMessage (pWinPriv->hWnd, + WM_SETICON, ICON_BIG, (LPARAM) hIcon); - if (hIcon) - { - winWindowPriv(pWin); + /* Delete the icon if its not the default */ + winDestroyIcon(hIconOld); - if (pWinPriv->hWnd) - { - hiconOld = (HICON) SetClassLong (pWinPriv->hWnd, - GCL_HICON, - (int) hIcon); - - /* Delete the icon if its not the default */ - winDestroyIcon(hiconOld); - } - } - - hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXSMICON)); - if (hIcon) - { - winWindowPriv(pWin); + /* Same for the small icon */ + hIconOld = (HICON) SendMessage (pWinPriv->hWnd, + WM_SETICON, ICON_SMALL, (LPARAM) hIconSmall); + winDestroyIcon(hIconOld); - if (pWinPriv->hWnd) - { - hiconOld = (HICON) SetClassLong (pWinPriv->hWnd, - GCL_HICONSM, - (int) hIcon); - winDestroyIcon (hiconOld); - } - } + } } void winInitGlobalIcons (void) diff --git a/hw/xwin/winprefs.c b/hw/xwin/winprefs.c index 8152064cb..fe49ae224 100644 --- a/hw/xwin/winprefs.c +++ b/hw/xwin/winprefs.c @@ -189,35 +189,28 @@ ReloadEnumWindowsProc (HWND hwnd, LPARAM lParam) /* It's our baby, either clean or dirty it */ if (lParam==FALSE) { - hicon = (HICON)GetClassLong(hwnd, GCL_HICON); + /* Reset the window's icon to undefined. */ + hicon = (HICON)SendMessage(hwnd, WM_SETICON, ICON_BIG, 0); - /* Unselect any icon in the class structure */ - SetClassLong (hwnd, GCL_HICON, (LONG)LoadIcon (NULL, IDI_APPLICATION)); - - /* If it's generated on-the-fly, get rid of it, will regen */ + /* If the old icon is generated on-the-fly, get rid of it, will regen */ winDestroyIcon (hicon); - - hicon = (HICON)GetClassLong(hwnd, GCL_HICONSM); - - /* Unselect any icon in the class structure */ - SetClassLong (hwnd, GCL_HICONSM, 0); - /* If it's generated on-the-fly, get rid of it, will regen */ + /* Same for the small icon */ + hicon = (HICON)SendMessage(hwnd, WM_SETICON, ICON_SMALL, 0); winDestroyIcon (hicon); - - /* Remove any menu additions, use bRevert flag */ + + /* Remove any menu additions; bRevert=TRUE destroys any modified menus */ GetSystemMenu (hwnd, TRUE); - /* This window is now clean of our taint */ + /* This window is now clean of our taint (but with undefined icons) */ } else { - /* Make the icon default, dynamic, or from xwinrc */ - SetClassLong (hwnd, GCL_HICON, (LONG)g_hIconX); - SetClassLong (hwnd, GCL_HICONSM, (LONG)g_hSmallIconX); + /* winUpdateIcon() will set the icon default, dynamic, or from xwinrc */ wid = (Window)GetProp (hwnd, WIN_WID_PROP); if (wid) winUpdateIcon (wid); + /* Update the system menu for this window */ SetupSysMenu ((unsigned long)hwnd); @@ -241,8 +234,12 @@ ReloadPrefs (void) int i; #ifdef XWIN_MULTIWINDOW - /* First, iterate over all windows replacing their icon with system */ - /* default one and deleting any custom system menus */ + /* First, iterate over all windows, deleting their icons and custom menus. + * This is really only needed because winDestroyIcon() will try to + * destroy the old global icons, which will have changed. + * It is probably better to set a windows USER_DATA to flag locally defined + * icons, and use that to accurately know when to destroy old icons. + */ EnumThreadWindows (g_dwCurrentThreadID, ReloadEnumWindowsProc, FALSE); #endif diff --git a/hw/xwin/winwin32rootlesswindow.c b/hw/xwin/winwin32rootlesswindow.c index 3f521d600..2b2f63010 100755 --- a/hw/xwin/winwin32rootlesswindow.c +++ b/hw/xwin/winwin32rootlesswindow.c @@ -177,12 +177,12 @@ winMWExtWMUpdateIcon (Window id) if (pRLWinPriv->hWnd) { - hiconOld = (HICON) SetClassLong (pRLWinPriv->hWnd, - GCL_HICON, - (int) hIcon); - + + hiconOld = (HICON) SendMessage (pRLWinPriv->hWnd, + WM_SETICON, ICON_BIG, (LPARAM) hIcon); winDestroyIcon(hiconOld); } + hIcon=NULL; } } -- cgit v1.2.3 From f1441b83538e6ba8a1557c4f5ea50c53a1837087 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Wed, 27 May 2009 10:06:10 -0700 Subject: XQuartz: More localization updates (cherry picked from commit b107390c9f30571902556b4d053e62d345a06254) --- .../bundle/Resources/Dutch.lproj/locversion.plist | 2 +- .../Resources/Dutch.lproj/main.nib/designable.nib | 127 +- .../Dutch.lproj/main.nib/keyedobjects.nib | Bin 46175 -> 46115 bytes .../bundle/Resources/French.lproj/locversion.plist | 2 +- .../bundle/Resources/German.lproj/locversion.plist | 2 +- .../Resources/German.lproj/main.nib/designable.nib | 317 ++-- .../German.lproj/main.nib/keyedobjects.nib | Bin 50746 -> 53122 bytes .../Resources/Italian.lproj/locversion.plist | 2 +- .../Resources/Japanese.lproj/locversion.plist | 2 +- .../Resources/Spanish.lproj/locversion.plist | 2 +- .../Spanish.lproj/main.nib/designable.nib | 221 +-- .../Spanish.lproj/main.nib/keyedobjects.nib | Bin 53308 -> 53745 bytes .../bundle/Resources/da.lproj/locversion.plist | 2 +- .../Resources/da.lproj/main.nib/designable.nib | 2 +- .../Resources/da.lproj/main.nib/keyedobjects.nib | Bin 49367 -> 49339 bytes .../bundle/Resources/fi.lproj/locversion.plist | 2 +- .../Resources/fi.lproj/main.nib/designable.nib | 492 ++--- .../Resources/fi.lproj/main.nib/keyedobjects.nib | Bin 50882 -> 53312 bytes .../bundle/Resources/ko.lproj/locversion.plist | 2 +- .../Resources/ko.lproj/main.nib/designable.nib | 34 +- .../Resources/ko.lproj/main.nib/keyedobjects.nib | Bin 46775 -> 46678 bytes .../bundle/Resources/no.lproj/locversion.plist | 2 +- .../bundle/Resources/pl.lproj/locversion.plist | 2 +- .../Resources/pl.lproj/main.nib/designable.nib | 435 ++--- .../Resources/pl.lproj/main.nib/keyedobjects.nib | Bin 49985 -> 52417 bytes .../bundle/Resources/pt.lproj/locversion.plist | 2 +- .../Resources/pt.lproj/main.nib/designable.nib | 44 +- .../Resources/pt.lproj/main.nib/keyedobjects.nib | Bin 50446 -> 50446 bytes .../bundle/Resources/pt_PT.lproj/locversion.plist | 2 +- .../Resources/pt_PT.lproj/main.nib/designable.nib | 1946 ++++++-------------- .../pt_PT.lproj/main.nib/keyedobjects.nib | Bin 51308 -> 51384 bytes .../bundle/Resources/ru.lproj/locversion.plist | 2 +- .../bundle/Resources/sv.lproj/locversion.plist | 2 +- .../Resources/sv.lproj/main.nib/designable.nib | 602 +++--- .../Resources/sv.lproj/main.nib/keyedobjects.nib | Bin 50165 -> 52576 bytes .../bundle/Resources/zh_CN.lproj/locversion.plist | 2 +- .../bundle/Resources/zh_TW.lproj/locversion.plist | 2 +- .../Resources/zh_TW.lproj/main.nib/designable.nib | 20 +- .../zh_TW.lproj/main.nib/keyedobjects.nib | Bin 41976 -> 42003 bytes 39 files changed, 1719 insertions(+), 2555 deletions(-) diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist index 51e3827a3..151315080 100644 --- a/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib index 05eca0db4..ab78847d0 100644 --- a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib @@ -1,18 +1,17 @@ - + 1050 - 10A222 - 708 - 994.5 - 404.00 + 10A314 + 718 + 1013 + 415.00 com.apple.InterfaceBuilder.CocoaPlugin - 708 + 718 YES - YES @@ -20,7 +19,7 @@ YES - + YES @@ -194,7 +193,7 @@ - UHJvZ3JhbW1hJ3M + Programma's 1048576 2147483647 @@ -202,7 +201,7 @@ submenuAction: - UHJvZ3JhbW1hJ3M + Programma's YES @@ -398,10 +397,10 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} - + 256 YES @@ -461,9 +460,7 @@ 67239424 4194304 - QWxzIHUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBrYW4gaGV0IGdlYnJ1aWsgdmFuIHRvZXRzY29tYmlu -YXRpZXMgdm9vciBtZW51Y29tbWFkbydzIGNvbmZsaWN0ZXJlbiBtZXQgWDExLXByb2dyYW1tYSdzIGRp -ZSBkZSBNZXRhLW1vZGlmaWVyIGdlYnJ1aWtlbi4 + Als u deze optie inschakelt, kan het gebruik van toetscombinaties voor menucommado's conflicteren met X11-programma's die de Meta-modifier gebruiken. LucidaGrande 11 @@ -475,9 +472,9 @@ ZSBkZSBNZXRhLW1vZGlmaWVyIGdlYnJ1aWtlbi4 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA @@ -619,9 +616,7 @@ ZW4uCg 67239424 4194304 - Vm9vciBYMTEtZ2VsdWlkc3NpZ25hbGVuIHdvcmR0IGhldCB3YWFyc2NodXdpbmdzc2lnbmFhbCB2YW4g -aGV0IHN5c3RlZW0gZ2VicnVpa3QsIHpvYWxzIGluZ2VzdGVsZCBpbiBoZXQgdGFiYmxhZCAnR2VsdWlk -c2VmZmVjdGVuJyB2YW4gaGV0IHN5c3RlZW12b29ya2V1cmVucGFuZWVsICdHZWx1aWQnLg + Voor X11-geluidssignalen wordt het waarschuwingssignaal van het systeem gebruikt, zoals ingesteld in het tabblad 'Geluidseffecten' van het systeemvoorkeurenpaneel 'Geluid'. @@ -861,9 +856,7 @@ c2VmZmVjdGVuJyB2YW4gaGV0IHN5c3RlZW12b29ya2V1cmVucGFuZWVsICdHZWx1aWQnLg 67239424 4194304 - SGllcm1lZSBzY2hha2VsdCB1IGhldCBtZW51b25kZXJkZWVsICJrb3BpZWVyIiBpbiBlbiBtYWFrdCB1 -IHN5bmNocm9uaXNhdGllIG1vZ2VsaWprIHR1c3NlbiBoZXQga2xlbWJvcmQgdmFuIE9TIFggZW4gZGUg -Q0xJUEJPQVJELSBlbiBQUklNQVJZLWJ1ZmZlciB2YW4gWDExLg + 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. @@ -983,8 +976,7 @@ Q0xJUEJPQVJELSBlbiBQUklNQVJZLWJ1ZmZlciB2YW4gWDExLg 67239424 4194304 - VmFud2VnZSBiZXBlcmtpbmdlbiBpbiBoZXQgWDExLXByb3RvY29sIHdlcmt0IGRlemUgb3B0aWUgbW9n -ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4 + Vanwege beperkingen in het X11-protocol werkt deze optie mogelijk niet altijd in alle programma's. @@ -1114,7 +1106,7 @@ ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4 67239424 4194304 - Indien ingeschakeld, wordt bij aanmaak van een nieuw X11-venster X11.app op de voorgrond geplaatst (in plaats van Finder.app, Terminal.app, enz.) + Indien ingeschakeld, wordt bij aanmaak van een nieuw X11-venster X11.app op de voorgrond geplaatst (in plaats van Finder.app, Terminal.app, enz.). @@ -1187,10 +1179,7 @@ ZWxpamsgbmlldCBhbHRpamQgaW4gYWxsZSBwcm9ncmFtbWEncy4 67239424 4194304 - V2FubmVlciB1IFgxMSBzdGFydCwgd29yZGVuIGVyIFhhdXRob3JpdHktdG9lZ2FuZ3Njb250cm9sZXNs -ZXV0ZWxzIGFhbmdlbWFha3QuIEFscyBoZXQgSVAtYWRyZXMgdmFuIGhldCBzeXN0ZWVtIHdvcmR0IGdl -d2lqemlnZCwgd29yZGVuIGRlemUgdG9ldHNlbiBvbmdlbGRpZyB3YWFyZG9vciBoZXQgbW9nZWxpamsg -aXMgZGF0IFgxMS1wcm9ncmFtbWEncyBuaWV0IGt1bm5lbiB3b3JkZW4gZ2VzdGFydC4 + 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. @@ -1207,10 +1196,7 @@ aXMgZGF0IFgxMS1wcm9ncmFtbWEncyBuaWV0IGt1bm5lbiB3b3JkZW4gZ2VzdGFydC4 67239424 4194304 - QWxzIHUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBtb2V0ICdWb2VyIGlkZW50aXRlaXRzY29udHJvbGUg -dWl0IHZvb3IgdmVyYmluZGluZ2VuJyBvb2sgd29yZGVuIGluZ2VzY2hha2VsZCB0ZXIgYmV2ZWlsaWdp -bmcgdmFuIGhldCBzeXN0ZWVtLiBBbHMgZGV6ZSBvcHRpZSBpcyB1aXRnZXNjaGFrZWxkLCB3b3JkZW4g -dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 + 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. @@ -1255,11 +1241,10 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 {564, 308} - {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1272,7 +1257,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1361,8 +1346,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 62.730998992919922 1000 - 75628032 - 0 + 75628096 + 2048 Naam @@ -1399,8 +1384,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 40 1000 - 75628032 - 0 + 75628096 + 2048 Commando @@ -1426,8 +1411,8 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 10 1000 - 67239424 - 0 + 75628096 + 2048 Toetsen @@ -1454,7 +1439,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 6 System controlBackgroundColor - + @@ -1484,6 +1469,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 -1 0 YES + 0 {{1, 17}, {301, 198}} @@ -1567,7 +1553,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps @@ -1587,7 +1573,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 - UHJvZ3JhbW1hJ3M + Programma's 1048576 2147483647 @@ -1595,7 +1581,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 submenuAction: - UHJvZ3JhbW1hJ3M + Programma's YES @@ -1611,7 +1597,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 - UGFzIGFhbuKApg + Pas aan… 1048576 2147483647 @@ -2186,28 +2172,26 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES 0 - - YES - + -2 - - RmlsZSdzIE93bmVyA + + File's Owner -1 - + First Responder -3 - + Application @@ -2221,7 +2205,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 - + MainMenu @@ -2466,7 +2450,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 196 - + X11Controller @@ -2476,7 +2460,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES - + PrefsPanel @@ -2740,7 +2724,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES - + EditPrograms @@ -2763,7 +2747,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 - + DockMenu @@ -3317,6 +3301,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES YES + -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3606,6 +3591,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3673,9 +3659,9 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 com.apple.InterfaceBuilder.CocoaPlugin {{271, 666}, {301, 153}} - {{437, 672}, {564, 308}} + {{325, 672}, {564, 308}} com.apple.InterfaceBuilder.CocoaPlugin - {{437, 672}, {564, 308}} + {{325, 672}, {564, 308}} {{184, 290}, {481, 345}} @@ -3896,9 +3882,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES - - YES - + YES @@ -3906,9 +3890,7 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 YES - - YES - + YES @@ -3946,6 +3928,15 @@ dmVyYmluZGluZ2VuIHZhbiBleHRlcm5lIHByb2dyYW1tYSdzIG5pZXQgdG9lZ2VzdGFhbi4 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES ../X11.xcodeproj 3 diff --git a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib index 4aa9bb3c9..ea9418ee9 100644 Binary files a/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/French.lproj/locversion.plist b/hw/xquartz/bundle/Resources/French.lproj/locversion.plist index 02995842e..6adec6831 100644 --- a/hw/xquartz/bundle/Resources/French.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/French.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/German.lproj/locversion.plist b/hw/xquartz/bundle/Resources/German.lproj/locversion.plist index 4e0034631..5272fed2a 100644 --- a/hw/xquartz/bundle/Resources/German.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/German.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib index d71a98a56..12517fe8f 100644 --- a/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib @@ -1,11 +1,15 @@ - + 1050 - 9C31 - 677 - 949.26 - 352.00 + 10A222 + 708 + 994.5 + 404.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 708 + YES @@ -393,7 +397,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -428,7 +432,7 @@ Drei Maustasten nachbilden LucidaGrande - 1.300000e+01 + 13 1044 @@ -461,7 +465,7 @@ bsO8bGVpc3RlIGRpZSBYMTEtUHJvZ3JhbW1lIHN0w7ZyZW4sIGRpZSBNZXRhLVNvbmRlcnRhc3RlbiB2 ZXJ3ZW5kZW4uA LucidaGrande - 1.100000e+01 + 11 3100 @@ -470,9 +474,9 @@ ZXJ3ZW5kZW4uA 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NwA @@ -639,7 +643,7 @@ LCB3aWUgaW4gZGVyIFN5c3RlbWVpbnN0ZWxsdW5nIOKAnlRvbmVmZmVrdGXigJwgZmVzdGdlbGVndC4< 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -706,6 +710,7 @@ LCB3aWUgaW4gZGVyIFN5c3RlbWVpbnN0ZWxsdW5nIOKAnlRvbmVmZmVrdGXigJwgZmVzdGdlbGVndC4< + 3 YES @@ -1262,7 +1267,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1275,7 +1280,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1360,9 +1365,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 YES - 1.227310e+02 - 6.273100e+01 - 1.000000e+03 + 122.73099999999999 + 62.731000000000002 + 1000 75628032 0 @@ -1398,9 +1403,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 - 1.000000e+02 - 4.000000e+01 - 1.000000e+03 + 100 + 40 + 1000 75628032 0 @@ -1425,9 +1430,9 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 - 6.900000e+01 - 1.000000e+01 - 1.000000e+03 + 69 + 10 + 1000 67239424 0 @@ -1447,7 +1452,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 Textzelle LucidaGrande - 1.200000e+01 + 12 16 @@ -1457,7 +1462,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 6 System controlBackgroundColor - + @@ -1467,8 +1472,8 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 - 3.000000e+00 - 2.000000e+00 + 3 + 2 6 @@ -1479,8 +1484,10 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 MC41AA - 1.700000e+01 + 17 1379958784 + + 1 -1 0 @@ -1501,7 +1508,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 _doScroller: - 9.949238e-01 + 0.99492380000000002 @@ -1511,7 +1518,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 1 _doScroller: - 6.885246e-01 + 0.68852460000000004 @@ -1568,7 +1575,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps @@ -3316,11 +3323,8 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 YES - + YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3375,7 +3379,6 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 169.editorWindowContentRectSynchronizationRect 19.IBPluginDependency 19.ImportedFromIB2 - 196.IBPluginDependency 196.ImportedFromIB2 200295.IBPluginDependency 200295.IBShouldRemoveOnLegacySave @@ -3390,6 +3393,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 244.IBEditorWindowLastContentRect + 244.IBPluginDependency 244.IBViewEditorWindowController.showingLayoutRectangles 244.IBWindowTemplateEditedContentRect 244.ImportedFromIB2 @@ -3409,6 +3413,7 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 272.IBPluginDependency 272.ImportedFromIB2 285.IBEditorWindowLastContentRect + 285.IBPluginDependency 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles 285.IBWindowTemplateEditedContentRect @@ -3608,14 +3613,12 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 YES + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3635,266 +3638,266 @@ dGVuIFByb2dyYW1tZW4gbmljaHQgZXJsYXVidC4 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + {{168, 821}, {113, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + {{202, 626}, {154, 153}} com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{349, 858}, {315, 153}} com.apple.InterfaceBuilder.CocoaPlugin - + {{271, 666}, {301, 153}} {{325, 198}, {613, 302}} + com.apple.InterfaceBuilder.CocoaPlugin {{325, 198}, {613, 302}} - + {{184, 290}, {481, 345}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{58, 803}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{68, 585}, {512, 271}} - - + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {512, 271}} - + {{433, 406}, {486, 327}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - + {{145, 836}, {375, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + {{67, 819}, {336, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{20, 641}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + {{79, 616}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + diff --git a/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib index a95fee95b..a017a7f40 100644 Binary files a/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist index 3c4e94cd1..26ba572cd 100644 --- a/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist index 8db4f8aba..b78c7c5fe 100644 --- a/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 76 + 83 diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist b/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist index 05ec1981c..068c07777 100644 --- a/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib index d2eb1d110..adbcd6f5c 100644 --- a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib @@ -1,14 +1,14 @@ - + 1050 - 10A222 - 708 - 994.5 - 404.00 + 10A314 + 718 + 1013 + 415.00 com.apple.InterfaceBuilder.CocoaPlugin - 708 + 718 YES @@ -19,7 +19,7 @@ YES - + YES @@ -229,7 +229,7 @@ - RWRpY2nDs24 + Edición 1048576 2147483647 @@ -237,7 +237,7 @@ submenuAction: - RWRpY2nDs24 + Edición YES @@ -314,7 +314,7 @@ - UmVjb3JyZXIgdmVudGFuYXMgYWwgcmV2w6lzA + Recorrer ventanas al revés ~ 1179914 2147483647 @@ -397,10 +397,10 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} - + 256 YES @@ -409,6 +409,7 @@ 256 {{13, 10}, {593, 292}} + YES @@ -425,11 +426,12 @@ 256 {{18, 210}, {402, 18}} + YES 67239424 0 - U2ltdWxhciByYXTDs24gZGUgdHJlcyBib3RvbmVzA + Simular ratón de tres botones LucidaGrande 13 @@ -456,13 +458,12 @@ 256 {{36, 40}, {501, 42}} + YES 67239424 4194304 - Q3VhbmRvIGVzdGEgb3BjacOzbiBlc3TDoSBhY3RpdmFkYSwgcHVlZGUgcXVlIGxvcyBlcXVpdmFsZW50 -ZXMgZGUgdGVjbGFkbyBkZSBsYSBiYXJyYSBkZSBtZW7DunMgaW50ZXJmaWVyYW4gY29uIGxhcyBhcGxp -Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA + 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. LucidaGrande 11 @@ -474,16 +475,16 @@ Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA 6 System controlTextColor - + 3 MAA @@ -495,6 +496,7 @@ Y2FjaW9uZXMgWDExIHF1ZSB1c2VuIGVsIG1vZGlmaWNhZG9yIE1ldGEuA 256 {{36, 170}, {501, 34}} + YES 67239424 @@ -513,6 +515,7 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA256 {{18, 88}, {402, 18}} + YES 67239424 @@ -535,12 +538,12 @@ IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA256 {{36, 112}, {501, 28}} + YES 67239424 4194304 - UGVybWl0ZSBxdWUgbG9zIGNhbWJpb3MgZW4gZWwgbWVuw7ogZGUgdGVjbGFkbyByZWVtcGxhY2VuIGxh -IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA + Permite que los cambios en el menú de teclado reemplacen la distribución de teclas actual de X11. @@ -553,11 +556,12 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA 256 {{18, 146}, {402, 18}} + YES 67239424 0 - U2VndWlyIGxhIGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFkbyBkZWwgc2lzdGVtYQ + Seguir la distribución de teclado del sistema 1211912703 @@ -573,6 +577,7 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA {{10, 33}, {573, 246}} + Entrada @@ -618,9 +623,7 @@ IGRpc3RyaWJ1Y2nDs24gZGUgdGVjbGFzIGFjdHVhbCBkZSBYMTEuA 67239424 4194304 - TG9zIHNvbmlkb3MgZGUgWDExIHVzYXLDoW4gZWwgc29uaWRvIGRlIGFsZXJ0YSBlc3TDoW5kYXIgZGVs -IHNpc3RlbWEgZGVmaW5pZG8gZW4gZWwgcGFuZWwg4oCcRWZlY3RvcyBkZSBzb25pZG/igJ0gZGUgUHJl -ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg + 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. @@ -654,7 +657,7 @@ ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg 75 - Los de la pantalla + Desde la pantalla 1048576 2147483647 @@ -744,8 +747,7 @@ ZmVyZW5jaWFzIGRlbCBTaXN0ZW1hLg 67239424 4194304 - RXN0YSBvcGNpw7NuIHNlcsOhIGVmZWN0aXZhIGxhIHByw7N4aW1hIHZleiBxdWUgc2UgaW5pY2llIFgx -MS4 + Esta opción será efectiva la próxima vez que se inicie X11. @@ -784,8 +786,7 @@ MS4 67239424 0 - TW9zdHJhIGJhcnJhIGRlIG1lbsO6cyBhdXRvbcOhdGljYW1lbnRlIGVuIGxhIG1vZGFsaWRhZCBkZSBw -YW50YWxsYSBjb21wbGV0YSA + Mostra barra de menús automáticamente en la modalidad de pantalla completa 1211912703 @@ -807,9 +808,7 @@ YW50YWxsYSBjb21wbGV0YSA 67239424 4194304 - QWN0aXZhIGxhIHZlbnRhbmEgcmHDrXogZGUgWDExLiBVc2UgbGEgY29tYmluYWNpw7NuIGRlIHRlY2xh -cyBDb21hbmRvICsgT3BjacOzbiArIEEgcGFyYSBlbnRyYXIgbyBzYWxpciBkZSBsYSBtb2RhbGlkYWQg -ZGUgcGFudGFsbGEgY29tcGxldGEuA + 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. @@ -842,7 +841,7 @@ ZGUgcGFudGFsbGEgY29tcGxldGEuA 67239424 0 - QWN0aXZhciBzaW5jcm9uaXphY2nDs24 + Activar sincronización 1211912703 @@ -864,9 +863,7 @@ ZGUgcGFudGFsbGEgY29tcGxldGEuA 67239424 4194304 - QWN0aXZhIGVsIMOtdGVtIGRlIG1lbsO6ICJjb3BpYXIiIHkgcGVybWl0ZSBzaW5jcm9uaXphciBlbCBw -b3J0YXBhcGVsZXMgZGUgT1NYIHkgbG9zIGLDumZlcnMgQ0xJUEJPQVJEIHkgUFJJTUFSWSBkZSBYMTEu -A + Activa el ítem de menú “copiar” y permite sincronizar el portapapeles de OSX y los búfers CLIPBOARD y PRIMARY de X11. @@ -904,8 +901,7 @@ A 67239424 0 - QWN0dWFsaXphciBlbCBQUklNQVJZIChjbGljIGNvbiBlbCBib3TDs24gY2VudHJhbCkgY3VhbmRvIGNh -bWJpZSBlbCBwb3J0YXBhcGVsZXMuA + Actualizar el PRIMARY (clic con el botón central) cuando cambie el portapapeles. 1211912703 @@ -971,8 +967,7 @@ bWJpZSBlbCBwb3J0YXBhcGVsZXMuA 67239424 4194304 - RGVzYWN0aXZlIGVzdGEgb3BjacOzbiBzaSBkZXNlYSB1c2FyIHhjbGlwYm9hcmQsIGtsaXBwZXIgbyBj -dWFscXVpZXIgb3RybyBnZXN0b3IgZGUgcG9ydGFwYXBlbGVzIGRlIFgxMS4 + Desactive esta opción si desea usar xclipboard, klipper o cualquier otro gestor de portapapeles de X11. @@ -988,8 +983,7 @@ dWFscXVpZXIgb3RybyBnZXN0b3IgZGUgcG9ydGFwYXBlbGVzIGRlIFgxMS4 67239424 4194304 - QSBjYXVzYSBkZSBsYXMgbGltaXRhY2lvbmVzIGRlbCBwcm90b2NvbG8gZGUgWDExLCBwdWVkZSBxdWUg -ZXN0YSBvcGNpw7NuIG5vIGZ1bmNpb25lIHNpZW1wcmUgZW4gYWxndW5hcyBhcGxpY2FjaW9uZXMuA + A causa de las limitaciones del protocolo de X11, puede que esta opción no funcione siempre en algunas aplicaciones. @@ -1043,9 +1037,7 @@ ZXN0YSBvcGNpw7NuIG5vIGZ1bmNpb25lIHNpZW1wcmUgZW4gYWxndW5hcyBhcGxpY2FjaW9uZXMuA 67239424 4194304 - Q3VhbmRvIGVzdMOhIGFjdGl2YWRhLCBhbCBoYWNlciBjbGljIGVuIHVuYSB2ZW50YW5hIGluYWN0aXZh -LCBsYSB2ZW50YW5hIHNlIGFjdGl2YSB5IGFkZW3DoXMgZWwgY2xpYyBkZWwgcmF0w7NuIHNlIHRyYW5z -bWl0ZSBhIGVsbGEuA + 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. @@ -1061,7 +1053,7 @@ bWl0ZSBhIGVsbGEuA 67239424 0 - RW5mb2NhciBsYSBwb3NpY2nDs24gZGVsIHJhdMOzbg + Enfocar la posición del ratón 1211912703 @@ -1121,9 +1113,7 @@ bWl0ZSBhIGVsbGEuA 67239424 4194304 - Q3VhbmRvIGVzdMOhIGFjdGl2YWRhLCBhbCBjcmVhciB1bmEgbnVldmEgdmVudGFuYSBkZSBYMTEgZWwg -YXJjaGl2byBYMTEuYXBwIHNlIHNpdMO6YSBlbiBwcmltZXIgcGxhbm8gKHBvciBlbmNpbWEgZGUgRmlu -ZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ + 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.) @@ -1196,10 +1186,7 @@ ZGVyLmFwcCwgVGVybWluYWwuYXBwLCBldGMuKQ 67239424 4194304 - QWwgaW5pY2lhciBYMTEgc2UgY3JlYXLDoW4gdW5hcyBjbGF2ZXMgZGUgY29udHJvbCBkZSBhY2Nlc28g -WGF1dGhvcml0eS4gU2kgbGEgZGlyZWNjacOzbiBJUCBkZWwgc2lzdGVtYSBjYW1iaWEsIGVzdGFzIGNs -YXZlcyBkZWphcsOhbiBkZSBzZXIgdsOhbGlkYXMsIGxvIHF1ZSBpbXBlZGlyw61hIHF1ZSBwdWRpZXNl -biBlamVjdXRhcnNlIGxhcyBhcGxpY2FjaW9uZXMgWDExLg + 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. @@ -1216,10 +1203,7 @@ biBlamVjdXRhcnNlIGxhcyBhcGxpY2FjaW9uZXMgWDExLg 67239424 4194304 - U2kgZXN0YSBvcGNpw7NuIGVzdMOhIGFjdGl2YWRhLCBsYSBvcGNpw7NuIOKAnEF1dGVudGljYXIgY29u -ZXhpb25lc+KAnSB0YW1iacOpbiBkZWJlIGVzdGFybG8gcGFyYSBnYXJhbnRpemFyIGxhIHNlZ3VyaWRh -ZCBkZWwgc2lzdGVtYS4gU2kgZXN0w6EgZGVzYWN0aXZhZGEsIGxhcyBjb25leGlvbmVzIGRlIGFwbGlj -YWNpb25lcyByZW1vdGFzIG5vIGVzdMOhbiBwZXJtaXRpZGFzLg + 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. @@ -1236,8 +1220,7 @@ YWNpb25lcyByZW1vdGFzIG5vIGVzdMOhbiBwZXJtaXRpZGFzLg 67239424 4194304 - RXN0YXMgb3BjaW9uZXMgc2Vyw6FuIGVmZWN0aXZhcyBsYSBwcsOzeGltYSB2ZXogcXVlIHNlIGluaWNp -ZSBYMTEuA + Estas opciones serán efectivas la próxima vez que se inicie X11. @@ -1265,10 +1248,12 @@ ZSBYMTEuA {619, 308} + + {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1276,15 +1261,15 @@ ZSBYMTEuA 2 {{302, 440}, {454, 271}} 1350041600 - TWVuw7ogZGUgYXBsaWNhY2lvbmVzIFgxMQ + Menú de aplicaciones X11 NSPanel View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} - + 256 YES @@ -1293,6 +1278,7 @@ ZSBYMTEuA 265 {{340, 191}, {110, 32}} + YES 67239424 @@ -1316,6 +1302,7 @@ ZSBYMTEuA 265 {{340, 159}, {110, 32}} + YES 67239424 @@ -1349,12 +1336,14 @@ ZSBYMTEuA 256 {301, 198} + YES 256 {301, 17} + @@ -1362,6 +1351,7 @@ ZSBYMTEuA 256 {{302, 0}, {16, 17}} + YES @@ -1370,19 +1360,22 @@ ZSBYMTEuA 62.730998992919922 1000 - 75628032 - 0 + 75628096 + 2048 Nombre 3 MC4zMzMzMzI5OQA - + 6 System - headerTextColor - + disabledControlTextColor + + 3 + MC4zMzMzMzMzMzMzAA + @@ -1405,16 +1398,16 @@ ZSBYMTEuA - 99 + 88 40 1000 - 75628032 - 0 + 75628096 + 2048 Comando - + 338820672 @@ -1433,13 +1426,13 @@ ZSBYMTEuA - 71 + 82 10 1000 - 67239424 - 0 - RnVuY2nDs24gcsOhcGlkYQ + 75628096 + 2048 + Función rápida 6 @@ -1447,7 +1440,7 @@ ZSBYMTEuA headerColor - + 338820672 @@ -1465,7 +1458,7 @@ ZSBYMTEuA 6 System controlBackgroundColor - + @@ -1496,10 +1489,12 @@ ZSBYMTEuA -1 0 YES + 0 {{1, 17}, {301, 198}} + @@ -1510,6 +1505,7 @@ ZSBYMTEuA 256 {{302, 17}, {15, 198}} + _doScroller: 0.99492377042770386 @@ -1519,10 +1515,11 @@ ZSBYMTEuA 256 {{1, 215}, {301, 15}} + 1 _doScroller: - 0.68852460384368896 + 0.99668874172185429 @@ -1533,6 +1530,7 @@ ZSBYMTEuA {{1, 0}, {301, 17}} + @@ -1542,6 +1540,7 @@ ZSBYMTEuA {{20, 20}, {318, 231}} + 50 @@ -1556,11 +1555,12 @@ ZSBYMTEuA 265 {{340, 223}, {114, 32}} + YES -2080244224 137887744 - QcOxYWRpciDDrXRlbQ + Añadir ítem -2038284033 @@ -1576,14 +1576,16 @@ ZSBYMTEuA {454, 271} + + {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps - TWVuw7o + Menú YES @@ -1623,7 +1625,7 @@ ZSBYMTEuA - UGVyc29uYWxpemFy4oCmA + Personalizar… 1048576 2147483647 @@ -2198,28 +2200,26 @@ ZSBYMTEuA YES 0 - - YES - + -2 - - RmlsZSdzIE93bmVyA + + File's Owner -1 - + First Responder -3 - + Application @@ -2233,7 +2233,7 @@ ZSBYMTEuA - + MainMenu @@ -2478,7 +2478,7 @@ ZSBYMTEuA 196 - + X11Controller @@ -2488,7 +2488,7 @@ ZSBYMTEuA YES - + PrefsPanel @@ -2752,7 +2752,7 @@ ZSBYMTEuA YES - + EditPrograms @@ -2775,7 +2775,7 @@ ZSBYMTEuA - + DockMenu @@ -3329,6 +3329,7 @@ ZSBYMTEuA YES YES + -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3618,6 +3619,7 @@ ZSBYMTEuA YES + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3685,10 +3687,10 @@ ZSBYMTEuA com.apple.InterfaceBuilder.CocoaPlugin {{271, 666}, {301, 153}} - {{438, 548}, {619, 308}} + {{300, 409}, {619, 308}} com.apple.InterfaceBuilder.CocoaPlugin - - {{438, 548}, {619, 308}} + + {{300, 409}, {619, 308}} {{184, 290}, {481, 345}} @@ -3705,11 +3707,11 @@ ZSBYMTEuA {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - {{68, 585}, {454, 271}} + {{68, 453}, {454, 271}} com.apple.InterfaceBuilder.CocoaPlugin - {{68, 585}, {454, 271}} + {{68, 453}, {454, 271}} {{433, 406}, {486, 327}} @@ -3910,9 +3912,7 @@ ZSBYMTEuA YES - - YES - + YES @@ -3920,9 +3920,7 @@ ZSBYMTEuA YES - - YES - + YES @@ -3960,6 +3958,15 @@ ZSBYMTEuA 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES ../X11.xcodeproj 3 diff --git a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib index fe4b554db..6d445d1db 100644 Binary files a/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/da.lproj/locversion.plist b/hw/xquartz/bundle/Resources/da.lproj/locversion.plist index 799458752..ee9467302 100644 --- a/hw/xquartz/bundle/Resources/da.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/da.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib index 53166fe2c..e0c838bcc 100644 --- a/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib @@ -626,7 +626,7 @@ ZXJzaWd0Lg 256 - {{74, 202}, {128, 26}} + {{70, 202}, {128, 26}} YES diff --git a/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib index 3b79218e1..e1c0a2eb1 100644 Binary files a/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist b/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist index 3c0e25c28..ec5c798d9 100644 --- a/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib index 215618845..dbdfc1e8e 100644 --- a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib @@ -1,11 +1,15 @@ - + 1050 - 9C31 - 677 - 949.26 - 352.00 + 10A222 + 708 + 994.5 + 404.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 708 + YES @@ -393,7 +397,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -428,7 +432,7 @@ RW11bG9pIGtvbG1lbsOkcHDDpGltaXN0w6QgaGlpcnTDpA LucidaGrande - 1.300000e+01 + 13 1044 @@ -461,7 +465,7 @@ w6Rpcml0w6QgWDExLW9oamVsbWlhLCBqb3RrYSBrw6R5dHTDpHbDpHQgTWV0YS1tdXVudG9uw6RwcMOk aW50w6QuA LucidaGrande - 1.100000e+01 + 11 3100 @@ -470,9 +474,9 @@ aW50w6QuA 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NwA @@ -639,7 +643,7 @@ ZXR1c3BhbmVlbGlzc2EuA 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -706,6 +710,7 @@ ZXR1c3BhbmVlbGlzc2EuA + 3 YES @@ -898,8 +903,8 @@ dXR0dXUuA 67239424 0 - UMOkaXZpdMOkIFgxMTpuIGVuc2lzaWphaW5lbiB2YWxpbnRhIChrZXNraW9zb2l0dXMpLCAKa3VuIE1h -YyBPUyBYOm4gbGVpa2Vww7Z5dMOkIG11dXR0dXUuA + UMOkaXZpdMOkIFgxMTpuIGVuc2lzaWphaW5lbiB2YWxpbnRhIChrZXNraW9zb2l0dXMpLCBrdW4gTWFj +IE9TIFg6biBsZWlrZXDDtnl0w6QgbXV1dHR1dS4 1211912703 @@ -1265,7 +1270,7 @@ ZXJyYW4uA {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1278,7 +1283,7 @@ ZXJyYW4uA View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1363,9 +1368,9 @@ ZXJyYW4uA YES - 1.217310e+02 - 6.273100e+01 - 1.000000e+03 + 121.73099999999999 + 62.731000000000002 + 1000 75628032 0 @@ -1401,9 +1406,9 @@ ZXJyYW4uA - 9.900000e+01 - 4.000000e+01 - 1.000000e+03 + 99 + 40 + 1000 75628032 0 @@ -1428,9 +1433,9 @@ ZXJyYW4uA - 7.100000e+01 - 1.000000e+01 - 1.000000e+03 + 71 + 10 + 1000 67239424 0 @@ -1450,7 +1455,7 @@ ZXJyYW4uA Text Cell LucidaGrande - 1.200000e+01 + 12 16 @@ -1460,7 +1465,7 @@ ZXJyYW4uA 6 System controlBackgroundColor - + @@ -1470,8 +1475,8 @@ ZXJyYW4uA - 3.000000e+00 - 2.000000e+00 + 3 + 2 6 @@ -1482,8 +1487,10 @@ ZXJyYW4uA MC41AA - 1.700000e+01 + 17 1379958784 + + 1 -1 0 @@ -1492,6 +1499,7 @@ ZXJyYW4uA {{1, 17}, {301, 198}} + 4 @@ -1503,7 +1511,7 @@ ZXJyYW4uA _doScroller: - 9.949238e-01 + 0.99492380000000002 @@ -1513,7 +1521,7 @@ ZXJyYW4uA 1 _doScroller: - 6.885246e-01 + 0.68852460000000004 @@ -1524,6 +1532,7 @@ ZXJyYW4uA {{1, 0}, {301, 17}} + 4 @@ -1532,6 +1541,7 @@ ZXJyYW4uA {{20, 20}, {318, 231}} + 50 @@ -1568,7 +1578,7 @@ ZXJyYW4uA {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps @@ -3316,11 +3326,8 @@ ZXJyYW4uA YES - + YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3380,7 +3387,6 @@ ZXJyYW4uA 169.editorWindowContentRectSynchronizationRect 19.IBPluginDependency 19.ImportedFromIB2 - 196.IBPluginDependency 196.ImportedFromIB2 200295.IBPluginDependency 200295.IBPropertyAccessControl @@ -3399,6 +3405,7 @@ ZXJyYW4uA 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 244.IBEditorWindowLastContentRect + 244.IBPluginDependency 244.IBPropertyAccessControl 244.IBViewEditorWindowController.showingLayoutRectangles 244.IBWindowTemplateEditedContentRect @@ -3420,6 +3427,7 @@ ZXJyYW4uA 272.IBPluginDependency 272.ImportedFromIB2 285.IBEditorWindowLastContentRect + 285.IBPluginDependency 285.IBPropertyAccessControl 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles @@ -3693,21 +3701,19 @@ ZXJyYW4uA YES + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3721,350 +3727,350 @@ ZXJyYW4uA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + {{168, 821}, {113, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + {{202, 626}, {154, 153}} com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + {{349, 858}, {315, 153}} com.apple.InterfaceBuilder.CocoaPlugin - + {{271, 666}, {301, 153}} {{706, 450}, {525, 323}} - + com.apple.InterfaceBuilder.CocoaPlugin + {{706, 450}, {525, 323}} - + {{184, 290}, {481, 345}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + {{58, 803}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{68, 585}, {469, 271}} - - - + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {469, 271}} - + {{433, 406}, {486, 327}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - - + + {{145, 836}, {357, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + {{67, 819}, {336, 20}} com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{84, 709}, {131, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{20, 641}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + {{79, 616}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + diff --git a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib index 677f9796b..dfb04f15f 100644 Binary files a/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist b/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist index 61d38f50e..5ce4bb731 100644 --- a/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib index 9917b6326..32291ca88 100644 --- a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib @@ -1,5 +1,5 @@ - + 1050 10A222 @@ -12,7 +12,6 @@ YES - YES @@ -398,10 +397,10 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} - + 256 YES @@ -475,9 +474,9 @@ mCDsnojsirXri4jri6QuA 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NwA @@ -1026,7 +1025,7 @@ teuLiOuLpC4gA 67239424 0 - 67mE7Zmc7ISxIOyciOuPhOyasCDtgbTrpq0g66y07IucA + 67mE7Zmc7ISxIOyciOuPhOyasCDtgbTrpq0 1211912703 @@ -1049,8 +1048,8 @@ teuLiOuLpC4gA 67239424 4194304 7Zmc7ISx7ZmU65CY7JeI7J2EIOuVjCDruYTtmZzshLEg7JyI64+E7Jqw66W8IO2BtOumre2VmOuptCDr -p4jsmrDsiqQg7YG066at7J20IOu5hO2ZnOyEsSDsnIjrj4TsmrDrpbwg7Ya16rO87ZWY7JesIO2ZnOyE -se2ZlOuQnCDsnIjrj4TsmrDrpbwg7YG066at7ZWp64uI64ukLg +p4jsmrDsiqQg7YG066at7J20IOu5hO2ZnOyEsSDsnIjrj4TsmrDroZwg7Ya16rO865CgIOu/kOunjCDs +lYTri4jrnbwg67mE7Zmc7ISxIOyciOuPhOyasOqwgCAg7Zmc7ISx7ZmU65Cp64uI64ukLg @@ -1128,8 +1127,8 @@ soPsnYAg7J2867aAIOyXreq4sOuKpeydhCDqsIDsp4Dqs6Ag7J6I7Iq164uI64ukLg 67239424 4194304 7Zmc7ISx7ZmU65CY7JeI7J2EIOuVjCDsg4jroZzsmrQgWDExIOyciOuPhOyasOulvCDsg53shLHtlZjr -qbQoRmluZGVyLmFwcCDrsI8gVGVybWluYWwuYXBwIOuTsSDrjIDsi6ApIFgxMS5hcHDqsIAg66eoIOyV -nuycvOuhnCDsnbTrj5nrkKnri4jri6QuA +qbQgKEZpbmRlci5hcHAg67CPIO2EsOuvuOuEkC5hcHAg65OxIOuMgOyLoCkgWDExLmFwcOydtCDrp6gg +7JWe7Jy866GcIOydtOuPmeuQqeuLiOuLpC4 @@ -1222,8 +1221,8 @@ nbQg7Jyg7Zqo7ZWY7KeAIOyViuqyjCDrkJjslrQgWDExIOydkeyaqSDtlITroZzqt7jrnqjsnbQg7Iuk 67239424 4194304 - 7Zmc7ISx7ZmU65CY66m0LCDsi5zsiqTthZwg67O07JWI7J2EIO2ZleyduO2VmOq4sCDsnITtlbQg7J24 -7KadIOyXsOqysOuPhCDtmZzshLHtmZTrkJjslrTslbwg7ZWp64uI64ukLiDruYTtmZzshLHtmZTrkJjr + 7Zmc7ISx7ZmU65CY66m0LCDsi5zsiqTthZwg67O07JWI7J2EIO2ZleyduO2VmOq4sCDsnITtlbQg7Jew +6rKwIOyduOymneuPhCDtmZzshLHtmZTrkJjslrTslbwg7ZWp64uI64ukLiDruYTtmZzshLHtmZTrkJjr qbQsIOybkOqyqSDsnZHsmqkg7ZSE66Gc6re4656oIOyXsOqysOydtCDtl4jsmqnrkJjsp4Ag7JWK7Iq1 64uI64ukLg @@ -1271,11 +1270,10 @@ i6QuA {484, 308} - {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1288,7 +1286,7 @@ i6QuA View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1470,7 +1468,7 @@ i6QuA 6 System controlBackgroundColor - + @@ -1583,7 +1581,7 @@ i6QuA {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps diff --git a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib index 310a9f403..1a91df720 100644 Binary files a/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/no.lproj/locversion.plist b/hw/xquartz/bundle/Resources/no.lproj/locversion.plist index f647493d2..da8104076 100644 --- a/hw/xquartz/bundle/Resources/no.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/no.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist index d24c81354..233544b10 100644 --- a/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib index 1d3d386cb..9e99f1cd2 100644 --- a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib @@ -1,11 +1,15 @@ - + 1050 - 9C31 - 677 - 949.26 - 352.00 + 10A222 + 708 + 994.5 + 404.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 708 + YES @@ -393,7 +397,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -428,7 +432,7 @@ Emuluj mysz z trzema przyciskami LucidaGrande - 1.300000e+01 + 13 1044 @@ -460,7 +464,7 @@ b2xpZG93YcSHIHogcHJvZ3JhbWFtaSBYMTEgdcW8eXdhasSFY3ltaSBtb2R5ZmlrYXRvcmEgTWV0YS4 LucidaGrande - 1.100000e+01 + 11 3100 @@ -469,9 +473,9 @@ b2xpZG93YcSHIHogcHJvZ3JhbWFtaSBYMTEgdcW8eXdhasSFY3ltaSBtb2R5ZmlrYXRvcmEgTWV0YS4< 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NwA @@ -638,7 +642,7 @@ eSBkxbp3acSZa293ZS4 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -705,6 +709,7 @@ eSBkxbp3acSZa293ZS4 + 3 YES @@ -1209,10 +1214,10 @@ Lg 67239424 4194304 - R2R5IHfFgsSFY3pvbmUsIHcgY2VsdSB6YXBld25pZW5pYSBiZXpwaWVjemXFhHN0d2Egd8WCxIVjem9u -YSBtdXNpIGJ5xIcgdGFrxbxlIG9wY2phIFV3aWVyenl0ZWxuaWFqIHBvxYLEhWN6ZW5pYS4gR2R5IHd5 -xYLEhWN6b25lLCBwb8WCxIVjemVuaWEgemUgemRhbG55Y2ggcHJvZ3JhbcOzdyBuaWUgc8SFIGRvendv -bG9uZS4 + R2R5IHBvbGUgamVzdCB6YXpuYWN6b25lLCBkbGEgYmV6cGllY3plxYRzdHdhIHfFgsSFY3pvbmEgbXVz +aSBiecSHIHRha8W8ZSBvcGNqYSBVd2llcnp5dGVsbmlhaiBwb8WCxIVjemVuaWEuIEdkeSBwb2xlIG5p +ZSBqZXN0IHphem5hY3pvbmUsIHBvxYLEhWN6ZW5pYSB6ZSB6ZGFsbnljaCBwcm9ncmFtw7N3IG5pZSBz +xIUgZG96d29sb25lLg @@ -1260,7 +1265,7 @@ bG9uZS4 {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1273,7 +1278,7 @@ bG9uZS4 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1358,9 +1363,9 @@ bG9uZS4 YES - 1.227310e+02 - 6.273100e+01 - 1.000000e+03 + 122.73099999999999 + 62.731000000000002 + 1000 75628032 0 @@ -1397,9 +1402,9 @@ bG9uZS4 - 1.000000e+02 - 4.000000e+01 - 1.000000e+03 + 100 + 40 + 1000 75628032 0 @@ -1425,9 +1430,9 @@ bG9uZS4 - 6.900000e+01 - 1.000000e+01 - 1.000000e+03 + 69 + 10 + 1000 67239424 0 @@ -1447,7 +1452,7 @@ bG9uZS4 S29tw7Nya2EgdGVrc3Rvd2E LucidaGrande - 1.200000e+01 + 12 16 @@ -1457,7 +1462,7 @@ bG9uZS4 6 System controlBackgroundColor - + @@ -1468,8 +1473,8 @@ bG9uZS4 - 3.000000e+00 - 2.000000e+00 + 3 + 2 6 @@ -1480,8 +1485,10 @@ bG9uZS4 MC41AA - 1.700000e+01 + 17 1379958784 + + 1 -1 0 @@ -1502,7 +1509,7 @@ bG9uZS4 _doScroller: - 9.949238e-01 + 0.99492380000000002 @@ -1512,7 +1519,7 @@ bG9uZS4 1 _doScroller: - 6.885246e-01 + 0.68852460000000004 @@ -1569,7 +1576,7 @@ bG9uZS4 {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps @@ -3317,11 +3324,8 @@ bG9uZS4 YES - + YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3378,7 +3382,6 @@ bG9uZS4 169.editorWindowContentRectSynchronizationRect 19.IBPluginDependency 19.ImportedFromIB2 - 196.IBPluginDependency 196.ImportedFromIB2 200295.IBPluginDependency 200295.IBShouldRemoveOnLegacySave @@ -3393,6 +3396,7 @@ bG9uZS4 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 244.IBEditorWindowLastContentRect + 244.IBPluginDependency 244.IBPropertyAccessControl 244.IBViewEditorWindowController.showingLayoutRectangles 244.IBWindowTemplateEditedContentRect @@ -3414,6 +3418,7 @@ bG9uZS4 272.IBPluginDependency 272.ImportedFromIB2 285.IBEditorWindowLastContentRect + 285.IBPluginDependency 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles 285.IBWindowTemplateEditedContentRect @@ -3665,14 +3670,12 @@ bG9uZS4 YES + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3690,324 +3693,324 @@ bG9uZS4 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + {{168, 821}, {113, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + {{202, 626}, {154, 153}} com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{349, 858}, {315, 153}} com.apple.InterfaceBuilder.CocoaPlugin - + {{271, 666}, {301, 153}} {{437, 548}, {584, 308}} - + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 548}, {584, 308}} - + {{184, 290}, {481, 345}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + {{58, 803}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{68, 585}, {454, 271}} - - + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} - + {{433, 406}, {486, 327}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - + {{145, 836}, {333, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + {{67, 819}, {336, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + {{523, 716}, {155, 83}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{20, 641}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + {{79, 616}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + diff --git a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib index 2aecc443f..363a2acc7 100644 Binary files a/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist index 1972524b8..d14c37b4e 100644 --- a/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib index 64cf2bd04..42b40e4a8 100644 --- a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib @@ -450,7 +450,7 @@ 256 - {{36, 67}, {559, 28}} + {{36, 60}, {548, 31}} YES @@ -487,7 +487,7 @@ 256 - {{36, 170}, {559, 37}} + {{36, 162}, {548, 42}} YES @@ -506,7 +506,7 @@ ZS4KA 256 - {{18, 98}, {402, 18}} + {{18, 97}, {402, 18}} YES @@ -528,7 +528,7 @@ ZS4KA 256 - {{36, 118}, {525, 25}} + {{36, 126}, {548, 14}} YES @@ -585,7 +585,7 @@ IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA 256 - {{18, 78}, {402, 18}} + {{18, 70}, {402, 18}} YES @@ -607,7 +607,7 @@ IG1hcGEgZG8gdGVjbGFkbyBhdHVhbCBkbyBYMTEuA 256 - {{36, 44}, {539, 28}} + {{36, 36}, {548, 28}} YES @@ -715,7 +715,7 @@ cm9zLg 256 - {{17, 205}, {50, 20}} + {{17, 191}, {45, 34}} YES @@ -772,7 +772,7 @@ YW1lbnRlLg 256 - {{37, 98}, {409, 23}} + {{37, 97}, {409, 23}} YES @@ -794,7 +794,7 @@ YW1lbnRlLg 256 - {{36, 120}, {539, 23}} + {{36, 126}, {548, 17}} YES @@ -850,7 +850,7 @@ YXJhIGRpZ2l0YXIgZSBzYWlyIGRvIG1vZG8gdGVsYSBjaGVpYS4 256 - {{36, 188}, {536, 32}} + {{36, 188}, {536, 28}} YES @@ -868,7 +868,7 @@ b3MgYnVmZmVycyBQUklOQ0lQQUlTIGRvIFgxMS4 256 - {{34, 107}, {511, 23}} + {{37, 96}, {511, 23}} YES @@ -891,7 +891,7 @@ bSBmb3IgYWx0ZXJhZGEuA 256 - {{34, 87}, {501, 18}} + {{37, 71}, {501, 23}} YES @@ -914,7 +914,7 @@ ZW0gZm9yIGFsdGVyYWRhLg 256 - {{34, 62}, {553, 23}} + {{37, 46}, {553, 23}} YES @@ -937,7 +937,7 @@ eHRvIGZvciBzZWxlY2lvbmFkby4 256 - {{34, 165}, {511, 23}} + {{37, 159}, {511, 23}} YES @@ -960,7 +960,7 @@ QSBmb3IgYWx0ZXJhZGEuA 256 - {{48, 134}, {524, 28}} + {{55, 125}, {529, 28}} YES @@ -978,7 +978,7 @@ YSBkbyBYMTEuA 256 - {{48, 28}, {536, 28}} + {{55, 14}, {526, 28}} YES @@ -1011,7 +1011,7 @@ o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA 256 - {{15, 212}, {402, 18}} + {{18, 212}, {402, 18}} YES @@ -1033,7 +1033,7 @@ o28gbmVtIHNlbXByZSBmdW5jaW9uZSBlbSBhbGd1bnMgYXBsaWNhdGl2b3MuA 256 - {{31, 175}, {542, 31}} + {{36, 175}, {542, 31}} YES @@ -1051,7 +1051,7 @@ ZG8gcGFyYSBlc3NhIGphbmVsYSwgYSBxdWFsIHRhbWLDqW0gw6kgYXRpdmFkYS4 256 - {{15, 151}, {402, 18}} + {{18, 151}, {402, 18}} YES @@ -1073,7 +1073,7 @@ ZG8gcGFyYSBlc3NhIGphbmVsYSwgYSBxdWFsIHRhbWLDqW0gw6kgYXRpdmFkYS4 256 - {{31, 126}, {441, 21}} + {{36, 128}, {441, 17}} YES @@ -1090,7 +1090,7 @@ dW5zIGluY29udmVuaWVudGVzLg 256 - {{15, 107}, {402, 18}} + {{18, 107}, {402, 18}} YES @@ -1112,7 +1112,7 @@ dW5zIGluY29udmVuaWVudGVzLg 256 - {{31, 59}, {542, 42}} + {{36, 73}, {542, 28}} YES diff --git a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib index 7129958e4..ed121ede6 100644 Binary files a/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist b/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist index 3e2a0f49e..4910e409d 100644 --- a/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib index fdf839e0a..1bab3a8f8 100644 --- a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib @@ -1,17 +1,26 @@ - + 1050 - 9C31 - 629 - 949.26 - 352.00 + 9G55 + 677.1 + 949.43 + 353.00 YES YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + YES @@ -21,41 +30,41 @@ - FirstResponder + FirstResponder NSApplication - MainMenu + MainMenu YES - X11 - + X11 + 1048576 2147483647 - NSImage + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState submenuAction: - + X11 YES Acerca do X11 - + 2147483647 - + @@ -64,30 +73,30 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + - U2VydmnDp29zA - + U2VydmnDp29zA + 1048576 2147483647 - + submenuAction: - + U2VydmnDp29zA YES @@ -98,12 +107,12 @@ YES YES - - + + 1048576 2147483647 - + @@ -112,58 +121,58 @@ 1572864 2147483647 - + YES YES - - + + 1048576 2147483647 - + Ocultar o X11 - h + h 1048576 2147483647 - + 42 T2N1bHRhciBvdXRyYXMgYXBsaWNhw6fDtWVzA - + h 1572864 2147483647 - + Mostrar tudo - + 1048576 2147483647 - + 42 YES YES - - + + 1048576 2147483647 - + @@ -172,7 +181,7 @@ 1048576 2147483647 - + _NSAppleMenu @@ -180,51 +189,51 @@ - QXBsaWNhw6fDtWVzA - + QXBsaWNhw6fDtWVzA + 1048576 2147483647 - + submenuAction: - + QXBsaWNhw6fDtWVzA YES YES YES - - + + 1048576 2147483647 - + Personalizar... - + 1048576 2147483647 - + - RWRpw6fDo28 - + RWRpw6fDo28 + 1048576 2147483647 - + submenuAction: - + RWRpw6fDo28 YES @@ -234,22 +243,22 @@ 1048576 2147483647 - + - Janela - + Janela + 1048576 2147483647 - + submenuAction: - + Janela YES @@ -259,7 +268,7 @@ 1048576 2147483647 - + @@ -268,27 +277,27 @@ 1048576 2147483647 - + Zoom - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -297,7 +306,7 @@ 1048840 2147483647 - + @@ -306,38 +315,38 @@ 1179914 2147483647 - + YES YES - - + + 1048576 2147483647 - + Passar tudo para a frente - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + _NSWindowsMenu @@ -345,25 +354,25 @@ - Ajuda - + Ajuda + 1048576 2147483647 - + submenuAction: - + Ajuda YES Ajuda do X11 - + 1048576 2147483647 - + @@ -372,7 +381,7 @@ _NSMainMenu - X11Controller + X11Controller 3 @@ -380,10 +389,11 @@ {{319, 328}, {633, 308}} 1350041600 UHJlZmVyw6puY2lhcyBkbyBYMTE - NSPanel + NSPanel View + {3.40282e+38, 3.40282e+38} {320, 240} @@ -393,177 +403,173 @@ 256 - + {{13, 10}, {607, 292}} + + YES - - - 256 - - YES - - - 256 - {{18, 210}, {402, 18}} - - YES - - 67239424 - 0 - U2ltdWxhciByYXRvIGRlIHRyw6pzIGJvdMO1ZXM - - LucidaGrande - 1.300000e+01 - 1044 - - - 1211912703 - 2 - - - NSSwitch - - - NSSwitch + + + 1 + + + + 256 + + YES + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 0 + U2ltdWxhciByYXRvIGRlIHRyw6pzIGJvdMO1ZXM + + LucidaGrande + 1.300000e+01 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 - - - 200 - 25 - - - - 256 - {{36, 57}, {510, 28}} - - YES - - 67239424 - 4194304 - U2UgZXN0aXZlcmVtIGFjdGl2YXMsIGFzIHRlY2xhcyBlcXVpdmFsZW50ZXMgZGEgYmFycmEgZGUgbWVu + + + 256 + {{36, 57}, {510, 28}} + + YES + + 67239424 + 4194304 + U2UgZXN0aXZlcmVtIGFjdGl2YXMsIGFzIHRlY2xhcyBlcXVpdmFsZW50ZXMgZGEgYmFycmEgZGUgbWVu dXMgcG9kZW0gaW50ZXJmZXJpciBuYXMgYXBsaWNhw6fDtWVzIFgxMSBxdWUgdXRpbGl6YW0gbyBtb2Rp ZmljYWRvciBNZXRhLg - - - 1.100000e+01 - 3100 - - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA + + LucidaGrande + 1.100000e+01 + 3100 - - - 6 - - controlTextColor - - 3 - MAA + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + 3 + MAA + - - - - 256 - {{36, 165}, {510, 39}} - - YES - - 67239424 - 4194304 - QW8gY2xpY2FyLCBtYW50ZW5oYSBwcmVtaWRhcyBhcyB0ZWNsYXMgT3DDp8OjbyBvdSBDb21hbmRvIHBh + + + 256 + {{36, 162}, {510, 42}} + + YES + + 67239424 + 4194304 + QW8gY2xpY2FyLCBtYW50ZW5oYSBwcmVtaWRhcyBhcyB0ZWNsYXMgT3DDp8OjbyBvdSBDb21hbmRvIHBh cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo - - - - - + + + + + + - - - - 256 - {{18, 91}, {402, 18}} - - YES - - 67239424 - 0 - QWN0aXZhciBhcyBlcXVpdmFsw6puY2lhcyBkZSB0ZWNsYWRvIHBhcmEgWDExA - - - 1211912703 - 2 - - - - - 200 - 25 + + + 256 + {{18, 91}, {402, 18}} + + YES + + 67239424 + 0 + QWN0aXZhciBhcyBlcXVpdmFsw6puY2lhcyBkZSB0ZWNsYWRvIHBhcmEgWDExA + + + 1211912703 + 2 + + + + + 200 + 25 + - - - - 256 - {{36, 121}, {510, 19}} - - YES - - 67239424 - 4194304 - UGVybWl0ZSBxdWUgYWx0ZXJhw6fDtWVzIGRvIG1lbnUgZGUgZW50cmFkYSBzZSBzb2JyZXBvbmhhbSBh + + + 256 + {{36, 121}, {510, 19}} + + YES + + 67239424 + 4194304 + UGVybWl0ZSBxdWUgYWx0ZXJhw6fDtWVzIGRvIG1lbnUgZGUgZW50cmFkYSBzZSBzb2JyZXBvbmhhbSBh byBhY3R1YWwgbWFwYSBkZSB0ZWNsYXMgZG8gWDExLg - - - - - + + + + + + - - - - 256 - {{18, 146}, {402, 18}} - - YES - - 67239424 - 0 - U2VndWlyIGEgZGlzcG9zacOnw6NvIGRvIHRlY2xhZG8gZG8gc2lzdGVtYQ - - - 1211912703 - 2 - - - - - 200 - 25 + + + 256 + {{18, 146}, {402, 18}} + + YES + + 67239424 + 0 + U2VndWlyIGEgZGlzcG9zacOnw6NvIGRvIHRlY2xhZG8gZG8gc2lzdGVtYQ + + + 1211912703 + 2 + + + + + 200 + 25 + + {{10, 33}, {587, 246}} + - {{10, 33}, {587, 246}} - - - - {{13, 10}, {607, 292}} - - - YES - - - 1 - - Entrada @@ -591,10 +597,10 @@ byBhY3R1YWwgbWFwYSBkZSB0ZWNsYXMgZG8gWDExLg 1211912703 2 - + - - + + 200 25 @@ -612,7 +618,7 @@ byBhY3R1YWwgbWFwYSBkZSB0ZWNsYXMgZG8gWDExLg dGVtYSwgdGFsIGNvbW8gZXN0aXZlciBkZWZpbmlkbyBlbSBFZmVpdG9zIHNvbm9yb3MsIG5hcyBwcmVm ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA - + @@ -621,7 +627,7 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA 256 - {{64, 201}, {131, 26}} + {{68, 201}, {131, 26}} YES @@ -632,11 +638,11 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA 109199615 1 - + LucidaGrande 1.300000e+01 16 - + @@ -645,12 +651,12 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA Do monitor - + 1048576 2147483647 1 - + _popUpItemAction: -1 @@ -666,11 +672,11 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA 256 cores - + 1048576 2147483647 - + _popUpItemAction: 8 @@ -678,11 +684,11 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA Milhares - + 1048576 2147483647 - + _popUpItemAction: 15 @@ -690,11 +696,11 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA TWlsaMO1ZXM - + 1048576 2147483647 - + _popUpItemAction: 24 @@ -718,7 +724,7 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA 4194304 Q29yZXM6Cg - + @@ -736,7 +742,7 @@ ZXLDqm5jaWFzIGRvIHNpc3RlbWEuA RXN0YSBvcMOnw6NvIGVudHJhcsOhIGVtIHZpZ29yIGRhIHByw7N4aW1hIHZleiBxdWUgbyBYMTEgZm9y IGV4ZWN1dGFkby4 - + @@ -756,10 +762,10 @@ IGV4ZWN1dGFkby4 1211912703 2 - + - - + + 200 25 @@ -779,10 +785,10 @@ bXBsZXRvA 1211912703 2 - + - - + + 200 25 @@ -800,7 +806,7 @@ bXBsZXRvA cyBDb21hbmRvLU9ww6fDo28tQSBwYXJhIGVudHJhciBlIHNhaXIgZG8gbW9kbyBkZSBlY3LDoyBjb21w bGV0by4 - + @@ -836,10 +842,10 @@ bGV0by4 1211912703 2 - + - - + + 200 25 @@ -876,10 +882,10 @@ TUFSWSBkbyBYMTEuA 1211912703 2 - + - - + + 200 25 @@ -899,10 +905,10 @@ cmVhIGRlIGNvbGFnZW0gbXVkYXIuA 1211912703 2 - + - - + + 200 25 @@ -922,10 +928,10 @@ Y2lvbmFkbyB0ZXh0byBub3ZvLg 1211912703 2 - + - - + + 200 25 @@ -944,10 +950,10 @@ Y2lvbmFkbyB0ZXh0byBub3ZvLg 1211912703 2 - + - - + + 200 25 @@ -1016,10 +1022,10 @@ cHJlIGZ1bmNpb25hcsOhIGVtIGFsZ3VtYXMgYXBsaWNhw6fDtWVzLg 1211912703 2 - + - - + + 200 25 @@ -1056,10 +1062,10 @@ b21wbGV0YW1lbnRlLiA 1211912703 2 - + - - + + 200 25 @@ -1094,10 +1100,10 @@ b21wbGV0YW1lbnRlLiA 1211912703 2 - + - - + + 200 25 @@ -1147,10 +1153,10 @@ Yy4pLg 1211912703 2 - + - - + + 200 25 @@ -1169,10 +1175,10 @@ Yy4pLg 1211912703 2 - + - - + + 200 25 @@ -1191,7 +1197,7 @@ U2UgbyBlbmRlcmXDp28gSVAgZG8gc2lzdGVtYSBmb3IgYWx0ZXJhZG8sIGVzdGFzIGNoYXZlcyBwZXJk ZW0gYSB2YWxpZGFkZSwgcG9kZW5kbywgYXNzaW0sICBpbXBvc3NpYmlsaXRhciBhIGV4ZWN1w6fDo28g ZGFzIGFwbGljYcOnw7VlcyBYMTEuA - + @@ -1211,7 +1217,7 @@ p8OjbyDigJxBdXRlbnRpY2FyIGxpZ2HDp8O1ZXPigJ0gcGFyYSBnYXJhbnRpciBhIHNlZ3VyYW7Dp2Eg ZG8gc2lzdGVtYS4gU2UgbsOjbyBhY3RpdmFyIGVzdGEgb3DDp8OjbywgbsOjbyBzw6NvIHBlcm1pdGlk YXMgbGlnYcOnw7VlcyBhIHBhcnRpciBkZSBhcGxpY2HDp8O1ZXMgcmVtb3Rhcy4 - + @@ -1229,7 +1235,7 @@ YXMgbGlnYcOnw7VlcyBhIHBhcnRpciBkZSBhcGxpY2HDp8O1ZXMgcmVtb3Rhcy4 RXN0YXMgb3DDp8O1ZXMgZW50cmFyw6NvIGVtIHZpZ29yIGRhIHByw7N4aW1hIHZleiBxdWUgbyBYMTEg Zm9yIGV4ZWN1dGFkby4 - + @@ -1248,12 +1254,17 @@ Zm9yIGV4ZWN1dGFkby4 0 YES YES + + YES + + {633, 308} {{0, 0}, {1440, 878}} {320, 262} + {3.40282e+38, 3.40282e+38} x11_prefs @@ -1262,10 +1273,11 @@ Zm9yIGV4ZWN1dGFkby4 {{360, 400}, {477, 271}} 1350041600 TWVudSBBcGxpY2HDp8OjbyBkbyBYMTE - + NSPanel View + {3.40282e+38, 3.40282e+38} {320, 240} @@ -1275,7 +1287,7 @@ Zm9yIGV4ZWN1dGFkby4 265 - {{340, 191}, {123, 32}} + {{318, 191}, {155, 32}} YES @@ -1287,7 +1299,7 @@ Zm9yIGV4ZWN1dGFkby4 -2038284033 1 - + @@ -1298,7 +1310,7 @@ Zm9yIGV4ZWN1dGFkby4 265 - {{340, 159}, {123, 32}} + {{318, 159}, {155, 32}} YES @@ -1310,7 +1322,7 @@ Zm9yIGV4ZWN1dGFkby4 -2038284033 1 - + @@ -1331,26 +1343,26 @@ Zm9yIGV4ZWN1dGFkby4 256 - {301, 198} + {279, 198} YES 256 - {301, 17} + {279, 17} 256 - {{302, 0}, {16, 17}} + {{280, 0}, {16, 17}} YES - 1.227310e+02 + 9.973100e+01 6.273100e+01 1.000000e+03 @@ -1364,7 +1376,7 @@ Zm9yIGV4ZWN1dGFkby4 6 - + System headerTextColor @@ -1372,9 +1384,9 @@ Zm9yIGV4ZWN1dGFkby4 338820672 1024 - Q8OpbHVsYSBkZSB0ZXh0bw + Q8OpbHVsYSBkZSB0ZXh0bw - + 3 @@ -1388,7 +1400,7 @@ Zm9yIGV4ZWN1dGFkby4 - 1.000000e+02 + 1.010000e+02 4.000000e+01 1.000000e+03 @@ -1402,9 +1414,9 @@ Zm9yIGV4ZWN1dGFkby4 338820672 1024 - + Q8OpbHVsYSBkZSB0ZXh0bw - + @@ -1425,7 +1437,7 @@ Zm9yIGV4ZWN1dGFkby4 6 - + System headerColor @@ -1434,18 +1446,18 @@ Zm9yIGV4ZWN1dGFkby4 338820672 1024 - + Q8OpbHVsYSBkZSB0ZXh0bw - + LucidaGrande 1.200000e+01 16 - + YES 6 - + System controlBackgroundColor @@ -1462,7 +1474,7 @@ Zm9yIGV4ZWN1dGFkby4 6 - + System gridColor 3 @@ -1477,9 +1489,8 @@ Zm9yIGV4ZWN1dGFkby4 YES - {{1, 17}, {301, 198}} + {{1, 17}, {279, 198}} - 4 @@ -1487,20 +1498,20 @@ Zm9yIGV4ZWN1dGFkby4 256 - {{302, 17}, {15, 198}} + {{280, 17}, {15, 198}} - _doScroller: + _doScroller: 9.949238e-01 256 - {{1, 215}, {301, 15}} + {{1, 215}, {279, 15}} 1 - + _doScroller: 6.885246e-01 @@ -1510,18 +1521,16 @@ Zm9yIGV4ZWN1dGFkby4 YES - {{1, 0}, {301, 17}} + {{1, 0}, {279, 17}} - 4 - {{20, 20}, {318, 231}} + {{20, 20}, {296, 231}} - 50 @@ -1533,7 +1542,7 @@ Zm9yIGV4ZWN1dGFkby4 265 - {{340, 223}, {123, 32}} + {{318, 223}, {155, 32}} YES @@ -1545,7 +1554,7 @@ Zm9yIGV4ZWN1dGFkby4 -2038284033 1 - + @@ -1558,6 +1567,7 @@ Zm9yIGV4ZWN1dGFkby4 {{0, 0}, {1440, 878}} {320, 262} + {3.40282e+38, 3.40282e+38} x11_apps @@ -1568,51 +1578,51 @@ Zm9yIGV4ZWN1dGFkby4 YES YES - - + + 1048576 2147483647 - + - - + QXBsaWNhw6fDtWVzA + 1048576 2147483647 - + submenuAction: - + QXBsaWNhw6fDtWVzA YES YES YES - - + + 1048576 2147483647 - + UGVyc29uYWxpemFy4oCmA - + 1048576 2147483647 - + - + @@ -1700,7 +1710,7 @@ Zm9yIGV4ZWN1dGFkby4 - apps_table_show: + apps_table_show: @@ -1788,7 +1798,7 @@ Zm9yIGV4ZWN1dGFkby4 - prefs_changed: + prefs_changed: @@ -1796,7 +1806,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1804,7 +1814,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1812,7 +1822,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1820,7 +1830,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1828,7 +1838,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1836,7 +1846,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -1924,7 +1934,7 @@ Zm9yIGV4ZWN1dGFkby4 - + apps_table_show: @@ -2004,7 +2014,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2012,7 +2022,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2020,7 +2030,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2100,7 +2110,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2108,7 +2118,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2116,7 +2126,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2124,7 +2134,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2132,7 +2142,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2164,7 +2174,7 @@ Zm9yIGV4ZWN1dGFkby4 - + prefs_changed: @@ -2212,7 +2222,7 @@ Zm9yIGV4ZWN1dGFkby4 - + MainMenu 19 @@ -2457,7 +2467,7 @@ Zm9yIGV4ZWN1dGFkby4 196 - + X11Controller 244 @@ -3307,6 +3317,9 @@ Zm9yIGV4ZWN1dGFkby4 YES YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency 100293.IBPluginDependency @@ -3363,6 +3376,7 @@ Zm9yIGV4ZWN1dGFkby4 169.editorWindowContentRectSynchronizationRect 19.IBPluginDependency 19.ImportedFromIB2 + 196.IBPluginDependency 196.ImportedFromIB2 200295.IBPluginDependency 200295.IBShouldRemoveOnLegacySave @@ -3377,7 +3391,6 @@ Zm9yIGV4ZWN1dGFkby4 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 244.IBEditorWindowLastContentRect - 244.IBPluginDependency 244.IBPropertyAccessControl 244.IBViewEditorWindowController.showingLayoutRectangles 244.IBWindowTemplateEditedContentRect @@ -3399,7 +3412,6 @@ Zm9yIGV4ZWN1dGFkby4 272.IBPluginDependency 272.ImportedFromIB2 285.IBEditorWindowLastContentRect - 285.IBPluginDependency 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles 285.IBWindowTemplateEditedContentRect @@ -3650,345 +3662,347 @@ Zm9yIGV4ZWN1dGFkby4 YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - - - - - - - - - - - - - - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{168, 821}, {113, 23}} - + com.apple.InterfaceBuilder.CocoaPlugin {{202, 626}, {154, 153}} - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{349, 858}, {315, 153}} - + com.apple.InterfaceBuilder.CocoaPlugin {{271, 666}, {301, 153}} - {{437, 749}, {484, 308}} - + {{437, 548}, {633, 308}} - {{184, 290}, {633, 308}} - - + {{437, 548}, {633, 308}} + {{184, 290}, {633, 308}} + - {inf, inf} - {320, 240} - + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{58, 803}, {155, 33}} - + com.apple.InterfaceBuilder.CocoaPlugin {{100, 746}, {155, 33}} - + com.apple.InterfaceBuilder.CocoaPlugin - {{68, 585}, {454, 271}} - + {{68, 585}, {477, 271}} - - + + {{68, 585}, {477, 271}} {{433, 406}, {486, 327}} + - - - - + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin {{145, 1011}, {336, 20}} - + com.apple.InterfaceBuilder.CocoaPlugin {{67, 819}, {336, 20}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{20, 641}, {218, 203}} - + com.apple.InterfaceBuilder.CocoaPlugin {{79, 616}, {218, 203}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin @@ -4018,33 +4032,27 @@ Zm9yIGV4ZWN1dGFkby4 YES - - NSObject - - + FirstResponder + NSObject - IBUserSource - + IBUserSource + - - - - + NSFormatter + NSObject - - + IBUserSource + - NSFormatter - - - + X11Controller + NSObject - - + IBUserSource + @@ -4052,863 +4060,5 @@ Zm9yIGV4ZWN1dGFkby4 0 ../X11.xcodeproj 1 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDmwALAAwAMQA1ADkAQABD -AEQASABMAJQAnACsALMAtAC1ALoAuwC8AL8AwwDEAMcAygDLAMwA0ADVAOMA6QDqAQYBBwEOAQ8BEgEW -ARcBFgEbAR4BHwEjASkBKgEtATIBNwE4AT0BSQFUAVUBVgFaAV8BaAFvAXABdAF2AXcBfAGDAYgBiQGS -AZMBlAGZAaEBpwGoAbMBtAG2AbcBvAHDAcQBxQHKAdEB0gHbAdwB4QHoAe0B7gIFAgkCCwIYAhwCHQIe -AiECKAIyAh0CMwI9Ah0CPgJIAh0CSQJNAlACVQJdAmICYwJkAmUCagJxAnICcwJ4AnkCfgKFAoYCjwKQ -ApUCnAKdAqYCpwKoAq0CsgK5AroCwwLEAsUCygLTAtcC2ALdAuQC5QLmAucC7ALzAvkC+gMDAwQDBQMK -AwsDEAMXAxwDHQMmAycDLAMzAzQDNQM2AzsDRANFA0oDSwNQA1EDVgNdA14DZwNoA20DdAN1A3oDgQOC -A4sDjAORA5kDmgObA6ADoQOmA60DrgO3A7gDuQO+A78DxAPLA88D0APRA9YD3QPeA+gD6QPuA/gD+QP6 -A/4EAAQFBAYECQQMBA8EEAQVBBwEHQQmBCcEKQQqBC8ENgQ3BDgEPQRCBEkESgRRBFIEUwRYBFkEXQRk -BGgEaQRqBGsEcAR1BHoEgQSCBIMEhASJBJAEkQSSBJcEngSfBKgEqQSuBK8EtAS7BLwExQTGBMsE0gTT -BNwE3QTeBOME6gTrBOwE7QTyBPcE/gT/BQgFCQUKBQ8FKwU6BTsFQgVLBUwFTwVUBWkFagVtBXMFhQWM -BY0FkAWVBZYFmQWjBaQFpwWqBbMFuQW6BcIFywXRBdIF1wXYBeIF5gXrBewF8QXyBfUF9wX4Bf0F/gYD -AxwGCgYTBhQGGQYaBh8GIAYlBiYGKwYsBjEGMgY3Bj4GPwZHBkgGSgZLBlAGUQZWBlcGXAZdBmIGYwZo -BoAGgQaCBoMGhgaHBowGkAaeBqIGqwayBrMGuwa8BsMGxAbMBs0G1AbVBt0G3gbfBuEG4gbqBvMG9gb3 -BvoHAQcEBw8HFgcXBx8HIAcnBygHMAcxBzgHOQdBB0IHSQdKB1IG3gdTB1QHWwddB2gHbwdwB3cG3gd4 -B3kHgAeCB4sHkgeTB5oHmweiB6MHqgerB7IHswe6Bt4Huwe8B8IHygfRB9IH2gfbB+IH4wfrB+wH8wf0 -B/wG3gf9B/4IAAgBCAIIAwgECAcICAgNCBIIGQgaCBsIHAghCCYIJwgvCDgBVQg5CEgIUQhaAVUIWwhg -CGMIZAhtCHYIfwiAAVUIiQiOCJcBVQiYCJwIpQFVCKYIsgi7CMMIxAjFCM4IzwjYAVUI2QjdCN4I3wjk -COUI6gjrCYIJiwmMCY0JkAmYCZwJnQmgCagJqQmtCa4JrwmyCbkJugnGCccJyAaGCAEIAgnKCcsAOAnO -CdAKZwr/C5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAux -C7ILswu0C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvP -C9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7Avt -C+4L7wvwC/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0GhQv+C/8MAAwBDAIMAwwEDAUMBgwHDAgMCQwK -DAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwo -DCkMLAwvDQwN6Q3qDesN7A3tDe4N7w3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DgAOAQ4C -DgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4g -DiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DjwOPQ4+ -Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcOWA5ZDloOWw5c -Dl0OXg5fDmAOYQ5iDmMOZA5lDmYOZw5oDmkOag5rDmwObQ5uDm8OcA5xDnIOcw50DnUOdg53DngOeQ56 -DnsOfA59Dn4Ofw6ADoEOgg6DDoQOhQ6GDocOiA6JDooOiw6MAkcOjQ6ODo8OkA6RDpIOkw6UDpUOlg6X -DpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61 -DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOxQ7IDstVJG51bGzfEBIADQAOAA8AEAARABIAEwAUABUA -FgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADBWTlNSb290 -ViRjbGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5T2lk -c1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJhbWV3b3JrXU5TQ2xhc3Nlc0tleXNa -TlNPaWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVjdG9yc11OU0ZvbnRN -YW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1ZhbHVlc18QF05TQWNjZXNzaWJpbGl0 -eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoEDmoECB4ECuoEDmYAJgQIkgAaBArmBAruB -AiWBA5eAAIAHgQIjgQOYEgAElb2BArzSAA4AMgAzADRbTlNDbGFzc05hbWWABYAD0gAOADYANwA4WU5T -LnN0cmluZ4AEXU5TQXBwbGljYXRpb27SADoAOwA8AD1YJGNsYXNzZXNaJGNsYXNzbmFtZaMAPQA+AD9f -EA9OU011dGFibGVTdHJpbmdYTlNTdHJpbmdYTlNPYmplY3TSADoAOwBBAEKiAEIAP15OU0N1c3RvbU9i -amVjdF8QEElCQ29jb2FGcmFtZXdvcmvSAA4ARQBGAEdaTlMub2JqZWN0c4AIoNIAOgA7AEkASqMASgBL -AD9cTlNNdXRhYmxlU2V0VU5TU2V00gAOAEUATQBOgDqvEEUATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoA -WwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgA -eQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJOACoAagC2A -PYBEgEyAUIBVgG2Ac4B3gHmAfoCEgIWAi4CPgJSAm4CdgKOAqICrgK2Ar4C0gLeAvIDAgMKAyIDKgM+A -4IDngOuA7IDygPSA+oD7gPyBAQGBAQWBAQqBAQyBARGBAReBARyBAR2BASOBAU2BAU+BAVSBAVaBAViB -AVqBAVyBAV6BAWWBAWeBAWmBAWuBAW2BAdOBAdSBAdmBAgOBAgXUAA4AlQCWAJcAmACZAJoAm11OU0Rl -c3RpbmF0aW9uWE5TU291cmNlV05TTGFiZWyAGYAWgAuAGNgADgCdAJ4AnwCgAKEAogCjAKQApQCmAKcA -qACpAKoAq1dOU1RpdGxlXxARTlNLZXlFcXVpdk1vZE1hc2taTlNLZXlFcXVpdl1OU01uZW1vbmljTG9j -WU5TT25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gBWADRIAEgEKgA4Sf////4APgBOADNQADgCdAK0A -rgCvALAAsQCyVk5TTmFtZVtOU01lbnVJdGVtc4A7gQH0gQH8gQH2XxAkUGVyY29ycmVyIGphbmVsYXMg -bm8gc2VudGlkbyBpbnZlcnNvUX7TAA4AMgC2ALcAuAC5Xk5TUmVzb3VyY2VOYW1lgBKAEIARV05TSW1h -Z2VfEA9OU01lbnVDaGVja21hcmvSADoAOwC9AL6iAL4AP18QEE5TQ3VzdG9tUmVzb3VyY2XTAA4AMgC2 -ALcAuADCgBKAEIAUXxAQTlNNZW51TWl4ZWRTdGF0ZdIAOgA7AMUAxqIAxgA/Wk5TTWVudUl0ZW3SAA4A -MgAzAMmABYAXXVgxMUNvbnRyb2xsZXJfEBBwcmV2aW91c193aW5kb3c60gA6ADsAzQDOowDOAM8AP18Q -FU5TTmliQ29udHJvbENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQADgCVAJYAlwDRANIAmQDUgCyAG4AW -gCvXANYADgDXANgA2QDaANsA3ADdAN4A3wDgAOEA3F8QD05TTmV4dFJlc3BvbmRlcldOU0ZyYW1lVk5T -Q2VsbFhOU3ZGbGFnc1lOU0VuYWJsZWRbTlNTdXBlcnZpZXeAHIAqgB2AHhEBAAmAHNUA1gAOANcA5ADZ -ACsA5gDnAOgA4FpOU1N1YnZpZXdzgACBAYaBAamBAaRfEBV7ezM0LCA5Nn0sIHs0MDksIDIzfX3eAOsA -DgDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoBAAEBANIBAwEEAQVbTlNDZWxs -RmxhZ3NfEBNOU0FsdGVybmF0ZUNvbnRlbnRzXU5TTm9ybWFsSW1hZ2VfEBJOU1BlcmlvZGljSW50ZXJ2 -YWxeTlNCdXR0b25GbGFnczJfEBBOU0FsdGVybmF0ZUltYWdlXxAPTlNLZXlFcXVpdmFsZW50Wk5TQ29u -dGVudHNZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdfEA9OU1BlcmlvZGljRGVsYXlcTlNDZWxsRmxhZ3My -XU5TQnV0dG9uRmxhZ3MSBAH+AIApgCiAIxAZEAKAJYAogB+AIIAbEMgQABJIPFH/bxA0AEEAYwB0AHUA -YQBsAGkAegBhAHIAIABDAEwASQBQAEIATwBBAFIARAAgAHEAdQBhAG4AZABvACAAYQAgAOEAcgBlAGEA -IABkAGUAIABjAG8AbABhAGcAZQBtACAAbQB1AGQAYQByAC7UAA4BCACtAQkBCgELAQwBDVZOU1NpemVY -TlNmRmxhZ3OAIiNAKgAAAAAAAIAhEQQUXEx1Y2lkYUdyYW5kZdIAOgA7ARABEaIBEQA/Vk5TRm9udNMA -DgAyALYAtwC4ARWAEoAQgCRYTlNTd2l0Y2jSAA4BGAEZARpbTlNJbWFnZU5hbWWAJ4Am0gA6ADsBHAEd -ogEdAD9fEBNOU0J1dHRvbkltYWdlU291cmNlUNIAOgA7ASABIaQBIQEiANgAP1xOU0J1dHRvbkNlbGxc -TlNBY3Rpb25DZWxs0gA6ADsBJAElpQElASYBJwEoAD9YTlNCdXR0b25ZTlNDb250cm9sVk5TVmlld1tO -U1Jlc3BvbmRlcl8QHHN5bmNfcGFzdGVib2FyZF90b19jbGlwYm9hcmTSADoAOwErASyjASwAzwA/XxAU -TlNOaWJPdXRsZXRDb25uZWN0b3LUAA4AlQCWAJcA0QEvAB8BMYAsgC6AAoA81AAOAJ0ArQCuAK8BNAD6 -ATaAO4AvgCiAMFRNZW510gAOAEUATQE6gDqiATsBPIAxgDLaAA4AnQCeAT4AnwE/AKAAoQCiAKMApAD6 -AUIA4QD6AOEAqACpAKoBL11OU0lzU2VwYXJhdG9yXE5TSXNEaXNhYmxlZIAVgCgSABAAAAmAKAmAD4AT -gC7aAA4BSgCdAJ4AnwCgAKEAogCjAUsApAFNAU4BQgD6AKgAqQCqAS8BU1lOU1N1Ym1lbnVYTlNBY3Rp -b26AFYA1gDOAKIAPgBOALoA0agBBAHAAbABpAGMAYQDnAPUAZQBzXnN1Ym1lbnVBY3Rpb2460wAOAJ0A -rgCvAU4BWYA7gDOANtIADgBFAE0BXIA6ogFdAV6AN4A42gAOAJ0AngE+AJ8BPwCgAKEAogCjAKQA+gFC -AOEA+gDhAKgAqQCqAU2AFYAoCYAoCYAPgBOANdgADgCdAJ4AnwCgAKEAogCjAKQBagFCAPoAqACpAKoB -TYAVgDmAKIAPgBOANW0AUABlAHIAcwBvAG4AYQBsAGkAegBhAHIgJtIAOgA7AXEBcqMBcgFzAD9eTlNN -dXRhYmxlQXJyYXlXTlNBcnJhedIAOgA7AXUAo6IAowA/WGRvY2tNZW511AAOAJUAlgCXAJgAmQF6AXuA -GYAWgD6AQ9cA1gAOANcA2ADZANoA2wF9AN0BfwGAAOAA4QF9gD+AKoBAgEEJgD/VANYADgDXAOQA2QAr -AOYBhgGHAOCAAIEBhoEBuoEBrV8QFnt7MTUsIDIxMn0sIHs0MDIsIDE4fX3eAOsADgDsAO0A7gDvAPAA -8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoBjwEBAXoBAwEEAQWAKYAogCOAJYAogEKAIIA+XxAi -Q2xpcXVlIGF0cmF2ZXNzYSBqYW5lbGFzIGluYWN0aXZhc15wcmVmc19jaGFuZ2VkOtQADgCVAJYAlwCY -AJkBlwGYgBmAFoBFgEvXANYADgDXANgA2QDaANsBmgDdAZwBnQGeAOEBmoBGgCqAR4BIEQEJCYBG1QDW -AA4A5ADZAaIAKwDmAaUA4AGmW05TRnJhbWVTaXplgACBAYaBAhaBAhdfEBd7ezM0MCwgMTU5fSwgezEy -MywgMzJ9fd0A6wAOAOwA7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD8AasBAQGtAa4BAQGXAQMBsQGy -gCmAKBABgCCASoBJgCCARRIIOAAAE/////+GgkD/V1JlbW92ZXLSAA4ANgA3AR6ABF8QEmFwcHNfdGFi -bGVfZGVsZXRlOtQADgCVAJYAlwCYAJkBugG7gBmAFoBNgE/YAA4AnQCeAJ8AoAChAKIAowCkAb4BQgD6 -AKgAqQCqAKuAFYBOgCiAD4ATgAxfEBlQYXNzYXIgdHVkbyBwYXJhIGEgZnJlbnRlXxAPYnJpbmdfdG9f -ZnJvbnQ61AAOAJUAlgCXAJgAmQHIAXuAGYAWgFGAQ9cA1gAOANcA2ADZANoA2wDcAN0BzQHOAOAA4QDc -gByAKoBSgFMJgBxfEBV7ezM0LCA3MX0sIHs1NTAsIDIzfX3eAOsADgDsAO0A7gDvAPAA8QDyAPMA9AD1 -APYA9wD4APkA+gD7APwA/QD+APoB2AEBAcgBAwEEAQWAKYAogCOAJYAogFSAIIBRbxBPAEEAYwB0AHUA -YQBsAGkAegBhAHIAIABQAFIASQBNAEEAUgBZACAAKABjAGwAaQBxAHUAZQAgAGMAbwBtACAAbwAgAGIA -bwB0AOMAbwAgAGMAZQBuAHQAcgBhAGwAKQAgAHEAdQBhAG4AZABvACAAYQAgAOEAcgBlAGEAIABkAGUA -IABjAG8AbABhAGcAZQBtACAAbQB1AGQAYQByAC7UAA4AlQCWAJcAmACZAd8Be4AZgBaAVoBD1wDWAA4A -1wDYANkA2gDbAeIB4wHkAeUA4ADhAeKAV4BsgFiAWQmAV9UA1gAOANcA5ADZACsA5gHrAewA4IAAgQGG -gQGggQGPXxAWe3s2NCwgMjAxfSwgezEzMSwgMjZ9fd8QEwDrAe8B8ADsAO4ADgDvAPAA8QDzAMYA9AHx -AfIB8wD1APYAowD3AfQA4QGrAPoB9wH4AasB+QH6AQEB/AHfAf4A4QDhAgECAgIDAgRfEBpOU01lbnVJ -dGVtUmVzcGVjdEFsaWdubWVudF8QD05TQXJyb3dQb3NpdGlvbl8QD05TUHJlZmVycmVkRWRnZV8QEk5T -VXNlc0l0ZW1Gcm9tTWVudV1OU0FsdGVyc1N0YXRlE/////+EQf5ACYAoEEuAa4BagFuAIIBcgFYQAwkJ -EQGQEQQAgF0SBoJA/9QADgEIAK0BCQEKAQsBDAIIgCKAIRAQ0gAOADYANwEegATcAgwADgCdAJ4AnwCg -AKEAogCjAUsCDQIOAeUApAIRAUIA+gCoAKkAqgIDAhYCFwGrWE5TVGFyZ2V0VU5TVGFnV05TU3RhdGWA -WYAVgF6AKIAPgBOAXYBfE///////////0wAOAJ0ArgCvAhoCG4A7gGCAYVpEbyBtb25pdG9yXxARX3Bv -cFVwSXRlbUFjdGlvbjrSAA4ANgA3AiCABFpPdGhlclZpZXdz0gAOAEUATQIjgDqkAfwCJQImAieAXIBi -gGWAaNsCDAAOAJ0AngCfAKAAoQCiAKMBSwINAeUApAIrAUIA+gCoAKkAqgIDAjACMYBZgBWAY4AogA+A -E4BdgGQQCFkyNTYgY29yZXPbAgwADgCdAJ4AnwCgAKEAogCjAUsCDQHlAKQCNgFCAPoAqACpAKoCAwI7 -AjyAWYAVgGaAKIAPgBOAXYBnEA9YTWlsaGFyZXPbAgwADgCdAJ4AnwCgAKEAogCjAUsCDQHlAKQCQQFC -APoAqACpAKoCAwJGAkeAWYAVgGmAKIAPgBOAXYBqEBhnAE0AaQBsAGgA9QBlAHPSADoAOwJKAkumAksC -TAEhASIA2AA/XxARTlNQb3BVcEJ1dHRvbkNlbGxeTlNNZW51SXRlbUNlbGzSADoAOwJOAk+mAk8BJQEm -AScBKAA/XU5TUG9wVXBCdXR0b27UAA4AlQCWAJcAmACZAlMCVIAZgBaAboBy2AAOAJ0AngCfAKAAoQCi -AKMApAJXAlgCWQCoAKkAqgJcgBWAcBIAGAAAgHGAD4ATgG/UAA4AnQCtAK4ArwJfAmACYYA7gQHegQHr -gQHgbxAWAEEAbAB0AGUAcgBuAGEAcgAgAGUAYwByAOMAIABjAG8AbQBwAGwAZQB0AG9RYV8QEnRvZ2ds -ZV9mdWxsc2NyZWVuOtQADgCVAJYAlwCYAB8CaAJpgBmAAoB0gHbXAA4AnQCfAKAAoQCiAKMApAJsAPoA -qACpAKoCXIAVgHWAKIAPgBOAb11BY2VyY2EgZG8gWDExXxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQ -YW5lbDrUAA4AlQCWAJcA0QJTAJkCd4AsgG6AFoB4XxAWdG9nZ2xlX2Z1bGxzY3JlZW5faXRlbdQADgCV -AJYAlwCYAJkCfAF7gBmAFoB6gEPXANYADgDXANgA2QDaANsA3ADdAoECggDgAOEA3IAcgCqAe4B8CYAc -XxAWe3szNCwgMTU5fSwgezQwOSwgMjN9fd4A6wAOAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6 -APsA/AD9AP4A+gKMAQECfAEDAQQBBYApgCiAI4AlgCiAfYAggHpvEDYAQQBjAHQAdQBhAGwAaQB6AGEA -cgAgAGEAIADhAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQAgAHEAdQBhAG4AZABvACAAbwAgAEMA -TABJAFAAQgBPAEEAUgBEACAAbQB1AGQAYQByAC7UAA4AlQCWAJcA0QKSAJkClIAsgH+AFoCD1wDWAA4A -1wDYANkA2gDbAX0A3QKYApkA4ADhAX2AP4AqgICAgQmAP18QFnt7MTUsIDEwN30sIHs0MDIsIDE4fX3e -AOsADgDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoCowEBApIBAwEEAQWAKYAo -gCOAJYAogIKAIIB/XxAVRm9jbyBlbSBqYW5lbGFzIG5vdmFzXxATZm9jdXNfb25fbmV3X3dpbmRvd9QA -DgCVAJYAlwCYAJkCkgF7gBmAFoB/gEPUAA4AlQCWAJcA0QKvAJkCsYAsgIaAFoCK1wDWAA4A1wDYANkA -2gDbAeIA3QK1ArYA4ADhAeKAV4AqgIeAiAmAV18QFnt7MTgsIDE0OX0sIHs0MDksIDIzfX3eAOsADgDs -AO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoCwAEBAq8BAwEEAQWAKYAogCOAJYAo -gImAIICGbxASAE0AbwBkAG8AIABlAGMAcgDjACAAYwBvAG0AcABsAGUAdABvXxARZW5hYmxlX2Z1bGxz -Y3JlZW7UAA4AlQCWAJcA0QLHAJkCyYAsgIyAFoCO2gAOAJ0AngE+AJ8BPwCgAKEAogCjAKQA+gFCAOEA -+gDhAKgAqQCqAtKAFYAoCYAoCYAPgBOAjdMADgCdAK4ArwFOAtaAO4AzgQHuXmFwcHNfc2VwYXJhdG9y -1AAOAJUAlgCXAJgAmQLbAtyAGYAWgJCAk9gADgCdAJ4AnwCgAKEAogCjAKQC3wFCAuAAqACpAKoAq4AV -gJGAkoAPgBOADFlNaW5pbWl6YXJRbV8QEG1pbmltaXplX3dpbmRvdzrUAA4AlQCWAJcA0QLpAJkC64As -gJWAFoCa1wDWAA4A1wDYANkA2gDbAu0A3QLvAvAA4ADhAu2AloAqgJeAmAmAltYA1gAOANcA5ADZANsC -9ADmAvYC9wDgAvSBAXaBAYaBAYWBAXiBAXZfEBV7ezE4LCA5MX0sIHs0MDIsIDE4fX3eAOsADgDsAO0A -7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoDAAEBAukBAwEEAQWAKYAogCOAJYAogJmA -IICVbxAsAEEAYwB0AGkAdgBhAHIAIABhAHMAIABlAHEAdQBpAHYAYQBsAOoAbgBjAGkAYQBzACAAZABl -ACAAdABlAGMAbABhAGQAbwAgAHAAYQByAGEAIABYADEAMV8QEGVuYWJsZV9rZXllcXVpdnPUAA4AlQCW -AJcAmACZAV4DCYAZgBaAOICcXxAQYXBwc190YWJsZV9zaG93OtQADgCVAJYAlwCYAJkDDgF7gBmAFoCe -gEPXANYADgDXANgA2QDaANsDEQDdAxMDFADgAOEDEYCfgCqAoIChCYCf1QDWAA4A1wDkANkAKwDmAxoD -GwDggACBAYaBAcqBAb1fEBZ7ezE4LCAyMTB9LCB7NDAyLCAxOH193gDrAA4A7ADtAO4A7wDwAPEA8gDz -APQA9QD2APcA+AD5APoA+wD8AP0A/gD6AyMBAQMOAQMBBAEFgCmAKIAjgCWAKICigCCAnm8QEwBBAHUA -dABlAG4AdABpAGMAYQByACAAbABpAGcAYQDnAPUAZQBz1AAOAJUAlgCXAJgAHwMqAyuAGYACgKSAp9gA -DgCdAJ4AnwCgAKEAogCjAKQDLgJYAy8AqACpAKoCXIAVgKWApoAPgBOAb28QGQBPAGMAdQBsAHQAYQBy -ACAAbwB1AHQAcgBhAHMAIABhAHAAbABpAGMAYQDnAPUAZQBzUWhfEBZoaWRlT3RoZXJBcHBsaWNhdGlv -bnM61AAOAJUAlgCXANEDOACZAzqALICpgBaAqtoADgCdAJ4BPgCfAT8AoAChAKIAowCkAPoBQgDhAPoA -4QCoAKkAqgCrgBWAKAmAKAmAD4ATgAxfEBB3aW5kb3dfc2VwYXJhdG9y1AAOAJUAlgCXANEByACZA0mA -LIBRgBaArF8QGnN5bmNfcGFzdGVib2FyZF90b19wcmltYXJ51AAOAJUAlgCXAJgAmQKvA0+AGYAWgIaA -rl8QGmVuYWJsZV9mdWxsc2NyZWVuX2NoYW5nZWQ61AAOAJUAlgCXAJgAmQNUAXuAGYAWgLCAQ9cA1gAO -ANcA2ADZANoA2wDcAN0DWQNaAOAA4QDcgByAKoCxgLIJgBxfEBV7ezM0LCA0Nn0sIHs1NDQsIDIzfX3e -AOsADgDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoDZAEBA1QBAwEEAQWAKYAo -gCOAJYAogLOAIICwbxBOAEEAYwB0AHUAYQBsAGkAegBhAHIAIABhACAA4QByAGUAYQAgAGQAZQAgAGMA -bwBsAGEAZwBlAG0AIABpAG0AZQBkAGkAYQB0AGEAbQBlAG4AdABlACAAcQB1AGEAbgBkAG8AIABmAG8A -cgAgAHMAZQBsAGUAYwBjAGkAbwBuAGEAZABvACAAdABlAHgAdABvACAAbgBvAHYAbwAu1AAOAJUAlgCX -AJgAmQNrAwmAGYAWgLWAnNgADgCdAJ4AnwCgAKEAogCjAKQDbwFCAPoAqACpAKoC0oAVgLaAKIAPgBOA -jV8QD1BlcnNvbmFsaXphci4uLtQADgCVAJYAlwCYAJkDeAF7gBmAFoC4gEPXANYADgDXANgA2QDaANsB -4gDdA30DfgDgAOEB4oBXgCqAuYC6CYBXXxAVe3sxOCwgNjN9LCB7NDAyLCAxOH193gDrAA4A7ADtAO4A -7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD6A4gBAQN4AQMBBAEFgCmAKIAjgCWAKIC7gCCA -uF8QJlV0aWxpemFyIG8gZWZlaXRvIGRlIGFsZXJ0YSBkbyBzaXN0ZW1h1AAOAJUAlgCXAJgAHwOPA5CA -GYACgL2Av9kADgCdAJ4AnwCgAKEAogCjAg0ApAOTAUIA+gCoAKkAqgJcA5iAFYC+gCiAD4ATgG8QKlxN -b3N0cmFyIHR1ZG9fEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM61AAOAJUAlgCXANEDVACZA5+ALICwgBaA -wV8QGHN5bmNfcHJpbWFyeV9pbW1lZGlhdGVsedQADgCVAJYAlwDRA6MAmQOlgCyAw4AWgMfXANYADgDX -ANgA2QDaANsBfQDdA6kDqgDgAOEBfYA/gCqAxIDFCYA/XxAWe3sxNSwgMTUxfSwgezQwMiwgMTh9fd4A -6wAOAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A+gO0AQEDowEDAQQBBYApgCiA -I4AlgCiAxoAggMNfEBFGb2NvIHNlZ3VlIG8gcmF0b18QE2ZvY3VzX2ZvbGxvd3NfbW91c2XUAA4AlQCW -AJcA0QJ8AJkDvYAsgHqAFoDJXxAcc3luY19jbGlwYm9hcmRfdG9fcGFzdGVib2FyZNQADgCVAJYAlwCY -AJkDwgPDgBmAFoDLgM7YAA4AnQCeAJ8AoAChAKIAowCkA8YBQgD6AKgAqQCqA8qAFYDNgCiAD4ATgMzT -AA4AnQCuAK8DzQPOgDuBAf6BAgBcQWp1ZGEgZG8gWDExWXgxMV9oZWxwOtQADgCVAJYAlwDRA9MAmQPV -gCyA0IAWgN/XANYADgDXANgA2QDaANsA3APYA9kD2gDgAOEA3IAcgN6A0YDSCYAcXxAWe3s0OCwgMTI1 -fSwgezUwOSwgMjh9fdgA6wAOA98A8gDzAPQA9gPgAPgD4QPiA+MD5APTA+YD518QEU5TQmFja2dyb3Vu -ZENvbG9yW05TVGV4dENvbG9ygN2A1YDTgNSA0BIAQAAAgNpvEG0ARABlAHMAYQBjAHQAaQB2AGUAIABl -AHMAdABhACAAbwBwAOcA4wBvACAAcwBlACAAcAByAGUAdABlAG4AZABlAHIAIAB1AHQAaQBsAGkAegBh -AHIAIABvACAAeABjAGwAaQBwAGIAbwBhAHIAZAAsACAAbwAgAGsAbABpAHAAcABlAHIAIABvAHUAIABx -AHUAYQBsAHEAdQBlAHIAIABvAHUAdAByAG8AIABnAGUAcwB0AG8AcgAgAGQAZQAgAGMAbABpAHAAYgBv -AGEAcgBkACAAWAAxADEALtQADgEIAK0BCQEKA+sBDAPtgCIjQCYAAAAAAACAIREMHNUADgPvA/AD8QPy -A/MD9AP1A/YD91dOU0NvbG9yXE5TQ29sb3JTcGFjZVtOU0NvbG9yTmFtZV1OU0NhdGFsb2dOYW1lgNmA -2BAGgNeA1lZTeXN0ZW1cY29udHJvbENvbG9y0wAOA/AD+wPzAf4D/VdOU1doaXRlgNlLMC42NjY2NjY2 -OQDSADoAOwP/A++iA+8AP9UADgPvA/AD8QPyA/MEAgP1BAMD94DZgNyA24DWXxAQY29udHJvbFRleHRD -b2xvctMADgPwA/sD8wH+BAiA2UIwANIAOgA7BAoEC6QECwEiANgAP18QD05TVGV4dEZpZWxkQ2VsbNIA -OgA7BA0EDqUEDgEmAScBKAA/W05TVGV4dEZpZWxkWnN5bmNfdGV4dDHUAA4AlQCWAJcAmACZBBMEFIAZ -gBaA4YDm1wDWAA4A1wDYANkA2gDbAZoA3QQYBBkBngDhAZqARoAqgOKA4wmARl8QF3t7MzQwLCAyMjN9 -LCB7MTIzLCAzMn193QDrAA4A7ADuAO8A8ADxAPIA8wD0APUA9gD3BB4A+QD6APwBqwEBBCIEIwEBBBMB -AwGxAbIT/////4QB/gCAKYAogCCA5YDkgCCA4V8QEkFkaWNpb25hciBlbGVtZW50b9IADgA2ADcBHoAE -XxAPYXBwc190YWJsZV9uZXc61AAOAJUAlgCXAJgAmQQtBC6AGYAWgOiA6tgADgCdAJ4AnwCgAKEAogCj -AKQEMQFCAPoAqACpAKoAq4AVgOmAKIAPgBOADFRab29tXHpvb21fd2luZG93OtQADgCVAJYAlwCYAJkC -6QF7gBmAFoCVgEPUAA4AlQCWAJcA0QQ/AJkEQYAsgO2AFoDx1wDWAA4A1wDYANkA2gDbANwD2ARFBEYA -4ADhANyAHIDegO6A7wmAHF8QFXt7NDgsIDE0fSwgezUzNCwgMjh9fdgA6wAOA98A8gDzAPQA9gPgAPgD -4QPiBE0D5AQ/A+YD54DdgNWA8IDUgO2A2m8QXQBEAGUAdgBpAGQAbwAgAGEAIABsAGkAbQBpAHQAYQDn -APUAZQBzACAAZABvACAAcAByAG8AdABvAGMAbwBsAG8AIABYADEAMQAsACAAZQBzAHQAYQAgAG8AcADn -AOMAbwAgAG4AZQBtACAAcwBlAG0AcAByAGUAIABmAHUAbgBjAGkAbwBuAGEAcgDhACAAZQBtACAAYQBs -AGcAdQBtAGEAcwAgAGEAcABsAGkAYwBhAOcA9QBlAHMALlpzeW5jX3RleHQy1AAOAJUAlgCXANEBOwCZ -BFeALIAxgBaA818QFWRvY2tfd2luZG93X3NlcGFyYXRvctMADgCWAJcAmARbBFyAGYD1gPnYAA4AnQCe -AJ8AoAChAKIAowCkBF8BQgRgAKgAqQCqBGOAFYD3gPiAD4ATgPbTAA4AnQCuAK8EZgRngDuBAfCBAfJW -Q29waWFyUWNVY29weTrUAA4AlQCWAJcAmACZA6MBe4AZgBaAw4BD1AAOAJUAlgCXAJgAmQDSAXuAGYAW -gBuAQ9QADgCVAJYAlwCYAB8EeAR5gBmAAoD9gQEA2AAOAJ0AngCfAKAAoQCiAKMApAR8AUIEfQCoAKkA -qgJcgBWA/oD/gA+AE4BvW1NhaXIgZG8gWDExUXFadGVybWluYXRlOtQADgCVAJYAlwCYAB8EhwSIgBmA -AoEBAoEBBNkADgCdAJ4AnwCgAKEAogCjAg0ApASLAUIDLwCoAKkAqgJcA5iAFYEBA4CmgA+AE4BvXU9j -dWx0YXIgbyBYMTFVaGlkZTrUAA4AlQCWAJcAmACZBJUBe4AZgBaBAQaAQ9cA1gAOANcA2ADZANoA2wDc -AN0EmgSbAOAA4QDcgByAKoEBB4EBCAmAHF8QFnt7MTgsIDIyMn0sIHs0MDksIDIzfX3eAOsADgDsAO0A -7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoEpQEBBJUBAwEEAQWAKYAogCOAJYAogQEJ -gCCBAQZvEBUAQQBjAHQAaQB2AGEAcgAgAHMAaQBuAGMAcgBvAG4AaQB6AGEA5wDjAG/UAA4AlQCWAJcA -0QFNAJkErYAsgDWAFoEBC15kb2NrX2FwcHNfbWVuddQADgCVAJYAlwCYAJkEsgF7gBmAFoEBDYBD1wDW -AA4A1wDYANkA2gDbAeIA3QS3BLgA4ADhAeKAV4AqgQEOgQEPCYBXXxAVe3szNywgODh9LCB7NDc2LCAx -OH193gDrAA4A7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD6BMIBAQSyAQMBBAEF -gCmAKIAjgCWAKIEBEIAggQENbxBBAE0AbwBzAHQAcgBhAHIAIABhAHUAdABvAG0AYQB0AGkAYwBhAG0A -ZQBuAHQAZQAgAGEAIABiAGEAcgByAGEAIABkAGUAIABtAGUAbgB1AHMAIABlAG0AIABtAG8AZABvACAA -ZABlACAAZQBjAHIA4wAgAGMAbwBtAHAAbABlAHQAb9QADgCVAJYAlwDRBMgAmQTKgCyBARKAFoEBFtcA -1gAOANcA2ADZANoA2wMRAN0EzgTPAOAA4QMRgJ+AKoEBE4EBFAmAn18QFnt7MTgsIDEzM30sIHs0MDIs -IDE4fX3eAOsADgDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+APoE2QEBBMgBAwEE -AQWAKYAogCOAJYAogQEVgCCBARJvECUAUABlAHIAbQBpAHQAaQByACAAbABpAGcAYQDnAPUAZQBzACAA -ZABlACAAYwBsAGkAZQBuAHQAZQBzACAAZABhACAAcgBlAGQAZVplbmFibGVfdGNw1AAOAJUAlgCXAJgA -mQThBOKAGYAWgQEYgQEb2AAOAJ0AngCfAKAAoQCiAKMApATlAUIE5gCoAKkAqgJcgBWBARmBARqAD4AT -gG9vEA8AUAByAGUAZgBlAHIA6gBuAGMAaQBhAHMALgAuAC5RLFtwcmVmc19zaG93OtQADgCVAJYAlwCY -AJkEyAF7gBmAFoEBEoBD1AAOAJUAlgCXANEE9ACZBPaALIEBHoAWgQEi1wDWAA4A1wDYANkA2gDbAu0A -3QT6BPsA4ADhAu2AloAqgQEfgQEgCYCWXxAWe3sxOCwgMTQ2fSwgezQwMiwgMTh9fd4A6wAOAOwA7QDu -AO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A+gUFAQEE9AEDAQQBBYApgCiAI4AlgCiBASGA -IIEBHm8QKQBTAGUAZwB1AGkAcgAgAGEAIABkAGkAcwBwAG8AcwBpAOcA4wBvACAAZABvACAAdABlAGMA -bABhAGQAbwAgAGQAbwAgAHMAaQBzAHQAZQBtAGFbc3luY19rZXltYXDUAA4AlQCWAJcA0QUMAJkFDoAs -gQEkgBaBAUzfEBMA1gUQAA4FEQUSA98FEwUUBRUFFgUXANkBogDaBRgFGQDbBRoFGwUcAQQFHQUeBR8F -IADhBSIFIwGrBSQA4AUlAOEFJwIXBRwFKQUqXxAfTlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JOb25Mb2Nh -bFlOU1R2RmxhZ3NcTlNIZWFkZXJWaWV3XxASTlNBbGxvd3NUeXBlU2VsZWN0XE5TQ29ybmVyVmlld18Q -F05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXppbmdTdHlsZV8QGE5TSW50 -ZXJjZWxsU3BhY2luZ0hlaWdodFtOU0dyaWRDb2xvcl8QHE5TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTG9j -YWxeTlNUYWJsZUNvbHVtbnNbTlNSb3dIZWlnaHSBASWBAUsSUkCAAIEBJ4EBOQmBASsjQAgAAAAAAAAj -QAAAAAAAAACBASYJgQFIgQElgQEvI0AxAAAAAAAA2gDWAA4A1wUsAOQA2QUtBS4A2wUvBTAFMQUyBTMF -NAU1BQwFNwUwBQxZTlNjdkZsYWdzWU5TRG9jVmlld1lOU0JHQ29sb3JdTlNOZXh0S2V5Vmlld4EBLIEC -D4ECDhAEgQINEQkAgQEkgQFGgQEsgQEkWnszMDEsIDE5OH3WANYADgDZAaIA2wU8BT0FPgDgBT8FPQUM -W05TVGFibGVWaWV3gQEogQEqgQEpgQEogQEk2gDWAA4A1wUsAOQA2QUtBS4A2wUvBTAFMQVFBTMFRgU1 -BR8FNwUwBR+BASyBAg+BAhOBAhKBASeBAUaBASyBASdZezMwMSwgMTd90gA6ADsFTQVOpAVOAScBKAA/ -XxARTlNUYWJsZUhlYWRlclZpZXfVANYADgDXANkA2wUwBVEFUgDgBTCBASyBAS6BAS2BASzeANYFVQAO -ANcFVgUUBVcA5AVYANkA2wVZBS8FWgGaBVwFXQVeBV8FIgU9BWIFYwVkAZoFZgUcBRxbTlNIU2Nyb2xs -ZXJYTlNzRmxhZ3NfEBBOU0hlYWRlckNsaXBWaWV3XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0Nv -bnRlbnRWaWV3gEaBAgiBAhWBAhQQMoEBK4EBKIECDE8QEEEgAABBIAAAQZgAAEGYAAARARKARoECEIEB -JYEBJV8QFHt7MzAyLCAwfSwgezE2LCAxN3190gA6ADsFawVspAVsAScBKAA/XV9OU0Nvcm5lclZpZXfS -AA4ARQBNBW+AOqMFcAVxBXKBATCBATuBAT/aBXQADgV1BXYFdwV4BXkFegV7BTwA4QV9BX4FfwWAAf4F -gQWCAOEFDF5OU0lzUmVzaXplYWJsZVxOU0hlYWRlckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVz -aXppbmdNYXNrWk5TTWluV2lkdGhaTlNNYXhXaWR0aFxOU0lzRWRpdGFibGUJgQE6gQExI0BersjAAAAA -gQE3I0BPXZFgAAAAI0CPQAAAAAAACYEBJNcA6wAOA98A8gDzAPYD4AWGBYcFiAWJA+QBBAWLEgSB/gCB -ATaBATOBATKA1IEBNFROb21l0wAOA/AD+wPzAf4Fj4DZSzAuMzMzMzMyOTkA1QAOA+8D8APxA/ID8wQC -A/UFkwP3gNmA3IEBNYDWXxAPaGVhZGVyVGV4dENvbG9y0gA6ADsFlwWYpQWYBAsBIgDYAD9fEBFOU1Rh -YmxlSGVhZGVyQ2VsbNkA6wAOA98A8gDzAPQA9gWaA+AFmwPhBSAFngEBBQwCAgD6A+dfEBNOU1BsYWNl -aG9sZGVyU3RyaW5nEhQx/kCA3YEBOYEBOIAggQEkgCiA2m8QDwBDAOkAbAB1AGwAYQAgAGQAZQAgAHQA -ZQB4AHQAb9MADgPwA/sD8wH+BaaA2UIxANIAOgA7BagFqaIFqQA/XU5TVGFibGVDb2x1bW7aBXQADgV1 -BXYFdwV4BXkFegV7BTwA4QV9Ba0FrgWvAf4FsAWCAOEFDAmBATqBATwjQFkAAAAAAACBAT4jQEQAAAAA -AAAJgQEk1wDrAA4D3wDyAPMA9gPgBYYFhwWIBbYD5AEEBYuBATaBATOBAT2A1IEBNFdDb21hbmRv2QDr -AA4D3wDyAPMA9AD2BZoD4AWbA+EFIAWeAQEFDAICAPoD54DdgQE5gQE4gCCBASSAKIDa2gV0AA4FdQV2 -BXcFeAV5BXoFewU8AOEFfQXFBcYFxwH+BcgFggDhBQwJgQE6gQFAI0BRQAAAAAAAgQFEI0AkAAAAAAAA -CYEBJNcA6wAOA98A8gDzAPYD4AD4BYcFzQXOA+QBBAWLgQE2gQFCgQFBgNSBATRWQXRhbGhv1QAOA+8D -8APxA/ID8wUgA/UF1QP3gNmBATmBAUOA1ltoZWFkZXJDb2xvctoA6wAOA98A8gDzAPQA9gXZBZoD4AWb -A+EFNwWeBd0FDAICAOEA+gPnXxARTlNEcmF3c0JhY2tncm91bmSA3YEBRoEBOIEBRYEBJAmAKIDa1AAO -AQgArQEJAQoF5AEMAgiAIiNAKAAAAAAAAIAh1QAOA+8D8APxA/ID8wP0A/UF6QP3gNmA2IEBR4DWXxAW -Y29udHJvbEJhY2tncm91bmRDb2xvctUADgPvA/AD8QPyA/MF7gP1Be8D94DZgQFKgQFJgNZZZ3JpZENv -bG9y0wAOA/AD+wPzAf4F9IDZRDAuNQDSADoAOwX2BTylBTwBJgEnASgAP1phcHBzX3RhYmxl1AAOAJUA -lgCXANEB3wCZBfyALIBWgBaBAU5VZGVwdGjUAA4AlQCWAJcAmACZBgEBe4AZgBaBAVCAQ9cA1gAOANcA -2ADZANoA2wLtAN0GBgYHAOAA4QLtgJaAKoEBUYEBUgmAlt4A6wAOAOwA7QDuAO8A8ADxAPIA8wD0APUA -9gD3APgA+QD6APsA/AD9AP4A+gYQAQEGAQEDAQQBBYApgCiAI4AlgCiBAVOAIIEBUG8QGwBTAGkAbQB1 -AGwAYQByACAAcgBhAHQAbwAgAGQAZQAgAHQAcgDqAHMAIABiAG8AdAD1AGUAc9QADgCVAJYAlwDRAS8A -mQYYgCyALoAWgQFVWWRvY2tfbWVuddQADgCVAJYAlwDRBJUAmQYegCyBAQaAFoEBV18QD3N5bmNfcGFz -dGVib2FyZNQADgCVAJYAlwDRAmgAmQYkgCyAdIAWgQFZXngxMV9hYm91dF9pdGVt1AAOAJUAlgCXANEA -mQAfBiqALIAWgAKBAVtYZGVsZWdhdGXUAA4AlQCWAJcA0QN4AJkGMIAsgLiAFoEBXVt1c2Vfc3lzYmVl -cNQADgCVAJYAlwCYAJkGNQY2gBmAFoEBX4EBZNcA1gAOANcA2ADZANoA2wGaAN0GOgY7AZ4A4QGagEaA -KoEBYIEBYQmARl8QF3t7MzQwLCAxOTF9LCB7MTIzLCAzMn193QDrAA4A7ADuAO8A8ADxAPIA8wD0APUA -9gD3APgA+QD6APwBqwEBBkMGRAEBBjUBAwGxAbKAKYAogCCBAWOBAWKAIIEBX1hEdXBsaWNhctIADgA2 -ADcBHoAEXxAVYXBwc190YWJsZV9kdXBsaWNhdGU61AAOAJUAlgCXANEEsgCZBk+ALIEBDYAWgQFmXxAW -ZW5hYmxlX2Z1bGxzY3JlZW5fbWVuddQADgCVAJYAlwDRAw4AmQZVgCyAnoAWgQFoW2VuYWJsZV9hdXRo -1AAOAJUAlgCXANEGAQCZBluALIEBUIAWgQFqXGZha2VfYnV0dG9uc9QADgCVAJYAlwDRAXoAmQZhgCyA -PoAWgQFsXWNsaWNrX3Rocm91Z2jUAA4AlQCWAJcA0QZlAJkGZ4AsgQFugBaBAdLdBmkADgZqBmsGbAZt -Bm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0A/QH+Bn4Gf1xOU1dpbmRvd1ZpZXdcTlNTY3Jl -ZW5SZWN0XxATTlNGcmFtZUF1dG9zYXZlTmFtZV1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dpbmRv -d0NsYXNzXxAWTlNXaW5kb3dDb250ZW50TWluU2l6ZVxOU1dpbmRvd1JlY3RfEA9OU1dpbmRvd0JhY2tp -bmdfEBFOU1dpbmRvd1N0eWxlTWFza1lOU01pblNpemVbTlNWaWV3Q2xhc3OBAXSBAdGBAc6BAdCBAXAS -UHgAAIEBcYEBc4EBb4EBz4EBcl8QGHt7MzE5LCAzMjh9LCB7NjMzLCAzMDh9fW8QEwBQAHIAZQBmAGUA -cgDqAG4AYwBpAGEAcwAgAGQAbwAgAFgAMQAxV05TUGFuZWzSAA4ANgA3BoWABFRWaWV3WnszMjAsIDI0 -MH3VANYADgDkANkBogArAOYGigDgBouAAIEBhoEBdYEBzdIADgBFAE0GjoA6oQL0gQF23ADWAA4GkQUR -ANcBEQDkANkF2QDbBpIGkwZ1BpUGlgEEBpcBAQaZAOAA4QZ1AOEGnV5OU1RhYlZpZXdJdGVtc18QFk5T -QWxsb3dUcnVuY2F0ZWRMYWJlbHNfEBVOU1NlbGVjdGVkVGFiVmlld0l0ZW2BAXSBAcyBAYiBAYeAIIEB -dwmBAXQJgQGJ0gAOAEUATQaggDqhAu2AltIADgBFAE0GpIA6pgYBBqYGpwLpBqkE9IEBUIEBeYEBfYCV -gQGBgQEe1wDWAA4A1wDYANkA2gDbAu0D2AauBq8A4ADhAu2AloDegQF6gQF7CYCWXxAVe3szNiwgNTd9 -LCB7NTEwLCAyOH192QDrAA4D3wDyAPMA9AD2BZoD4AD4A+ED4ga2A+QGpgPmAPoD54DdgNWBAXyA1IEB -eYAogNpvEIMAUwBlACAAZQBzAHQAaQB2AGUAcgBlAG0AIABhAGMAdABpAHYAYQBzACwAIABhAHMAIAB0 -AGUAYwBsAGEAcwAgAGUAcQB1AGkAdgBhAGwAZQBuAHQAZQBzACAAZABhACAAYgBhAHIAcgBhACAAZABl -ACAAbQBlAG4AdQBzACAAcABvAGQAZQBtACAAaQBuAHQAZQByAGYAZQByAGkAcgAgAG4AYQBzACAAYQBw -AGwAaQBjAGEA5wD1AGUAcwAgAFgAMQAxACAAcQB1AGUAIAB1AHQAaQBsAGkAegBhAG0AIABvACAAbQBv -AGQAaQBmAGkAYwBhAGQAbwByACAATQBlAHQAYQAu1wDWAA4A1wDYANkA2gDbAu0D2Aa/BsAA4ADhAu2A -loDegQF+gQF/CYCWXxAWe3szNiwgMTY1fSwgezUxMCwgMzl9fdkA6wAOA98A8gDzAPQA9gWaA+AA+APh -A+IGxwPkBqcD5gD6A+eA3YDVgQGAgNSBAX2AKIDabxBrAEEAbwAgAGMAbABpAGMAYQByACwAIABtAGEA -bgB0AGUAbgBoAGEAIABwAHIAZQBtAGkAZABhAHMAIABhAHMAIAB0AGUAYwBsAGEAcwAgAE8AcADnAOMA -bwAgAG8AdQAgAEMAbwBtAGEAbgBkAG8AIABwAGEAcgBhACAAYQBjAHQAaQB2AGEAcgAgAG8AcwAgAGIA -bwB0APUAZQBzACAAYwBlAG4AdAByAGEAbAAgAG8AdQAgAGQAaQByAGUAaQB0AG8AIABkAG8AIAByAGEA -dABvAC4ACtcA1gAOANcA2ADZANoA2wLtA9gG0AbRAOAA4QLtgJaA3oEBgoEBgwmAll8QFnt7MzYsIDEy -MX0sIHs1MTAsIDE5fX3ZAOsADgPfAPIA8wD0APYFmgPgAPgD4QPiBtgD5AapA+YA+gPngN2A1YEBhIDU -gQGBgCiA2m8QWQBQAGUAcgBtAGkAdABlACAAcQB1AGUAIABhAGwAdABlAHIAYQDnAPUAZQBzACAAZABv -ACAAbQBlAG4AdQAgAGQAZQAgAGUAbgB0AHIAYQBkAGEAIABzAGUAIABzAG8AYgByAGUAcABvAG4AaABh -AG0AIABhAG8AIABhAGMAdAB1AGEAbAAgAG0AYQBwAGEAIABkAGUAIAB0AGUAYwBsAGEAcwAgAGQAbwAg -AFgAMQAxAC5fEBZ7ezEwLCAzM30sIHs1ODcsIDI0Nn190gA6ADsG4AEnowEnASgAP18QFnt7MTMsIDEw -fSwgezYwNywgMjkyfX3SAA4ARQBNBuSAOqUGnQbmBucG6AbpgQGJgQGNgQGigQGrgQG81gAOBusBJwbs -A+8AlwbtBu4C7QL0A+IG8lxOU0lkZW50aWZpZXJZTlNUYWJWaWV3gQGMgQGKgJaBAXaA1YEBi9IADgA2 -ADcG9YAEUTFXRW50cmFkYdIAOgA7BvgG+aIG+QA/XU5TVGFiVmlld0l0ZW3WAA4G6wEnBuwD7wCXBu0G -/AHiAvQD4gcAgQGMgQGOgFeBAXaA1YEBodIADgA2ADcHA4AEUTLSAA4ARQBNBwaAOqgDeAcIAd8HCgcL -Aq8EsgcOgLiBAZCAVoEBlIEBmICGgQENgQGc1wDWAA4A1wDYANkA2gDbAeID2AcSBxMA4ADhAeKAV4De -gQGRgQGSCYBXXxAVe3szNiwgMTV9LCB7NTIxLCA0Mn192QDrAA4D3wDyAPMA9AD2BZoD4AD4A+ED4gca -A+QHCAPmAPoD54DdgNWBAZOA1IEBkIAogNpvEIoATwBzACAAcwBpAG4AYQBpAHMAIABzAG8AbgBvAHIA -bwBzACAAZABvACAAWAAxADEAIAB1AHQAaQBsAGkAegBhAHIA4wBvACAAbwAgAGEAbABlAHIAdABhACAA -cABhAGQAcgDjAG8AIABkAG8AIABzAGkAcwB0AGUAbQBhACwAIAB0AGEAbAAgAGMAbwBtAG8AIABlAHMA -dABpAHYAZQByACAAZABlAGYAaQBuAGkAZABvACAAZQBtACAARQBmAGUAaQB0AG8AcwAgAHMAbwBuAG8A -cgBvAHMALAAgAG4AYQBzACAAcAByAGUAZgBlAHIA6gBuAGMAaQBhAHMAIABkAG8AIABzAGkAcwB0AGUA -bQBhAC7XANYADgDXANgA2QDaANsB4gPYByMHJADgAOEB4oBXgN6BAZWBAZYJgFdfEBV7ezE3LCAyMDV9 -LCB7NTUsIDIwfX3ZAOsADgPfAPIA8wD0APYFmgPgAPgD4QPiBysBAQcKA+YA+gPngN2A1YEBl4AggQGU -gCiA2ldDb3JlczoK1wDWAA4A1wDYANkA2gDbAeID2Ac0BzUA4ADhAeKAV4DegQGZgQGaCYBXXxAWe3sz -NiwgMTgzfSwgezM5MiwgMTR9fdkA6wAOA98A8gDzAPQA9gWaA+AA+APhA+IHPAPkBwsD5gD6A+eA3YDV -gQGbgNSBAZiAKIDabxBDAEUAcwB0AGEAIABvAHAA5wDjAG8AIABlAG4AdAByAGEAcgDhACAAZQBtACAA -dgBpAGcAbwByACAAZABhACAAcAByAPMAeABpAG0AYQAgAHYAZQB6ACAAcQB1AGUAIABvACAAWAAxADEA -IABmAG8AcgAgAGUAeABlAGMAdQB0AGEAZABvAC7XANYADgDXANgA2QDaANsB4gPYB0UHRgDgAOEB4oBX -gN6BAZ2BAZ4JgFdfEBZ7ezM2LCAxMTV9LCB7NTIxLCAyOH192QDrAA4D3wDyAPMA9AD2BZoD4AD4A+ED -4gdNA+QHDgPmAPoD54DdgNWBAZ+A1IEBnIAogNpvEHgAQQBjAHQAaQB2AGEAIABhACAAagBhAG4AZQBs -AGEAIAByAGEAaQB6ACAAZABvACAAWAAxADEALgAgAFUAdABpAGwAaQB6AGUAIABhACAAYwBvAG0AYgBp -AG4AYQDnAOMAbwAgAGQAZQAgAHQAZQBjAGwAYQBzACAAQwBvAG0AYQBuAGQAbwAtAE8AcADnAOMAbwAt -AEEAIABwAGEAcgBhACAAZQBuAHQAcgBhAHIAIABlACAAcwBhAGkAcgAgAGQAbwAgAG0AbwBkAG8AIABk -AGUAIABlAGMAcgDjACAAYwBvAG0AcABsAGUAdABvAC5lAFMAYQDtAGQAYdYADgbrAScG7APvAJcG7QdW -ANwC9APiB1qBAYyBAaOAHIEBdoDVgQGq0gAOADYANwcDgATSAA4ARQBNB1+AOqgElQdhANIByANUAnwD -0wQ/gQEGgQGlgBuAUYCwgHqA0IDt1wDWAA4A1wDYANkA2gDbANwD2AdrB2wA4ADhANyAHIDegQGmgQGn -CYAcXxAWe3szNiwgMTg4fSwgezU0MCwgMjh9fdgA6wAOA98A8gDzAPQA9gPgAPgD4QPiB3MD5AdhA+YD -54DdgNWBAaiA1IEBpYDabxCBAEEAYwB0AGkAdgBhACAAbwAgAGkAdABlAG0AIABkAGUAIABtAGUAbgB1 -ACAAIgBjAG8AcABpAGEAcgAiACAAZQAgAHAAZQByAG0AaQB0AGUAIABhACAAcwBpAG4AYwByAG8AbgBp -AHoAYQDnAOMAbwAgAGUAbgB0AHIAZQAgAGEAIADhAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQAg -AGQAbwAgAE8AUwAgAFgAIABlACAAbwBzACAAYgB1AGYAZgBlAHIAcwAgAEMATABJAFAAQgBPAEEAUgBE -ACAAZQAgAFAAUgBJAE0AQQBSAFkAIABkAG8AIABYADEAMQAubxAPAMEAcgBlAGEAIABkAGUAIABjAG8A -bABhAGcAZQBt1gAOBusBJwbsA+8AlwbtB3sBfQL0A+IHf4EBjIEBrIA/gQF2gNWBAbvSAA4ANgA3BwOA -BNIADgBFAE0HhIA6pgF6B4YDoweIApIHioA+gQGugMOBAbKAf4EBttcA1gAOANcA2ADZANoA2wF9A9gH -jgePAOAA4QF9gD+A3oEBr4EBsAmAP18QFnt7MjMsIDE3NX0sIHs1MTksIDMxfX3YAOsADgPfAPIA8wD0 -APYD4AD4A+ED4geWA+QHhgPmA+eA3YDVgQGxgNSBAa6A2m8QggBTAGUAIABhAHMAcwBpAG4AYQBsAGEA -cgAgAGUAcwB0AGEAIABvAHAA5wDjAG8ALAAgAGEAbwAgAGMAbABpAGMAYQByACAAbgB1AG0AYQAgAGoA -YQBuAGUAbABhACAAaQBuAGEAYwB0AGkAdgBhACwAIABvACAAYwBsAGkAcQB1AGUAIABuAOMAbwAgAHMA -8wAgAGEAIAB0AHIAYQB6ACAAcABhAHIAYQAgAGEAIABmAHIAZQBuAHQAZQAgAGMAbwBtAG8AIABhAGMA -dABpAHYAYQAgAGEAIABqAGEAbgBlAGwAYQAgAGMAbwBtAHAAbABlAHQAYQBtAGUAbgB0AGUALgAg1wDW -AA4A1wDYANkA2gDbAX0D2AeeB58A4ADhAX2AP4DegQGzgQG0CYA/XxAWe3syMywgMTI1fSwgezQ5MCwg -MjB9fdgA6wAOA98A8gDzAPQA9gPgAPgD4QPiB6YD5AeIA+YD54DdgNWBAbWA1IEBsoDaXxBJTyBmb2Nv -IGRhIGphbmVsYSBkbyBYMTEgc2VndWUgbyBjdXJzb3IuIElzdG8gdGVtIGFsZ3VucyBlZmVpdG9zIGFk -dmVyc29zLtcA1gAOANcA2ADZANoA2wF9A9gHrgevAOAA4QF9gD+A3oEBt4EBuAmAP18QFXt7MjMsIDcz -fSwgezUwOSwgMjh9fdgA6wAOA98A8gDzAPQA9gPgAPgD4QPiB7YD5AeKA+YD54DdgNWBAbmA1IEBtoDa -bxB6AEEAIABjAHIAaQBhAOcA4wBvACAAZABlACAAdQBtAGEAIABuAG8AdgBhACAAagBhAG4AZQBsAGEA -IABYADEAMQAgAGYAYQB6ACAAYwBvAG0AIABxAHUAZQAgAFgAMQAxAC4AYQBwAHAAIAB2AGUAbgBoAGEA -IABwAGEAcgBhACAAcAByAGkAbQBlAGkAcgBvACAAcABsAGEAbgBvACAAKABlAG0AIAB2AGUAegAgAGQA -ZQAgAEYAaQBuAGQAZQByAC4AYQBwAHAALAAgAFQAZQByAG0AaQBuAGEAbAAuAGEAcABwACwAIABlAHQA -YwAuACkALldKYW5lbGFz1QAOAScG7APvAJcG7QMRAvQD4gfBgQGMgJ+BAXaA1YEBy9IADgBFAE0HxIA6 -pQMOBMgHxwfIB8mAnoEBEoEBvoEBwoEBxtcA1gAOANcA2ADZANoA2wMRA9gHzQfOAOAA4QMRgJ+A3oEB -v4EBwAmAn18QFnt7MzYsIDE2Mn0sIHs0OTYsIDQyfX3ZAOsADgPfAPIA8wD0APYFmgPgAPgD4QPiB9UD -5AfHA+YA+gPngN2A1YEBwYDUgQG+gCiA2m8QwwBMAGEAbgDnAGEAcgAgAG8AIABYADEAMQAgAGMAcgBp -AGEAIABjAGgAYQB2AGUAcwAgAFgAYQB1AHQAaABvAHIAaQB0AHkAIABkAGUAIABjAG8AbgB0AHIAbwBs -AG8AIABkAGUAIABhAGMAZQBzAHMAbwAuACAAUwBlACAAbwAgAGUAbgBkAGUAcgBlAOcAbwAgAEkAUAAg -AGQAbwAgAHMAaQBzAHQAZQBtAGEAIABmAG8AcgAgAGEAbAB0AGUAcgBhAGQAbwAsACAAZQBzAHQAYQBz -ACAAYwBoAGEAdgBlAHMAIABwAGUAcgBkAGUAbQAgAGEAIAB2AGEAbABpAGQAYQBkAGUALAAgAHAAbwBk -AGUAbgBkAG8ALAAgAGEAcwBzAGkAbQAsACAAIABpAG0AcABvAHMAcwBpAGIAaQBsAGkAdABhAHIAIABh -ACAAZQB4AGUAYwB1AOcA4wBvACAAZABhAHMAIABhAHAAbABpAGMAYQDnAPUAZQBzACAAWAAxADEALtcA -1gAOANcA2ADZANoA2wMRA9gH3gffAOAA4QMRgJ+A3oEBw4EBxAmAn18QFXt7MzYsIDcxfSwgezQ5Niwg -NTZ9fdkA6wAOA98A8gDzAPQA9gWaA+AA+APhA+IH5gPkB8gD5gD6A+eA3YDVgQHFgNSBAcKAKIDabxDP -AFMAZQAgAGEAYwB0AGkAdgBhAHIAIABlAHMAdABhACAAbwBwAOcA4wBvACwAIABwAHIAZQBjAGkAcwBh -ACAAaQBnAHUAYQBsAG0AZQBuAHQAZQAgAGQAZQAgAGEAYwB0AGkAdgBhAHIAIABhACAAbwBwAOcA4wBv -ACAgHABBAHUAdABlAG4AdABpAGMAYQByACAAbABpAGcAYQDnAPUAZQBzIB0AIABwAGEAcgBhACAAZwBh -AHIAYQBuAHQAaQByACAAYQAgAHMAZQBnAHUAcgBhAG4A5wBhACAAZABvACAAcwBpAHMAdABlAG0AYQAu -ACAAUwBlACAAbgDjAG8AIABhAGMAdABpAHYAYQByACAAZQBzAHQAYQAgAG8AcADnAOMAbwAsACAAbgDj -AG8AIABzAOMAbwAgAHAAZQByAG0AaQB0AGkAZABhAHMAIABsAGkAZwBhAOcA9QBlAHMAIABhACAAcABh -AHIAdABpAHIAIABkAGUAIABhAHAAbABpAGMAYQDnAPUAZQBzACAAcgBlAG0AbwB0AGEAcwAu1wDWAA4A -1wDYANkA2gDbAxED2AfvB/AA4ADhAxGAn4DegQHHgQHICYCfXxAWe3syMCwgLTE2fSwgezQwNCwgMTR9 -fdkA6wAOA98A8gDzAPQA9gWaA+AA+APhA+IH9wPkB8kD5gD6A+eA3YDVgQHJgNSBAcaAKIDabxBGAEUA -cwB0AGEAcwAgAG8AcADnAPUAZQBzACAAZQBuAHQAcgBhAHIA4wBvACAAZQBtACAAdgBpAGcAbwByACAA -ZABhACAAcAByAPMAeABpAG0AYQAgAHYAZQB6ACAAcQB1AGUAIABvACAAWAAxADEAIABmAG8AcgAgAGUA -eABlAGMAdQB0AGEAZABvAC5pAFMAZQBnAHUAcgBhAG4A5wBh0gA6ADsH/wbspAbsAScBKAA/Wns2MzMs -IDMwOH1fEBV7ezAsIDB9LCB7MTQ0MCwgODc4fX1aezMyMCwgMjYyfVl4MTFfcHJlZnPSADoAOwgFCAai -CAYAP18QEE5TV2luZG93VGVtcGxhdGVbcHJlZnNfcGFuZWzUAA4AlQCWAJcAmACZBPQBe4AZgBaBAR6A -Q9QADgCVAJYAlwCYAJkIEAgRgBmAFoEB1YEB2NgADgCdAJ4AnwCgAKEAogCjAKQIFAFCCBUAqACpAKoA -q4AVgQHWgQHXgA+AE4AMVkZlY2hhclF3XWNsb3NlX3dpbmRvdzrUAA4AlQCWAJcA0QgeAB8IIIAsgQHa -gAKBAgLUAA4AnQCtAK4ArwgjCCQIJYA7gQHbgQIBgQHcWE1haW5NZW510gAOAEUATQgpgDqlCCoIKwgs -CC0ILoEB3YEB7IEB74EB84EB/doADgFKAJ0AngCfAKAAoQCiAKMBSwCkAlwCXwFCAPoAqACpAKoIHgg3 -gBWAb4EB3oAogA+AE4EB2oEB31NYMTHSAA4ARQBNCDuAOqwCaAThCD4IPwhAAlMIQgSHAyoDjwhGBHiA -dIEBGIEB4YEB4oEB6IBugQHpgQECgKSAvYEB6oD92gAOAJ0AngE+AJ8BPwCgAKEAogCjAKQA+gFCAOEA -+gDhAKgAqQCqAlyAFYAoCYAoCYAPgBOAb9oADgFKAJ0AngCfAKAAoQCiAKMBSwCkCFMIVAFCAPoAqACp -AKoCXAhZgBWBAeWBAeOAKIAPgBOAb4EB5GgAUwBlAHIAdgBpAOcAbwBz1AAOAJ0ArQCuAK8IVAheCF+A -O4EB44EB54EB5tIADgBFAE0IYoA6oF8QD19OU1NlcnZpY2VzTWVuddoADgCdAJ4BPgCfAT8AoAChAKIA -owCkAPoBQgDhAPoA4QCoAKkAqgJcgBWAKAmAKAmAD4ATgG/aAA4AnQCeAT4AnwE/AKAAoQCiAKMApAD6 -AUIA4QD6AOEAqACpAKoCXIAVgCgJgCgJgA+AE4Bv2gAOAJ0AngE+AJ8BPwCgAKEAogCjAKQA+gFCAOEA -+gDhAKgAqQCqAlyAFYAoCYAoCYAPgBOAb1xfTlNBcHBsZU1lbnXaAA4BSgCdAJ4AnwCgAKEAogCjAUsA -pALSAU4BQgD6AKgAqQCqCB4IiIAVgI2AM4AogA+AE4EB2oEB7dIADgBFAE0Ii4A6ogLHA2uAjIC12gAO -AUoAnQCeAJ8AoAChAKIAowFLAKQEYwRmAUIA+gCoAKkAqggeCJaAFYD2gQHwgCiAD4ATgQHagQHxZgBF -AGQAaQDnAOMAb9IADgBFAE0ImoA6oQRbgPXaAA4BSgCdAJ4AnwCgAKEAogCjAUsApACrALABQgD6AKgA -qQCqCB4IpIAVgAyBAfSAKIAPgBOBAdqBAfVWSmFuZWxh0gAOAEUATQiogDqpCBAC2wQtCKwIrQCaCK8B -ugM4gQHVgJCA6IEB94EB+IALgQH7gE2AqdoADgCdAJ4BPgCfAT8AoAChAKIAowCkAPoBQgDhAPoA4QCo -AKkAqgCrgBWAKAmAKAmAD4ATgAzYAA4AnQCeAJ8AoAChAKIAowCkCL0Ivgi/AKgAqQCqAKuAFYEB+RIA -EAEIgQH6gA+AE4AMXxARUGVyY29ycmVyIGphbmVsYXNRYNoADgCdAJ4BPgCfAT8AoAChAKIAowCkAPoB -QgDhAPoA4QCoAKkAqgCrgBWAKAmAKAmAD4ATgAxeX05TV2luZG93c01lbnXaAA4BSgCdAJ4AnwCgAKEA -ogCjAUsApAPKA80BQgD6AKgAqQCqCB4I14AVgMyBAf6AKIAPgBOBAdqBAf9VQWp1ZGHSAA4ARQBNCNuA -OqEDwoDLW19OU01haW5NZW51VG1lbnXUAA4AlQCWAJcA0QRbAJkI44AsgPWAFoECBF5jb3B5X21lbnVf -aXRlbdQADgCVAJYAlwCYAJkIrQjpgBmAFoEB+IECBlxuZXh0X3dpbmRvdzrSAA4ARQjsCO2BAiKvEJQH -3wIDCEYHJAKSA3gIrAcKAV4GZQVcAq8EzwY7A34EYwivAscGqQT0BD8GAQdGBR8C7QF9A6MCfAInBw4I -KgdsBqYFMAitAJoBlwbpBLIGrwLwBwgG5wFdB68DVAhCAxQIEAEvCD4GBwPTA1oILATIB4YHiAefA8IB -5QGaAU0B/AkuAboEEwcTBnUDjwE7AmgFcQS4B8cCmQfJBYAIHgCZAzgC0gCrA2sCgghTCC0E+wbmAw4G -6AVmAlMHCwdhBXIBegQtA6oCJQGAAyoFDAVwAiYDEQbRBBkGwAK2B/AEWwg/AlwEhwY1CCsJYwadA9oI -LgWvB8gC2whAAcgERgGdBHgB4gSbB48C9ASVB84HigHOBccHNQLpA8oB3wDcANIGpwDfATwE4YEBxIBd -gQHqgQGWgH+AuIEB94EBlIA4gQFugQIIgIaBARSBAWGAuoD2gQH7gIyBAYGBAR6A7YEBUIEBnoEBJ4CW -gD+Aw4B6gGiBAZyBAd2BAaeBAXmBASyBAfiAC4BFgQG8gQENgQF7gJiBAZCBAaKAN4EBuICwgQHpgKGB -AdWALoEB4YEBUoDQgLKBAe+BARKBAa6BAbKBAbSAy4BZgEaANYBcgQIYgE2A4YEBkoEBdIC9gDGAdIEB -O4EBD4EBvoCBgQHGgQE3gQHagBaAqYCNgAyAtYB8gQHlgQHzgQEggQGNgJ6BAauBAhCAboEBmIEBpYEB -P4A+gOiAxYBigEGApIEBJIEBMIBlgJ+BAYOA44EBf4CIgQHIgPWBAeKAb4EBAoEBX4EB7IECIIEBiYDS -gQH9gQE+gQHCgJCBAeiAUYDvgEiA/YBXgQEIgQGwgQF2gQEGgQHAgQG2gFOBAUSBAZqAlYDMgFaAHIAb -gQF9gB6AMoEBGNkA1gIMAA4A1wVWANkBSwDbCYMFMAUwCYYJhwGrAOAJiAUwCYpZTlNQZXJjZW50gQEs -gQEsgQILgQIJgQIKgQEsIz/mCGTAAAAAXxAVe3sxLCAyMTV9LCB7MzAxLCAxNX19XF9kb1Njcm9sbGVy -OtIAOgA7CY4Jj6UJjwEmAScBKAA/Wk5TU2Nyb2xsZXLSAA4ARQBNCZKAOqUFHAVmBVwFPQUigQElgQIQ -gQIIgQEogQEr0gAOAEUATQmagDqhBQyBASRfEBV7ezEsIDE3fSwgezMwMSwgMTk4fX3SADoAOwmeCZ+k -CZ8BJwEoAD9aTlNDbGlwVmlld9gA1gIMAA4A1wDZAUsA2wmDBTAFMAmGCaQA4AmIBTAJp4EBLIEBLIEC -C4ECEYECCoEBLCM/79ZqYAAAAF8QFnt7MzAyLCAxN30sIHsxNSwgMTk4fX3SAA4ARQBNCauAOqEFH4EB -J18QE3t7MSwgMH0sIHszMDEsIDE3fX1fEBZ7ezIwLCAyMH0sIHszMTgsIDIzMX190gA6ADsJsAmxpAmx -AScBKAA/XE5TU2Nyb2xsVmlld9IADgBFAE0JtIA6pAY1AZcFMAQTgQFfgEWBASyA4Vp7NDc3LCAyNzF9 -3QZpAA4GagZrBmwGbQZuBm8GcAZxBnIGcwZ0AZoGdgm9Cb4JvwZ6BnsJwQnCAP0JwwnECcWARoEB0YEC -HYECH4ECGoEBcYECHIECGRALgQIegQIbXxAYe3szNjAsIDQwMH0sIHs0NzcsIDI3MX19bxAVAE0AZQBu -AHUAIABBAHAAbABpAGMAYQDnAOMAbwAgAGQAbwAgAFgAMQAx0gAOADYANwaFgARYeDExX2FwcHPSAA4A -MgAzCc2ABYECIdIAOgA7Cc8Bc6IBcwA/0gAOAEUI7AnSgQIirxCUB8gB5QJcBwoBfQHiAKsB4gFNAB8F -MAHiBMgGNQN4CCwAqwLSAu0C7QDcAu0HDgUwBp0G6AF9ANwCAwHiCB4HYQLtAZoAqwCrAZoC9AHiBqYC -6QHiAvQBTQeKANwCXAMOAKsAHwJcBgEA3ANUCB4DEQF9AX0HiAPKAd8JLgE8AgMAHwCrAZoHCAZlAlwB -LwJcBQwEsgMRApIDEQVwAB8AHwCrCCsILQLSAnwIPwgeBPQC9AMRAvQFMAJcAeIA3AUMAX0AqwOjAgMB -egJcBTAFDAIDBukGqQQTBqcCrwfJBGMCXAgqAlwBmggeAB8C9APTCB4FcQMRAKsCXADcBD8BlwJcBuYE -lQeGBnUA3AfHAX0ByAVyBwsC7QguAeIG5wDcAu0A0gEvAlyBAcKAWYBvgQGUgD+AV4AMgFeANYACgQEs -gFeBARKBAV+AuIEB74AMgI2AloCWgByAloEBnIEBLIEBiYEBq4A/gByAXYBXgQHagQGlgJaARoAMgAyA -RoEBdoBXgQF5gJWAV4EBdoA1gQG2gByAb4CegAyAAoBvgQFQgByAsIEB2oCfgD+AP4EBsoDMgFaBAhiA -MoBdgAKADIBGgQGQgQFugG+ALoBvgQEkgQENgJ+Af4CfgQEwgAKAAoAMgQHsgQHzgI2AeoEB4oEB2oEB -HoEBdoCfgQF2gQEsgG+AV4AcgQEkgD+ADIDDgF2APoBvgQEsgQEkgF2BAbyBAYGA4YEBfYCGgQHGgPaA -b4EB3YBvgEaBAdqAAoEBdoDQgQHagQE7gJ+ADIBvgByA7YBFgG+BAY2BAQaBAa6BAXSAHIEBvoA/gFGB -AT+BAZiAloEB/YBXgQGigByAloAbgC6Ab9IADgBFCOwKaYECIq8QlQffAgMIRgckApIBXgisA3gHCgZl -BVwCrwTPBjsDfgRjCK8CxwQ/BqkE9AUfBgEHRgLtAX0DowJ8Bw4CJwgqAZcFMAamCK0AmgdsBukEsgav -AvAHCAbnAV0DVAevCEIBLwgQAxQIPgYHA9MDWggsBMgHhgeIB58DwgHlAZoBTQH8CS4BugQTBxMGdQOP -ATsCaAVxBLgHxwKZB8kFgAgeAJkDOALSAKsDawKCCFMILQT7BuYG6AMOAB8CUwVmBXIHYQcLBC0BegOq -AiUBgAMqBQwFcAMRAiYG0QQZArYGwAfwBFsGNQJcCD8EhwgrCWMGnQPaCC4FrwfIAtsIQAGdAcgERgR4 -AeIFxwSVAvQEmweKB84BzgePANIBPAPKANwB3wLpBqcA3wc1BOGBAcSAXYEB6oEBloB/gDiBAfeAuIEB -lIEBboECCICGgQEUgQFhgLqA9oEB+4CMgO2BAYGBAR6BASeBAVCBAZ6AloA/gMOAeoEBnIBogQHdgEWB -ASyBAXmBAfiAC4EBp4EBvIEBDYEBe4CYgQGQgQGigDeAsIEBuIEB6YAugQHVgKGBAeGBAVKA0ICygQHv -gQESgQGugQGygQG0gMuAWYBGgDWAXIECGIBNgOGBAZKBAXSAvYAxgHSBATuBAQ+BAb6AgYEBxoEBN4EB -2oAWgKmAjYAMgLWAfIEB5YEB84EBIIEBjYEBq4CegAKAboECEIEBP4EBpYEBmIDogD6AxYBigEGApIEB -JIEBMICfgGWBAYOA44CIgQF/gQHIgPWBAV+Ab4EB4oEBAoEB7IECIIEBiYDSgQH9gQE+gQHCgJCBAeiA -SIBRgO+A/YBXgQFEgQEGgQF2gQEIgQG2gQHAgFOBAbCAG4AygMyAHIBWgJWBAX2AHoEBmoEBGNIADgBF -COwLAYECIq8QlQsCCwMLBAsFCwYLBwsICwkLCgsLCwwLDQsOCw8LEAsRCxILEwsUCxULFgsXCxgLGQsa -CxsLHAsdCx4LHwsgCyELIgsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsyCzMLNAs1CzYLNws4 -CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwgjAMkLUgtTC1QLVQtW -C1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0 -C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuS -C5MLlAuVC5aBAiaBAieBAiiBAimBAiqBAiuBAiyBAi2BAi6BAi+BAjCBAjGBAjKBAjOBAjSBAjWBAjaB -AjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiBAkmBAkqB -AkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyBAl2BAl6B -Al+BAmCBAmGBAmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmuBAmyBAm2BAm6BAm+BAnCBAnGBAnKB -AnOBAduAF4ECdIECdYECdoECd4ECeIECeYECeoECe4ECfIECfYECfoECf4ECgIECgYECgoECg4EChIEC -hYEChoECh4ECiIECiYECioECi4ECjIECjYECjoECj4ECkIECkYECkoECk4EClIEClYECloECl4ECmIEC -mYECmoECm4ECnIECnYECnoECn4ECoIECoYECooECo4ECpIECpYECpoECp4ECqIECqYECqoECq4ECrIEC -rYECroECr4ECsIECsYECsoECs4ECtIECtYECtoECt4ECuG8Q4QBUAGUAeAB0ACAARgBpAGUAbABkACAA -QwBlAGwAbAAgACgAUwBlACAAYQBjAHQAaQB2AGEAcgAgAGUAcwB0AGEAIABvAHAA5wDjAG8ALAAgAHAA -cgBlAGMAaQBzAGEAIABpAGcAdQBhAGwAbQBlAG4AdABlACAAZABlACAAYQBjAHQAaQB2AGEAcgAgAGEA -IABvAHAA5wDjAG8AICAcAEEAdQB0AGUAbgB0AGkAYwBhAHIAIABsAGkAZwBhAOcA9QBlAHMgHQAgAHAA -YQByAGEAIABnAGEAcgBhAG4AdABpAHIAIABhACAAcwBlAGcAdQByAGEAbgDnAGEAIABkAG8AIABzAGkA -cwB0AGUAbQBhAC4AIABTAGUAIABuAOMAbwAgAGEAYwB0AGkAdgBhAHIAIABlAHMAdABhACAAbwBwAOcA -4wBvACwAIABuAOMAbwAgAHMA4wBvACAAcABlAHIAbQBpAHQAaQBkAGEAcwAgAGwAaQBnAGEA5wD1AGUA -cwAgAGEAIABwAGEAcgB0AGkAcgAgAGQAZQAgAGEAcABsAGkAYwBhAOcA9QBlAHMAIAByAGUAbQBvAHQA -YQBzAC4AKV8QEU1lbnUgKE90aGVyVmlld3MpW1NlcGFyYXRvci0xXxAZVGV4dCBGaWVsZCBDZWxsIChD -b3JlczoKKV8QIUNoZWNrIEJveCAoRm9jbyBlbSBqYW5lbGFzIG5vdmFzKW8QGQBNAGUAbgB1ACAASQB0 -AGUAbQAgACgAUABlAHIAcwBvAG4AYQBsAGkAegBhAHIgJgApW1NlcGFyYXRvci01XxAyQ2hlY2sgQm94 -IChVdGlsaXphciBvIGVmZWl0byBkZSBhbGVydGEgZG8gc2lzdGVtYSlfEBVTdGF0aWMgVGV4dCAoQ29y -ZXM6CilaUHJlZnNQYW5lbF8QE0hvcml6b250YWwgU2Nyb2xsZXJvEB4AQwBoAGUAYwBrACAAQgBvAHgA -IAAoAE0AbwBkAG8AIABlAGMAcgDjACAAYwBvAG0AcABsAGUAdABvAClvEDMAQgB1AHQAdABvAG4AIABD -AGUAbABsACAAKABQAGUAcgBtAGkAdABpAHIAIABsAGkAZwBhAOcA9QBlAHMAIABkAGUAIABjAGwAaQBl -AG4AdABlAHMAIABkAGEAIAByAGUAZABlAClfEBZCdXR0b24gQ2VsbCAoRHVwbGljYXIpXxA0QnV0dG9u -IENlbGwgKFV0aWxpemFyIG8gZWZlaXRvIGRlIGFsZXJ0YSBkbyBzaXN0ZW1hKW0ATQBlAG4AdQAgACgA -RQBkAGkA5wDjAG8AKVtTZXBhcmF0b3ItNltTZXBhcmF0b3ItOG8QawBTAHQAYQB0AGkAYwAgAFQAZQB4 -AHQAIAAoAEQAZQB2AGkAZABvACAAYQAgAGwAaQBtAGkAdABhAOcA9QBlAHMAIABkAG8AIABwAHIAbwB0 -AG8AYwBvAGwAbwAgAFgAMQAxACwAIABlAHMAdABhACAAbwBwAOcA4wBvACAAbgBlAG0AIABzAGUAbQBw -AHIAZQAgAGYAdQBuAGMAaQBvAG4AYQByAOEAIABlAG0AIABhAGwAZwB1AG0AYQBzACAAYQBwAGwAaQBj -AGEA5wD1AGUAcwAuAClvEGcAUwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABQAGUAcgBtAGkAdABlACAA -cQB1AGUAIABhAGwAdABlAHIAYQDnAPUAZQBzACAAZABvACAAbQBlAG4AdQAgAGQAZQAgAGUAbgB0AHIA -YQBkAGEAIABzAGUAIABzAG8AYgByAGUAcABvAG4AaABhAG0AIABhAG8AIABhAGMAdAB1AGEAbAAgAG0A -YQBwAGEAIABkAGUAIAB0AGUAYwBsAGEAcwAgAGQAbwAgAFgAMQAxAC4AKW8QNQBDAGgAZQBjAGsAIABC -AG8AeAAgACgAUwBlAGcAdQBpAHIAIABhACAAZABpAHMAcABvAHMAaQDnAOMAbwAgAGQAbwAgAHQAZQBj -AGwAYQBkAG8AIABkAG8AIABzAGkAcwB0AGUAbQBhAClfEBFUYWJsZSBIZWFkZXIgVmlld28QJwBDAGgA -ZQBjAGsAIABCAG8AeAAgACgAUwBpAG0AdQBsAGEAcgAgAHIAYQB0AG8AIABkAGUAIAB0AHIA6gBzACAA -YgBvAHQA9QBlAHMAKW8QigBUAGUAeAB0ACAARgBpAGUAbABkACAAQwBlAGwAbAAgACgAQQBjAHQAaQB2 -AGEAIABhACAAagBhAG4AZQBsAGEAIAByAGEAaQB6ACAAZABvACAAWAAxADEALgAgAFUAdABpAGwAaQB6 -AGUAIABhACAAYwBvAG0AYgBpAG4AYQDnAOMAbwAgAGQAZQAgAHQAZQBjAGwAYQBzACAAQwBvAG0AYQBu -AGQAbwAtAE8AcADnAOMAbwAtAEEAIABwAGEAcgBhACAAZQBuAHQAcgBhAHIAIABlACAAcwBhAGkAcgAg -AGQAbwAgAG0AbwBkAG8AIABkAGUAIABlAGMAcgDjACAAYwBvAG0AcABsAGUAdABvAC4AKVZWaWV3LTRW -Vmlldy0zXxAdQ2hlY2sgQm94IChGb2NvIHNlZ3VlIG8gcmF0bylvEEIAQwBoAGUAYwBrACAAQgBvAHgA -IAAoAEEAYwB0AHUAYQBsAGkAegBhAHIAIABhACAA4QByAGUAYQAgAGQAZQAgAGMAbwBsAGEAZwBlAG0A -IABxAHUAYQBuAGQAbwAgAG8AIABDAEwASQBQAEIATwBBAFIARAAgAG0AdQBkAGEAcgAuAClvEIYAUwB0 -AGEAdABpAGMAIABUAGUAeAB0ACAAKABBAGMAdABpAHYAYQAgAGEAIABqAGEAbgBlAGwAYQAgAHIAYQBp -AHoAIABkAG8AIABYADEAMQAuACAAVQB0AGkAbABpAHoAZQAgAGEAIABjAG8AbQBiAGkAbgBhAOcA4wBv -ACAAZABlACAAdABlAGMAbABhAHMAIABDAG8AbQBhAG4AZABvAC0ATwBwAOcA4wBvAC0AQQAgAHAAYQBy -AGEAIABlAG4AdAByAGEAcgAgAGUAIABzAGEAaQByACAAZABvACAAbQBvAGQAbwAgAGQAZQAgAGUAYwBy -AOMAIABjAG8AbQBwAGwAZQB0AG8ALgApbxATAE0AZQBuAHUAIABJAHQAZQBtACAAKABNAGkAbABoAPUA -ZQBzAClfEA9NZW51IEl0ZW0gKFgxMSlfEBVQdXNoIEJ1dHRvbiAoUmVtb3ZlcilbU2Nyb2xsIFZpZXdv -EJEAUwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABTAGUAIABlAHMAdABpAHYAZQByAGUAbQAgAGEAYwB0 -AGkAdgBhAHMALAAgAGEAcwAgAHQAZQBjAGwAYQBzACAAZQBxAHUAaQB2AGEAbABlAG4AdABlAHMAIABk -AGEAIABiAGEAcgByAGEAIABkAGUAIABtAGUAbgB1AHMAIABwAG8AZABlAG0AIABpAG4AdABlAHIAZgBl -AHIAaQByACAAbgBhAHMAIABhAHAAbABpAGMAYQDnAPUAZQBzACAAWAAxADEAIABxAHUAZQAgAHUAdABp -AGwAaQB6AGEAbQAgAG8AIABtAG8AZABpAGYAaQBjAGEAZABvAHIAIABNAGUAdABhAC4AKV8QHU1lbnUg -SXRlbSAoUGVyY29ycmVyIGphbmVsYXMpXxAwTWVudSBJdGVtIChQZXJjb3JyZXIgamFuZWxhcyBubyBz -ZW50aWRvIGludmVyc28pbxCTAFQAZQB4AHQAIABGAGkAZQBsAGQAIABDAGUAbABsACAAKABBAGMAdABp -AHYAYQAgAG8AIABpAHQAZQBtACAAZABlACAAbQBlAG4AdQAgACIAYwBvAHAAaQBhAHIAIgAgAGUAIABw -AGUAcgBtAGkAdABlACAAYQAgAHMAaQBuAGMAcgBvAG4AaQB6AGEA5wDjAG8AIABlAG4AdAByAGUAIABh -ACAA4QByAGUAYQAgAGQAZQAgAGMAbwBsAGEAZwBlAG0AIABkAG8AIABPAFMAIABYACAAZQAgAG8AcwAg -AGIAdQBmAGYAZQByAHMAIABDAEwASQBQAEIATwBBAFIARAAgAGUAIABQAFIASQBNAEEAUgBZACAAZABv -ACAAWAAxADEALgApbxAZAFQAYQBiACAAVgBpAGUAdwAgAEkAdABlAG0AIAAoAFMAZQBnAHUAcgBhAG4A -5wBhAClvEE0AQwBoAGUAYwBrACAAQgBvAHgAIAAoAE0AbwBzAHQAcgBhAHIAIABhAHUAdABvAG0AYQB0 -AGkAYwBhAG0AZQBuAHQAZQAgAGEAIABiAGEAcgByAGEAIABkAGUAIABtAGUAbgB1AHMAIABlAG0AIABt -AG8AZABvACAAZABlACAAZQBjAHIA4wAgAGMAbwBtAHAAbABlAHQAbwApbxCVAFQAZQB4AHQAIABGAGkA -ZQBsAGQAIABDAGUAbABsACAAKABTAGUAIABlAHMAdABpAHYAZQByAGUAbQAgAGEAYwB0AGkAdgBhAHMA -LAAgAGEAcwAgAHQAZQBjAGwAYQBzACAAZQBxAHUAaQB2AGEAbABlAG4AdABlAHMAIABkAGEAIABiAGEA -cgByAGEAIABkAGUAIABtAGUAbgB1AHMAIABwAG8AZABlAG0AIABpAG4AdABlAHIAZgBlAHIAaQByACAA -bgBhAHMAIABhAHAAbABpAGMAYQDnAPUAZQBzACAAWAAxADEAIABxAHUAZQAgAHUAdABpAGwAaQB6AGEA -bQAgAG8AIABtAG8AZABpAGYAaQBjAGEAZABvAHIAIABNAGUAdABhAC4AKW8QOgBCAHUAdAB0AG8AbgAg -AEMAZQBsAGwAIAAoAEEAYwB0AGkAdgBhAHIAIABhAHMAIABlAHEAdQBpAHYAYQBsAOoAbgBjAGkAYQBz -ACAAZABlACAAdABlAGMAbABhAGQAbwAgAHAAYQByAGEAIABYADEAMQApbxCYAFMAdABhAHQAaQBjACAA -VABlAHgAdAAgACgATwBzACAAcwBpAG4AYQBpAHMAIABzAG8AbgBvAHIAbwBzACAAZABvACAAWAAxADEA -IAB1AHQAaQBsAGkAegBhAHIA4wBvACAAbwAgAGEAbABlAHIAdABhACAAcABhAGQAcgDjAG8AIABkAG8A -IABzAGkAcwB0AGUAbQBhACwAIAB0AGEAbAAgAGMAbwBtAG8AIABlAHMAdABpAHYAZQByACAAZABlAGYA -aQBuAGkAZABvACAAZQBtACAARQBmAGUAaQB0AG8AcwAgAHMAbwBuAG8AcgBvAHMALAAgAG4AYQBzACAA -cAByAGUAZgBlAHIA6gBuAGMAaQBhAHMAIABkAG8AIABzAGkAcwB0AGUAbQBhAC4AKW8QHwBUAGEAYgAg -AFYAaQBlAHcAIABJAHQAZQBtACAAKADBAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQApW1NlcGFy -YXRvci05bxBaAEMAaABlAGMAawAgAEIAbwB4ACAAKABBAGMAdAB1AGEAbABpAHoAYQByACAAYQAgAOEA -cgBlAGEAIABkAGUAIABjAG8AbABhAGcAZQBtACAAaQBtAGUAZABpAGEAdABhAG0AZQBuAHQAZQAgAHEA -dQBhAG4AZABvACAAZgBvAHIAIABzAGUAbABlAGMAYwBpAG8AbgBhAGQAbwAgAHQAZQB4AHQAbwAgAG4A -bwB2AG8ALgApbxCMAFQAZQB4AHQAIABGAGkAZQBsAGQAIABDAGUAbABsACAAKABBACAAYwByAGkAYQDn -AOMAbwAgAGQAZQAgAHUAbQBhACAAbgBvAHYAYQAgAGoAYQBuAGUAbABhACAAWAAxADEAIABmAGEAegAg -AGMAbwBtACAAcQB1AGUAIABYADEAMQAuAGEAcABwACAAdgBlAG4AaABhACAAcABhAHIAYQAgAHAAcgBp -AG0AZQBpAHIAbwAgAHAAbABhAG4AbwAgACgAZQBtACAAdgBlAHoAIABkAGUAIABGAGkAbgBkAGUAcgAu -AGEAcABwACwAIABUAGUAcgBtAGkAbgBhAGwALgBhAHAAcAAsACAAZQB0AGMALgApAC4AKVtTZXBhcmF0 -b3ItMlhEb2NrTWVudV8QEk1lbnUgSXRlbSAoRmVjaGFyKW8QIQBCAHUAdAB0AG8AbgAgAEMAZQBsAGwA -IAAoAEEAdQB0AGUAbgB0AGkAYwBhAHIAIABsAGkAZwBhAOcA9QBlAHMAKVtTZXBhcmF0b3ItM28QKQBC -AHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoAFMAaQBtAHUAbABhAHIAIAByAGEAdABvACAAZABlACAAdABy -AOoAcwAgAGIAbwB0APUAZQBzAClvEHsAUwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABEAGUAcwBhAGMA -dABpAHYAZQAgAGUAcwB0AGEAIABvAHAA5wDjAG8AIABzAGUAIABwAHIAZQB0AGUAbgBkAGUAcgAgAHUA -dABpAGwAaQB6AGEAcgAgAG8AIAB4AGMAbABpAHAAYgBvAGEAcgBkACwAIABvACAAawBsAGkAcABwAGUA -cgAgAG8AdQAgAHEAdQBhAGwAcQB1AGUAcgAgAG8AdQB0AHIAbwAgAGcAZQBzAHQAbwByACAAZABlACAA -YwBsAGkAcABiAG8AYQByAGQAIABYADEAMQAuAClvEFwAQgB1AHQAdABvAG4AIABDAGUAbABsACAAKABB -AGMAdAB1AGEAbABpAHoAYQByACAAYQAgAOEAcgBlAGEAIABkAGUAIABjAG8AbABhAGcAZQBtACAAaQBt -AGUAZABpAGEAdABhAG0AZQBuAHQAZQAgAHEAdQBhAG4AZABvACAAZgBvAHIAIABzAGUAbABlAGMAYwBp -AG8AbgBhAGQAbwAgAHQAZQB4AHQAbwAgAG4AbwB2AG8ALgApbxASAE0AZQBuAHUAIABJAHQAZQBtACAA -KABFAGQAaQDnAOMAbwApbxAxAEMAaABlAGMAawAgAEIAbwB4ACAAKABQAGUAcgBtAGkAdABpAHIAIABs -AGkAZwBhAOcA9QBlAHMAIABkAGUAIABjAGwAaQBlAG4AdABlAHMAIABkAGEAIAByAGUAZABlAClvEJAA -UwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABTAGUAIABhAHMAcwBpAG4AYQBsAGEAcgAgAGUAcwB0AGEA -IABvAHAA5wDjAG8ALAAgAGEAbwAgAGMAbABpAGMAYQByACAAbgB1AG0AYQAgAGoAYQBuAGUAbABhACAA -aQBuAGEAYwB0AGkAdgBhACwAIABvACAAYwBsAGkAcQB1AGUAIABuAOMAbwAgAHMA8wAgAGEAIAB0AHIA -YQB6ACAAcABhAHIAYQAgAGEAIABmAHIAZQBuAHQAZQAgAGMAbwBtAG8AIABhAGMAdABpAHYAYQAgAGEA -IABqAGEAbgBlAGwAYQAgAGMAbwBtAHAAbABlAHQAYQBtAGUAbgB0AGUALgAgAClfEFdTdGF0aWMgVGV4 -dCAoTyBmb2NvIGRhIGphbmVsYSBkbyBYMTEgc2VndWUgbyBjdXJzb3IuIElzdG8gdGVtIGFsZ3VucyBl -ZmVpdG9zIGFkdmVyc29zLilfEFtUZXh0IEZpZWxkIENlbGwgKE8gZm9jbyBkYSBqYW5lbGEgZG8gWDEx -IHNlZ3VlIG8gY3Vyc29yLiBJc3RvIHRlbSBhbGd1bnMgZWZlaXRvcyBhZHZlcnNvcy4pXxAYTWVudSBJ -dGVtIChBanVkYSBkbyBYMTEpXxAfUG9wIFVwIEJ1dHRvbiBDZWxsIChEbyBtb25pdG9yKV5Db250ZW50 -IFZpZXctMW8QEwBNAGUAbgB1ACAAKABBAHAAbABpAGMAYQDnAPUAZQBzACkALQAxXxAWTWVudSBJdGVt -IChEbyBtb25pdG9yKVxFZGl0UHJvZ3JhbXNfECVNZW51IEl0ZW0gKFBhc3NhciB0dWRvIHBhcmEgYSBm -cmVudGUpXxAgUHVzaCBCdXR0b24gKEFkaWNpb25hciBlbGVtZW50bylvEJwAVABlAHgAdAAgAEYAaQBl -AGwAZAAgAEMAZQBsAGwAIAAoAE8AcwAgAHMAaQBuAGEAaQBzACAAcwBvAG4AbwByAG8AcwAgAGQAbwAg -AFgAMQAxACAAdQB0AGkAbABpAHoAYQByAOMAbwAgAG8AIABhAGwAZQByAHQAYQAgAHAAYQBkAHIA4wBv -ACAAZABvACAAcwBpAHMAdABlAG0AYQAsACAAdABhAGwAIABjAG8AbQBvACAAZQBzAHQAaQB2AGUAcgAg -AGQAZQBmAGkAbgBpAGQAbwAgAGUAbQAgAEUAZgBlAGkAdABvAHMAIABzAG8AbgBvAHIAbwBzACwAIABu -AGEAcwAgAHAAcgBlAGYAZQByAOoAbgBjAGkAYQBzACAAZABvACAAcwBpAHMAdABlAG0AYQAuAClcQ29u -dGVudCBWaWV3XxAYTWVudSBJdGVtIChNb3N0cmFyIHR1ZG8pWVNlcGFyYXRvcl8QGU1lbnUgSXRlbSAo -QWNlcmNhIGRvIFgxMSlfEBZUYWJsZSBDb2x1bW4gKENvbWFuZG8pbxBPAEIAdQB0AHQAbwBuACAAQwBl -AGwAbAAgACgATQBvAHMAdAByAGEAcgAgAGEAdQB0AG8AbQBhAHQAaQBjAGEAbQBlAG4AdABlACAAYQAg -AGIAYQByAHIAYQAgAGQAZQAgAG0AZQBuAHUAcwAgAGUAbQAgAG0AbwBkAG8AIABkAGUAIABlAGMAcgDj -ACAAYwBvAG0AcABsAGUAdABvAClvENEAUwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABMAGEAbgDnAGEA -cgAgAG8AIABYADEAMQAgAGMAcgBpAGEAIABjAGgAYQB2AGUAcwAgAFgAYQB1AHQAaABvAHIAaQB0AHkA -IABkAGUAIABjAG8AbgB0AHIAbwBsAG8AIABkAGUAIABhAGMAZQBzAHMAbwAuACAAUwBlACAAbwAgAGUA -bgBkAGUAcgBlAOcAbwAgAEkAUAAgAGQAbwAgAHMAaQBzAHQAZQBtAGEAIABmAG8AcgAgAGEAbAB0AGUA -cgBhAGQAbwAsACAAZQBzAHQAYQBzACAAYwBoAGEAdgBlAHMAIABwAGUAcgBkAGUAbQAgAGEAIAB2AGEA -bABpAGQAYQBkAGUALAAgAHAAbwBkAGUAbgBkAG8ALAAgAGEAcwBzAGkAbQAsACAAIABpAG0AcABvAHMA -cwBpAGIAaQBsAGkAdABhAHIAIABhACAAZQB4AGUAYwB1AOcA4wBvACAAZABhAHMAIABhAHAAbABpAGMA -YQDnAPUAZQBzACAAWAAxADEALgApXxAjQnV0dG9uIENlbGwgKEZvY28gZW0gamFuZWxhcyBub3Zhcylv -EFQAUwB0AGEAdABpAGMAIABUAGUAeAB0ACAAKABFAHMAdABhAHMAIABvAHAA5wD1AGUAcwAgAGUAbgB0 -AHIAYQByAOMAbwAgAGUAbQAgAHYAaQBnAG8AcgAgAGQAYQAgAHAAcgDzAHgAaQBtAGEAIAB2AGUAegAg -AHEAdQBlACAAbwAgAFgAMQAxACAAZgBvAHIAIABlAHgAZQBjAHUAdABhAGQAbwAuAClvECMAVABlAHgA -dAAgAEYAaQBlAGwAZAAgAEMAZQBsAGwAIAAoAEMA6QBsAHUAbABhACAAZABlACAAdABlAHgAdABvACkA -LQAyW1NlcGFyYXRvci03bxARAE0AZQBuAHUAIAAoAEEAcABsAGkAYwBhAOcA9QBlAHMAKV1NZW51IChK -YW5lbGEpXxAbTWVudSBJdGVtIChQZXJzb25hbGl6YXIuLi4pbxBEAEIAdQB0AHQAbwBuACAAQwBlAGwA -bAAgACgAQQBjAHQAdQBhAGwAaQB6AGEAcgAgAGEAIADhAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUA -bQAgAHEAdQBhAG4AZABvACAAbwAgAEMATABJAFAAQgBPAEEAUgBEACAAbQB1AGQAYQByAC4AKW8QDwBN -AGUAbgB1ACAAKABTAGUAcgB2AGkA5wBvAHMAKV8QEk1lbnUgSXRlbSAoSmFuZWxhKW8QNwBCAHUAdAB0 -AG8AbgAgAEMAZQBsAGwAIAAoAFMAZQBnAHUAaQByACAAYQAgAGQAaQBzAHAAbwBzAGkA5wDjAG8AIABk -AG8AIAB0AGUAYwBsAGEAZABvACAAZABvACAAcwBpAHMAdABlAG0AYQApbxAVAFQAYQBiACAAVgBpAGUA -dwAgAEkAdABlAG0AIAAoAFMAYQDtAGQAYQApXxAXVGFiIFZpZXcgSXRlbSAoSmFuZWxhcylvEB8AQwBo -AGUAYwBrACAAQgBvAHgAIAAoAEEAdQB0AGUAbgB0AGkAYwBhAHIAIABsAGkAZwBhAOcA9QBlAHMAKVxG -aWxlJ3MgT3duZXJvECIATQBlAG4AdQAgAEkAdABlAG0AIAAoAEEAbAB0AGUAcgBuAGEAcgAgAGUAYwBy -AOMAIABjAG8AbQBwAGwAZQB0AG8AKV8QEVZlcnRpY2FsIFNjcm9sbGVyXxAVVGFibGUgQ29sdW1uIChB -dGFsaG8pbxCPAFMAdABhAHQAaQBjACAAVABlAHgAdAAgACgAQQBjAHQAaQB2AGEAIABvACAAaQB0AGUA -bQAgAGQAZQAgAG0AZQBuAHUAIAAiAGMAbwBwAGkAYQByACIAIABlACAAcABlAHIAbQBpAHQAZQAgAGEA -IABzAGkAbgBjAHIAbwBuAGkAegBhAOcA4wBvACAAZQBuAHQAcgBlACAAYQAgAOEAcgBlAGEAIABkAGUA -IABjAG8AbABhAGcAZQBtACAAZABvACAATwBTACAAWAAgAGUAIABvAHMAIABiAHUAZgBmAGUAcgBzACAA -QwBMAEkAUABCAE8AQQBSAEQAIABlACAAUABSAEkATQBBAFIAWQAgAGQAbwAgAFgAMQAxAC4AKW8QUQBT -AHQAYQB0AGkAYwAgAFQAZQB4AHQAIAAoAEUAcwB0AGEAIABvAHAA5wDjAG8AIABlAG4AdAByAGEAcgDh -ACAAZQBtACAAdgBpAGcAbwByACAAZABhACAAcAByAPMAeABpAG0AYQAgAHYAZQB6ACAAcQB1AGUAIABv -ACAAWAAxADEAIABmAG8AcgAgAGUAeABlAGMAdQB0AGEAZABvAC4AKV8QEE1lbnUgSXRlbSAoWm9vbSlf -EC5DaGVjayBCb3ggKENsaXF1ZSBhdHJhdmVzc2EgamFuZWxhcyBpbmFjdGl2YXMpXxAfQnV0dG9uIENl -bGwgKEZvY28gc2VndWUgbyByYXRvKV8QFU1lbnUgSXRlbSAoMjU2IGNvcmVzKV8QMEJ1dHRvbiBDZWxs -IChDbGlxdWUgYXRyYXZlc3NhIGphbmVsYXMgaW5hY3RpdmFzKW8QJQBNAGUAbgB1ACAASQB0AGUAbQAg -ACgATwBjAHUAbAB0AGEAcgAgAG8AdQB0AHIAYQBzACAAYQBwAGwAaQBjAGEA5wD1AGUAcwApXxAiVGFi -bGUgVmlldyAoTm9tZSwgQ29tYW5kbywgQXRhbGhvKV8QE1RhYmxlIENvbHVtbiAoTm9tZSlfEBRNZW51 -IEl0ZW0gKE1pbGhhcmVzKW8QawBUAGUAeAB0ACAARgBpAGUAbABkACAAQwBlAGwAbAAgACgAUABlAHIA -bQBpAHQAZQAgAHEAdQBlACAAYQBsAHQAZQByAGEA5wD1AGUAcwAgAGQAbwAgAG0AZQBuAHUAIABkAGUA -IABlAG4AdAByAGEAZABhACAAcwBlACAAcwBvAGIAcgBlAHAAbwBuAGgAYQBtACAAYQBvACAAYQBjAHQA -dQBhAGwAIABtAGEAcABhACAAZABlACAAdABlAGMAbABhAHMAIABkAG8AIABYADEAMQAuAClfECBCdXR0 -b24gQ2VsbCAoQWRpY2lvbmFyIGVsZW1lbnRvKW8QIABCAHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoAE0A -bwBkAG8AIABlAGMAcgDjACAAYwBvAG0AcABsAGUAdABvAClvEH0AVABlAHgAdAAgAEYAaQBlAGwAZAAg -AEMAZQBsAGwAIAAoAEEAbwAgAGMAbABpAGMAYQByACwAIABtAGEAbgB0AGUAbgBoAGEAIABwAHIAZQBt -AGkAZABhAHMAIABhAHMAIAB0AGUAYwBsAGEAcwAgAE8AcADnAOMAbwAgAG8AdQAgAEMAbwBtAGEAbgBk -AG8AIABwAGEAcgBhACAAYQBjAHQAaQB2AGEAcgAgAG8AcwAgAGIAbwB0APUAZQBzACAAYwBlAG4AdABy -AGEAbAAgAG8AdQAgAGQAaQByAGUAaQB0AG8AIABkAG8AIAByAGEAdABvAC4ACgApbxBYAFQAZQB4AHQA -IABGAGkAZQBsAGQAIABDAGUAbABsACAAKABFAHMAdABhAHMAIABvAHAA5wD1AGUAcwAgAGUAbgB0AHIA -YQByAOMAbwAgAGUAbQAgAHYAaQBnAG8AcgAgAGQAYQAgAHAAcgDzAHgAaQBtAGEAIAB2AGUAegAgAHEA -dQBlACAAbwAgAFgAMQAxACAAZgBvAHIAIABlAHgAZQBjAHUAdABhAGQAbwAuAClfEBJNZW51IEl0ZW0g -KENvcGlhcilfEBZQdXNoIEJ1dHRvbiAoRHVwbGljYXIpWk1lbnUgKFgxMSlvEBQATQBlAG4AdQAgAEkA -dABlAG0AIAAoAFMAZQByAHYAaQDnAG8AcwApXxAZTWVudSBJdGVtIChPY3VsdGFyIG8gWDExKW8QFgBN -AGUAbgB1ACAASQB0AGUAbQAgACgAQQBwAGwAaQBjAGEA5wD1AGUAcwApW0FwcGxpY2F0aW9uXxAXVGFi -IFZpZXcgSXRlbSAoRW50cmFkYSlvEH8AVABlAHgAdAAgAEYAaQBlAGwAZAAgAEMAZQBsAGwAIAAoAEQA -ZQBzAGEAYwB0AGkAdgBlACAAZQBzAHQAYQAgAG8AcADnAOMAbwAgAHMAZQAgAHAAcgBlAHQAZQBuAGQA -ZQByACAAdQB0AGkAbABpAHoAYQByACAAbwAgAHgAYwBsAGkAcABiAG8AYQByAGQALAAgAG8AIABrAGwA -aQBwAHAAZQByACAAbwB1ACAAcQB1AGEAbABxAHUAZQByACAAbwB1AHQAcgBvACAAZwBlAHMAdABvAHIA -IABkAGUAIABjAGwAaQBwAGIAbwBhAHIAZAAgAFgAMQAxAC4AKV8QEU1lbnUgSXRlbSAoQWp1ZGEpbxAh -AFQAZQB4AHQAIABGAGkAZQBsAGQAIABDAGUAbABsACAAKABDAOkAbAB1AGwAYQAgAGQAZQAgAHQAZQB4 -AHQAbwApbxDdAFMAdABhAHQAaQBjACAAVABlAHgAdAAgACgAUwBlACAAYQBjAHQAaQB2AGEAcgAgAGUA -cwB0AGEAIABvAHAA5wDjAG8ALAAgAHAAcgBlAGMAaQBzAGEAIABpAGcAdQBhAGwAbQBlAG4AdABlACAA -ZABlACAAYQBjAHQAaQB2AGEAcgAgAGEAIABvAHAA5wDjAG8AICAcAEEAdQB0AGUAbgB0AGkAYwBhAHIA -IABsAGkAZwBhAOcA9QBlAHMgHQAgAHAAYQByAGEAIABnAGEAcgBhAG4AdABpAHIAIABhACAAcwBlAGcA -dQByAGEAbgDnAGEAIABkAG8AIABzAGkAcwB0AGUAbQBhAC4AIABTAGUAIABuAOMAbwAgAGEAYwB0AGkA -dgBhAHIAIABlAHMAdABhACAAbwBwAOcA4wBvACwAIABuAOMAbwAgAHMA4wBvACAAcABlAHIAbQBpAHQA -aQBkAGEAcwAgAGwAaQBnAGEA5wD1AGUAcwAgAGEAIABwAGEAcgB0AGkAcgAgAGQAZQAgAGEAcABsAGkA -YwBhAOcA9QBlAHMAIAByAGUAbQBvAHQAYQBzAC4AKV8QFU1lbnUgSXRlbSAoTWluaW1pemFyKVtTZXBh -cmF0b3ItNF8QFUJ1dHRvbiBDZWxsIChSZW1vdmVyKW8QWwBDAGgAZQBjAGsAIABCAG8AeAAgACgAQQBj -AHQAdQBhAGwAaQB6AGEAcgAgAFAAUgBJAE0AQQBSAFkAIAAoAGMAbABpAHEAdQBlACAAYwBvAG0AIABv -ACAAYgBvAHQA4wBvACAAYwBlAG4AdAByAGEAbAApACAAcQB1AGEAbgBkAG8AIABhACAA4QByAGUAYQAg -AGQAZQAgAGMAbwBsAGEAZwBlAG0AIABtAHUAZABhAHIALgApbxBvAFQAZQB4AHQAIABGAGkAZQBsAGQA -IABDAGUAbABsACAAKABEAGUAdgBpAGQAbwAgAGEAIABsAGkAbQBpAHQAYQDnAPUAZQBzACAAZABvACAA -cAByAG8AdABvAGMAbwBsAG8AIABYADEAMQAsACAAZQBzAHQAYQAgAG8AcADnAOMAbwAgAG4AZQBtACAA -cwBlAG0AcAByAGUAIABmAHUAbgBjAGkAbwBuAGEAcgDhACAAZQBtACAAYQBsAGcAdQBtAGEAcwAgAGEA -cABsAGkAYwBhAOcA9QBlAHMALgApXxAXTWVudSBJdGVtIChTYWlyIGRvIFgxMSlWVmlldy0ybxAjAFQA -ZQB4AHQAIABGAGkAZQBsAGQAIABDAGUAbABsACAAKABDAOkAbAB1AGwAYQAgAGQAZQAgAHQAZQB4AHQA -bwApAC0AMW8QIQBDAGgAZQBjAGsAIABCAG8AeAAgACgAQQBjAHQAaQB2AGEAcgAgAHMAaQBuAGMAcgBv -AG4AaQB6AGEA5wDjAG8AKW8QQgBUAG8AcAAgAFQAYQBiACAAVgBpAGUAdwAgACgARQBuAHQAcgBhAGQA -YQAsACAAUwBhAO0AZABhACwAIADBAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQAsACAASgBhAG4A -ZQBsAGEAcwAsACAAUwBlAGcAdQByAGEAbgDnAGEAKW8QIwBCAHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAo -AEEAYwB0AGkAdgBhAHIAIABzAGkAbgBjAHIAbwBuAGkAegBhAOcA4wBvAClvEIgAUwB0AGEAdABpAGMA -IABUAGUAeAB0ACAAKABBACAAYwByAGkAYQDnAOMAbwAgAGQAZQAgAHUAbQBhACAAbgBvAHYAYQAgAGoA -YQBuAGUAbABhACAAWAAxADEAIABmAGEAegAgAGMAbwBtACAAcQB1AGUAIABYADEAMQAuAGEAcABwACAA -dgBlAG4AaABhACAAcABhAHIAYQAgAHAAcgBpAG0AZQBpAHIAbwAgAHAAbABhAG4AbwAgACgAZQBtACAA -dgBlAHoAIABkAGUAIABGAGkAbgBkAGUAcgAuAGEAcABwACwAIABUAGUAcgBtAGkAbgBhAGwALgBhAHAA -cAAsACAAZQB0AGMALgApAC4AKW8Q1QBUAGUAeAB0ACAARgBpAGUAbABkACAAQwBlAGwAbAAgACgATABh -AG4A5wBhAHIAIABvACAAWAAxADEAIABjAHIAaQBhACAAYwBoAGEAdgBlAHMAIABYAGEAdQB0AGgAbwBy -AGkAdAB5ACAAZABlACAAYwBvAG4AdAByAG8AbABvACAAZABlACAAYQBjAGUAcwBzAG8ALgAgAFMAZQAg -AG8AIABlAG4AZABlAHIAZQDnAG8AIABJAFAAIABkAG8AIABzAGkAcwB0AGUAbQBhACAAZgBvAHIAIABh -AGwAdABlAHIAYQBkAG8ALAAgAGUAcwB0AGEAcwAgAGMAaABhAHYAZQBzACAAcABlAHIAZABlAG0AIABh -ACAAdgBhAGwAaQBkAGEAZABlACwAIABwAG8AZABlAG4AZABvACwAIABhAHMAcwBpAG0ALAAgACAAaQBt -AHAAbwBzAHMAaQBiAGkAbABpAHQAYQByACAAYQAgAGUAeABlAGMAdQDnAOMAbwAgAGQAYQBzACAAYQBw -AGwAaQBjAGEA5wD1AGUAcwAgAFgAMQAxAC4AKW8QXQBCAHUAdAB0AG8AbgAgAEMAZQBsAGwAIAAoAEEA -YwB0AHUAYQBsAGkAegBhAHIAIABQAFIASQBNAEEAUgBZACAAKABjAGwAaQBxAHUAZQAgAGMAbwBtACAA -bwAgAGIAbwB0AOMAbwAgAGMAZQBuAHQAcgBhAGwAKQAgAHEAdQBhAG4AZABvACAAYQAgAOEAcgBlAGEA -IABkAGUAIABjAG8AbABhAGcAZQBtACAAbQB1AGQAYQByAC4AKW8QlABUAGUAeAB0ACAARgBpAGUAbABk -ACAAQwBlAGwAbAAgACgAUwBlACAAYQBzAHMAaQBuAGEAbABhAHIAIABlAHMAdABhACAAbwBwAOcA4wBv -ACwAIABhAG8AIABjAGwAaQBjAGEAcgAgAG4AdQBtAGEAIABqAGEAbgBlAGwAYQAgAGkAbgBhAGMAdABp -AHYAYQAsACAAbwAgAGMAbABpAHEAdQBlACAAbgDjAG8AIABzAPMAIABhACAAdAByAGEAegAgAHAAYQBy -AGEAIABhACAAZgByAGUAbgB0AGUAIABjAG8AbQBvACAAYQBjAHQAaQB2AGEAIABhACAAagBhAG4AZQBs -AGEAIABjAG8AbQBwAGwAZQB0AGEAbQBlAG4AdABlAC4AIAApbxBAAEMAaABlAGMAawAgAEIAbwB4ACAA -KABBAGMAdAB1AGEAbABpAHoAYQByACAAQwBMAEkAUABCAE8AQQBSAEQAIABxAHUAYQBuAGQAbwAgAGEA -IADhAHIAZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQAgAG0AdQBkAGEAcgAuAClvEBgATQBlAG4AdQAg -AEkAdABlAG0AIAAoAEEAcABsAGkAYwBhAOcA9QBlAHMAKQAtADFcTWVudSAoQWp1ZGEpVlZpZXctMV8Q -GVBvcHVwIEJ1dHRvbiAoRG8gbW9uaXRvcilvEDgAQwBoAGUAYwBrACAAQgBvAHgAIAAoAEEAYwB0AGkA -dgBhAHIAIABhAHMAIABlAHEAdQBpAHYAYQBsAOoAbgBjAGkAYQBzACAAZABlACAAdABlAGMAbABhAGQA -bwAgAHAAYQByAGEAIABYADEAMQApbxB5AFMAdABhAHQAaQBjACAAVABlAHgAdAAgACgAQQBvACAAYwBs -AGkAYwBhAHIALAAgAG0AYQBuAHQAZQBuAGgAYQAgAHAAcgBlAG0AaQBkAGEAcwAgAGEAcwAgAHQAZQBj -AGwAYQBzACAATwBwAOcA4wBvACAAbwB1ACAAQwBvAG0AYQBuAGQAbwAgAHAAYQByAGEAIABhAGMAdABp -AHYAYQByACAAbwBzACAAYgBvAHQA9QBlAHMAIABjAGUAbgB0AHIAYQBsACAAbwB1ACAAZABpAHIAZQBp -AHQAbwAgAGQAbwAgAHIAYQB0AG8ALgAKAClvEEIAQgB1AHQAdABvAG4AIABDAGUAbABsACAAKABBAGMA -dAB1AGEAbABpAHoAYQByACAAQwBMAEkAUABCAE8AQQBSAEQAIABxAHUAYQBuAGQAbwAgAGEAIADhAHIA -ZQBhACAAZABlACAAYwBvAGwAYQBnAGUAbQAgAG0AdQBkAGEAcgAuAClvEFUAVABlAHgAdAAgAEYAaQBl -AGwAZAAgAEMAZQBsAGwAIAAoAEUAcwB0AGEAIABvAHAA5wDjAG8AIABlAG4AdAByAGEAcgDhACAAZQBt -ACAAdgBpAGcAbwByACAAZABhACAAcAByAPMAeABpAG0AYQAgAHYAZQB6ACAAcQB1AGUAIABvACAAWAAx -ADEAIABmAG8AcgAgAGUAeABlAGMAdQB0AGEAZABvAC4AKW8QGwBNAGUAbgB1ACAASQB0AGUAbQAgACgA -UAByAGUAZgBlAHIA6gBuAGMAaQBhAHMALgAuAC4AKdIADgBFCOwMK4ECIqDSAA4ARQjsDC6BAiKg0gAO -AEUI7AwxgQIirxDaAJAH3wIDCEYBXgcKAJEFXAKvBM8AUABVAscEPwT0AGcFHwLtA6MHDgBzB2wFMAGX -CK0AmgCOBukEsgavBwgAZQNUCEIBLwgQCD4GBwPTB4YEyAHlAGMJLgQTAH8HEwBSAI0DjwCKAIYFcQB0 -BLgHxwgeAJkAbwCLAoIILQBgBPsAcgJTB2EFcgCIA6oCJQGAAyoFDAbRAHgEGQBiAI8H8ASHAF4AewfI -AtsIQABsAcgAaACMBHgB4gXHBJUC9AfOAHAAeQLpA8oB3wDcAN8AaQBuByQCkgN4CKwAXABtBmUAYQCA -AGsGOwN+BGMIrwapAIQGAQdGAIIBfQJ8AicIKgamAHwC8AbnAV0AWwevAGQDFABRAHUAkwNaCCwHiACJ -B58DwgBPAZoBTQH8AboAfgZ1ATsCaAKZB8kAgQWAAIMAVAM4AtIAVgCrA2sIUwbmAw4G6AAfBWYHCwF6 -BC0AkgBaBXACJgMRAHoAdgbAArYAUwRbCD8CXAY1AF0IKwljAHEGnQPaAGYAfQCHCC4AWQWvAZ0ERgB3 -AFgEmwePB4oBzgBXAF8HNQDSATwAhQanBOEAaoEB1IEBxIBdgQHqgDiBAZSBAdmBAgiAhoEBFIAagFCA -jIDtgQEegK+BASeAloDDgQGcgOyBAaeBASyARYEB+IALgQFtgQG8gQENgQF7gQGQgKuAsIEB6YAugQHV -gQHhgQFSgNCBAa6BARKAWYCjgQIYgOGBARyBAZKAPYEBa4C9gQFlgQFYgQE7gPKBAQ+BAb6BAdqAFoDP -gQFngHyBAfOAlIEBIIDrgG6BAaWBAT+BAVyAxYBigEGApIEBJIEBg4D8gOOAnYEB04EByIEBAoCLgQEK -gQHCgJCBAeiAwoBRgLSBAWmA/YBXgQFEgQEGgQF2gQHAgOCBAQGAlYDMgFaAHIAegLeAyoEBloB/gLiB -AfeAhIDIgQFugJuBAR2AwIEBYYC6gPaBAfuBAYGBAVSBAVCBAZ6BAU2AP4B6gGiBAd2BAXmBAQyAmIEB -ooA3gH6BAbiAqIChgC2A9IECBYCygQHvgQGygQFegQG0gMuACoBGgDWAXIBNgQEXgQF0gDGAdICBgQHG -gQEjgQE3gQFPgEyAqYCNgFWADIC1gQHlgQGNgJ6BAauAAoECEIEBmIA+gOiBAgOAeYEBMIBlgJ+BAQWA -+oEBf4CIgESA9YEB4oBvgQFfgIWBAeyBAiCA54EBiYDSgK2BARGBAVqBAf2Ad4EBPoBIgO+A+4BzgQEI -gQGwgQG2gFOAbYCPgQGagBuAMoEBVoEBfYEBGIC80gAOAEUI7A0OgQIirxDaDQ8NEA0RDRINEw0UDRUN -Fg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMN -NA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVEN -Ug1TDVQNVQ1WDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8N -cA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0N -jg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasN -rA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckN -yg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN -6IECvYECvoECv4ECwIECwYECwoECw4ECxIECxYECxoECx4ECyIECyYECyoECy4ECzIECzYECzoECz4EC -0IEC0YEC0oEC04EC1IEC1YEC1oEC14EC2IEC2YEC2oEC24EC3IEC3YEC3oEC34EC4IEC4YEC4oEC44EC -5IEC5YEC5oEC54EC6IEC6YEC6oEC64EC7IEC7YEC7oEC74EC8IEC8YEC8oEC84EC9IEC9YEC9oEC94EC -+IEC+YEC+oEC+4EC/IEC/YEC/oEC/4EDAIEDAYEDAoEDA4EDBIEDBYEDBoEDB4EDCIEDCYEDCoEDC4ED -DIEDDYEDDoEDD4EDEIEDEYEDEoEDE4EDFIEDFYEDFoEDF4EDGIEDGYEDGoEDG4EDHIEDHYEDHoEDH4ED -IIEDIYEDIoEDI4EDJIEDJYEDJoEDJ4EDKIEDKYEDKoEDK4EDLIEDLYEDLoEDL4EDMIEDMYEDMoEDM4ED -NIEDNYEDNoEDN4EDOIEDOYEDOoEDO4EDPIEDPYEDPoEDP4EDQIEDQYEDQoEDQ4EDRIEDRYEDRoEDR4ED -SIEDSYEDSoEDS4EDTIEDTYEDToEDT4EDUIEDUYEDUoEDU4EDVIEDVYEDVoEDV4EDWIEDWYEDWoEDW4ED -XIEDXYEDXoEDX4EDYIEDYYEDYoEDY4EDZIEDZYEDZoEDZ4EDaIEDaYEDaoEDa4EDbIEDbYEDboEDb4ED -cIEDcYEDcoEDc4EDdIEDdYEDdoEDd4EDeIEDeYEDeoEDe4EDfIEDfYEDfoEDf4EDgIEDgYEDgoEDg4ED -hIEDhYEDhoEDh4EDiIEDiYEDioEDi4EDjIEDjYEDjoEDj4EDkIEDkYEDkoEDk4EDlIEDlYEDlhDNEgAB -iBkRAXwQlRECFBEBgRIABJUuEgADDmcRAh0SAAGIFxIABJWuEgAElbQRARASAASVqxEBchIABJW1EgAE -lQcRAV8SAASVShECHxIABJW3EgAElZkRAScRASURAhkRAhoRAZIRAWESAASVuBIAAYgMEQF0EgAEla8S -AASVqRECIREBpxDLEI8SAAGICxIABJWnEgAElUYRAXcSAAGIHhEBBxEBHREBNhEBkRIAAYgUEgAElWUS -AASVaBCWEgAElboRAUERASkRAhMSAASVuREBeBAdEMQSAASVthEBgxIABJWmEBMRAYkSAAGIEhEBjBEC -IBIABJWHEQIXEQGGEgAElUsRAbMSAASVSBCREQEoEgABiBESAASVMBIAAYfWEQGPEQGLEgABiBsQhhEB -ERECEhEBeRAXEJASAASVaRIABJWjEQE0EQGHEIgRAV4RAj8SAASViBEBXBIAAYgYEQE3EQGuEQFwEQGk -EQF+EgAElYYSAASVohEBjREBphIAAYghEgAElVARAXMQXBIABJVnEgAEla0Q9BECFhEBiBIABJWwEgAB -h8QSAAGIExCpEQIYEQFxEQGsEQFrEgABiL8RAYUSAASVMhIABJWlEQF9EDgRAWwSAASVuxIAAYgQEgAE -lYURAhUSAASVahIABJVTEgAElSsSAAGIFhEBqhC1EQIbEgAElaoQoxIABJVMEQEwEgAElU0RAaURAhwR -AR4RAg8RAYAQBREBPhD1EQIMEDoSAASVUREBexEBLRECPREBihDPEgAElSoRAQ4RAY4RATEQghEBYBEB -dhIABJUxEgAElbwSAAGHxxEBghIABJVHEMwSAASVmxIABJWyEQEqEQF/EQFiEgAElbESAASVZhIAAYgN -EgABiL0RAS8QnRCDEDkRASQRAiIRAQ0T//////////0QzhEBXRIABJWoEQIjEQGEEQGtEQGjEQIlEQI+ -EgABh8USAASVrBIABJWzEQGxEgAElZgSAASVSRIABJVSEgAElaQRAiQQyhIAAYgiEgAElZ8RAg4SAASV -nBEBbRCBEQGv0gAOAEUATQ7EgDqg0gAOAEUI7A7HgQIioNIADgBFCOwOyoECIqDSADoAOw7MDs2iDs0A -P15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYHoAemB/EH+Af/CA0IHwg7CEkIVQhh -CG8IegiICKQIsgjFCNcI8Qj7CQgJCgkNCRAJEwkWCRgJGwkdCSAJIwkmCSkJKwktCTAJMwk4CTsJRAlQ -CVIJVAldCWcJaQl3CYAJiQmUCZsJrQm2Cb8JyAnNCdwJ7wn4CgMKBQoGCg8KFgojCikKMgo0CsEKwwrF -CscKyQrLCs0KzwrRCtMK1QrXCtkK2wrdCt8K4QrjCuUK5wrpCusK7QrvCvEK8wr1CvcK+Qr7Cv0K/wsB -CwMLBQsHCwkLCwsNCw8LEQsTCxULGAsbCx4LIQskCycLKgstCzALMws2CzkLPAs/C0ILRQtIC0sLTgtR -C1QLVwtaC10LYAtjC2YLdwuFC44LlguYC5oLnAueC78LxwvbC+YL9Av+DAsMEgwUDBYMGwwdDCIMJAwm -DCgMOQxADEwMTgxRDFQMVwx+DIAMjQycDJ4MoAyiDKoMvAzFDMoM3QzqDOwM7gzwDQMNDA0RDRwNJQ0n -DSkNNw1KDVMNWg1yDYENkg2UDZYNmA2aDbcNyQ3RDdgN4Q3rDfcN+Q37Df0N/w4CDgMOBQ4aDiUOJw4q -Di0OMA5IDoEOjQ6jDrEOxg7VDugO+g8FDw8PHQ8vDzwPSg9PD1EPUw9VD1cPWQ9bD10PXw9hD2MPZQ9n -D2wP1w/oD+8P+A/6EAMQBRAIEBUQHhAjECoQNxA5EDsQPRBGEE8QWxBdEF8QaBBtEIMQhBCNEJYQoxCw -ELkQxBDNENcQ3hDqEQkREhEZETARQRFDEUURRxFJEVoRXBFeEWARYhFnEXARchF3EXkRexGkEbIRvxHB -EcMRyBHJEcsRzBHOEdAR0hH7EgUSDhIQEhISFBIWEhgSGhIcEh4SMxJCEk8SURJTElUSXhJgEmUSZxJp -EpISlBKWEpcSmRKaEpwSnhKgEsESwxLFEscSyRLLEs0S6BLxEvgTBxMPExgTHRMmEzcTORM7Ez0TPxNc -E14TYBNiE2QTZRNnE3wTfhOBE4QThxOgE9kT2xPdE98T4RPjE+UT5xPpFA4UHRQuFDAUMhQ0FDYUUxRV -FFcUWRRbFF4UXxRhFHYUghSEFIcUihSNFKcU3BTeFOAU4hTkFOYU6BTqFOwU8RT6FQIVCxUNFSIVMxU1 -FTcVORU7FVwVXhVgFWIVZBVmFWgVhBWWFacVqRWrFa0VrxXMFc4V0BXSFdQV1RXXFe8WKBYqFiwWLhYw -FjIWNBY2FjgW2RbqFuwW7hbwFvIXDxcRFxMXFRcXFxgXGhcvFzEXNBc3FzoXUxeiF78X0RfjF/gYBhgP -GBAYEhgUGBYYGBgaGBwYHhggGCIYIxgkGCcYKhgsGDEYQhhEGEYYSBhRGFMYhBiNGJMYmxidGJ8YoRij -GKUYpxipGKsYtBjBGMMYxRjHGNIY5hjvGPEY/BkFGQcZEBkSGRQZFhkYGUUZRxlJGUsZTRlPGVEZUxlV -GVcZYRmOGZAZkhmUGZYZmBmaGZwZnhmgGakZ1hnYGdoZ3BneGeAZ4hnkGeYZ6Bn3GgAaDRohGjAaORpG -GlQaZRpnGmkaaxptGo4akBqSGpcamRqbGp0anxqwGrIatRq4Grsa6hrsGwEbEhsUGxYbGBsaGzcbORs7 -Gz0bPxtBG0MbURtxG4IbhBuGG4gbihujG7Qbthu4G7obvBvZG9sb3RvfG+Eb4hvkG/0cNhw4HDocPBw+ -HEAcQhxEHEYctRzGHMgcyhzMHM4c6xztHO8c8RzzHPQc9h0PHUgdSh1MHU4dUB1SHVQdVh1YHXAdhh2X -HZkdmx2dHZ8dsB2yHbQdth24HdUd1x3ZHdsd3R3eHeAd+R4yHjQeNh44HjoePB4+HkAeQh5pHn0ejh6Q -HpIelB6WHr8ewR7DHsQexh7HHskeyx7NHtoe3B7eHuEe8B8BHwMfBR8HHwkfKh8sHy4fMB8yHzQfNh9A -H0IfVR9mH2gfah9sH24fix+NH48fkR+TH5Qflh+vH7IftR+4H7sfvh/WIA8gESATIBUgFyAZIBsgHSAf -IHogjSCeIKAgoiCkIKYguSDKIMwgziDQINIg7yDxIPMg9SD3IPgg+iEPIREhFCEXIRohMyFsIW4hcCFy -IXQhdiF4IXohfCGlIbYhuCG6IbwhviHfIeEh4yHlIech6SHrIiAiIiI7IkwiTiJQIlIiVCJ9In8igSKC -IoQihSKHIokiiyKeIq8isSKzIrUityLUIuUi5yLpIusi7SMKIxsjHSMfIyEjIyNAI0IjRCNGI0gjSSNL -I2MjnCOeI6AjoiOkI6YjqCOqI6wkSyRcJF4kYCRiJGQkhSSHJIkkiySNJI8kkSSjJLQktiS4JLokvCTZ -JNsk3STfJOEk4iTkJPwlNSU3JTklOyU9JT8lQSVDJUUlbiV/JYElgyWFJYclrCWuJbAlsiW0JbYluCW6 -Jccl4CXxJfMl9SX3JfkmFCYlJicmKSYrJi0mSiZMJk4mUCZSJlMmVSZuJqcmqSarJq0mryaxJrMmtSa3 -Jssm4SbyJvQm9ib4JvonGScqJywnLicwJzInUydVJ1cnWSdbJ10nXydsJ24ncSd0J4EniyecJ54noCei -J6QnwSfDJ8UnxyfJJ8onzCflKAYoGigmKCgoKigsKC4oMCg1KDcpFCklKScpMCkyKTUpSilSKV8payl5 -KXspfSl/KYEpgymKKZcppCmsKa4puinDKcgp3SnfKeEp4ynlKfgqBSoHKgoqEyocKi4qNypCKk4qWSpq -KmwqbipwKnIqjyqRKpMqlSqXKpgqmiq0Kukq8ir0KvYq+Cr6Kvwq/isAKxUrHisgKzIrQytFK0crSStL -K2wrbitwK3IrdCt2K3grfSuKK5srnSufK6Eroyu0K7YruCu6K7wr2SvbK90r3yvhK+Ir5Cv8LB0sHywh -LCMsJSwnLCks5izxLQItBC0GLQgtCi0iLS8tMS0zLTUtVi1YLVotXC1eLWAtYi1vLXEtdC13LX4tgC2G -LZctmS2bLZ0tny2wLbIttC22LbgtyS3LLc0tzy3SLfMt9S33Lfkt+y39Lf8uCy4NLhguKS4rLi0uMC4z -LlguWi5dLl8uYS5jLmUucy55LooujC6OLpEuky6wLrIutC63Lrouuy69LtYvDy8RLxMvFS8XLxkvHC8e -LyEvTi9fL2EvYy9lL2gvdy+IL4ovjC+PL5Evri+wL7IvtS+4L7kvuy/TMAwwDjAQMBIwFDAWMBkwGzAe -MKMwtDC2MLkwuzC+MNsw3TDfMOIw5TDmMOgxATE6MTwxPjFAMUIxRDFHMUkxTDGZMaQxtTG3MbkxvDG/ -MeAx4jHlMegx6jHsMe4yDzIRMh0yLjIwMjIyNTI3MkgySjJNMk8yUjJvMnEyczJ2MnkyejJ8MpUyzjLQ -MtIy1DLWMtgy2zLdMuAzNTNBM1IzVDNXM1kzXDOrM80z1zPkM/k0BjQgNDw0VzRjNII0kTSdNKA0ozSo -NKs0rjSvNLI0uzTENMc0yDTLNM400TTaNQM1DTUXNSE1LzUyNTU1ODU6NT01QDVDNUY1STVMNVc1cDV8 -NX81gjWFNYg1izW0Nbc1ujW9NcA1wzXGNck1zDXWNd816DX8NhE2FDYXNho2HTZWNmI2azZ+Nos2lzal -Nqc2qjatNrA2sja1Nrg2uzbONtE20zbWNtk23DbzNvw3BTcTNxw3HjclNyg3KzcuN1c3ZjdzN3s3hjeV -N6A3qze4N7k3vDe/N8g3yzfUN9033jfhN/44AzgGOAk4DDgOOBE4FjgjOCU4MThGOEg4SjhNOE84YThq -OHU4iTiuOMQ4yTjLOM440TjTONY42DjaOPs5CDkKOQ05FjkbOSk5UjlTOVY5WTliOWU5bjlvOXI5jzmS -OZU5mDmaOZ05pTnKOcw5zznSOdQ51znZOds6BDoFOgg6CzoUOhc6IDohOiQ6QTpEOkc6SjpMOk86Vjpr -Om06cDpzOnU6gTqqOr46wDrDOsY6yTrMOs06zzrROuI65DrtOu87BDsGOwg7CzsNOyY7Ozs9O0A7QztF -O087XDteO2M7bDt3O4I7kzuVO5c7mTucO6I7szu1O7c7uju8O9k72zvdO+A74zvkO+Y8HzwhPCM8JTwn -PCk8LDwuPDE8ajx7PH08fzyBPIQ8jjyfPKE8pDymPKk8uzzMPM480DzSPNU85Dz1PPc8+Tz7PP49Bz0Y -PRo9HD0ePSE9LT0+PUA9Qj1FPUg9ZT1nPWk9bD1vPXA9cj2MPcE9wz3FPcc9yj3NPc890j3bPeQ95j3+ -Pg8+ET4UPhY+GT4yPkM+RT5HPkk+TD5YPmk+az5uPnA+cz6APpE+kz6VPpc+mj6oPrk+uz6+PsA+wz74 -PwU/Ej8oPzY/QD9OP2c/dD+GP5o/pD+wP7M/tj+5P7w/vz/EP8c/yj/NP9A/0z/uQBdAH0AoQCpAL0A6 -QE9AUUBUQFdAWkBjQGVAaEBrQJxAq0DEQNxA30DiQOVA6EDqQO1A7kDxQPJA9UD+QQBBA0EFQQ5BEEEd -QSBBI0EmQShBK0EuQUtBTUFPQVJBVUFWQVhBcEGVQZdBmUGcQZ5BoUGjQaVCrkLLQs1Cz0LSQtVC1kLY -QvFDFkMYQxpDHUMfQyJDJEMmQ/9EHEQeRCBEI0QmRCdEKURCRGdEaURrRG5EcERzRHVEd0UsRUVFTkVV -RW5Fd0V5RYRFh0WKRY1FkEWTRaxFuUXDRcZFyUXLRc5F0EXTRdxF3kXgRehF8UX2RgRGHUYgRiNGJUYo -RipGLUY2RjhGOkZDRkVGVkZYRltGXUZgRmNGZUZoRmtGiEaKRoxGj0aSRpNGlUatRtJG1EbWRtlG20be -RuBG4kf5SBZIGEgaSB1IIEghSCNIO0hgSGJIZEhnSGlIbEhuSHBIeEiVSJdImUicSJ9IoEiiSLtI4Eji -SORI50jpSOxI7kjwSXlJlkmYSZpJnUmgSaFJo0m8SeFJ40nlSehJ6kntSe9J8UrkSu9LCEsLSw5LEEsT -SxVLGEshSyNLLEsuSz9LQktFS0dLSUtLS01LT0tRS25LcEtyS3VLeEt5S3tLlEu1S7dLuUu8S75LwUvD -TMhM6U0CTQVNCE0KTQ1ND00STRtNHU0mTShNNU03TTpNPE0/TUFNRE1hTWNNZU1oTWtNbE1uTYdNqE2q -TaxNr02xTbRNtk69TtpO3E7eTuFO5E7lTudPAE8hTyNPJU8oTypPLU8vT3tPmE+aT5xPn0+iT6NPpU+9 -T95P4E/iT+VP50/qT+xQ41DrUQBRA1EFUQhRClENURZRGFEjUSVRKFErUS5RMVFOUVBRUlFVUVhRWVFb -UXRRmVGbUZ1RoFGiUaVRp1GpUzJTT1NRU1NTVlNZU1pTXFN0U5lTm1OdU6BTolOlU6dTqVVKVWdVaVVr -VW5VcVVyVXRVjVWyVbRVtlW5VbtVvlXAVcJWUVZkVm1WdlaBVplWpFauVrdWvFbPVttW7FbuVvBW81b1 -VwZXCFcKVw1XEFcxVzNXNlc5VztXPVc/V0ZXSFdWV2dXaVdsV25XcVeCV4RXh1eKV41XllefV6FXrFev -V7JXtVe4V7tX5FfmV+hX61ftV+9X8Vf0V/dX+1gEWAZYH1ghWCRYJ1gqWC1YL1gyWDVYN1g5WDxYPlhn -WGlYa1hsWG5Yb1hxWHNYdVieWKBYo1imWKhYqlisWK5YsVjCWNNY1VjYWNtY3ljnWOlY6lj8WSVZJ1kp -WSpZLFktWS9ZMVkzWVxZXllgWWFZY1lkWWZZaFlqWZNZlVmXWZhZmlmbWZ1Zn1mhWa5Z11nZWdtZ3Vnf -WeFZ41nmWelZ8ln0WflZ+1n9WiZaKFoqWi1aL1oxWjNaNlo5WkZaT1pRWlRaVlp/WoFag1qGWohailqM -Wo9aklqZWqJapFq3WrpavFq+WsFaxFrGWslay1rNWvZa+Fr6Wvta/Vr+WwBbAlsEWyVbJ1sqWy9bMls0 -WzZbOFtMW05bd1t5W3tbfFt+W39bgVuDW4VblFu9W79bwVvEW8ZbyFvKW81b0FvWW99b4VvkW+Zb8lv3 -XAhcClwMXA5cEVwgXDFcM1w1XDhcO1xIXFFcVF1/XYJdhF2HXYpdjF2OXZFdlF2WXZldnF2eXaFdpF2m -Xahdq12tXbBds121Xbhdu12+XcBdwl3EXcZdyF3LXc5d0V3UXddd2l3cXd5d4V3kXedd6V3sXe9d8V30 -XfZd+V37Xf5eAF4DXgZeCF4KXg1eEF4TXhZeGV4bXh1eH14hXiNeJl4oXipeLV4wXjJeNF42XjlePF4/ -XkFeRF5HXkpeTF5OXlBeUl5UXlZeWV5cXl9eYl5kXmdeal5sXm9ecl51XndeeV57Xn1ef16BXoReh16J -Xotejl6QXpNelV6YXppenV6fXqJepV6oXqterl6wXrNetl65Xrtevl7AXsJexF7GXshey17OXtFe1F7X -Xtpe3F7fXuJe5F7mXuhe6l7sXu9e8V7zXvZfG18lXyhfK18uXzFfNF83X0BfWF9lX25feV+EX41fj1+a -X51foF+jX6ZfqV+yX7Rft1+6X9Jf21/kX+9gEGATYBZgGWAcYB9gImArYERgTWBPYFJgVWBrYIRgjWCW -YKNgrGCuYLdgumC8YL9gwWDMYQFhA2EGYQlhDGEPYRJhFWEYYRphHWEgYTthaGFxYXNhfGGFYYdhimGT -YZhhoWGkYs9i0mLUYtZi2WLbYt1i32LhYuNi5WLoYupi7WLwYvJi9WL3Yvli+2L9Yv9jAWMEYwdjCmMN -Yw9jEWMTYxVjGGMbYx1jH2MhYyNjJWMoYypjLWMvYzFjNGM2YzljO2M9Yz9jQWNDY0VjSGNKY0xjT2NR -Y1NjVWNYY1pjXGNfY2FjY2NlY2djaWNsY29jcWNzY3VjeGN7Y31jf2OBY4RjhmOIY4pjjWOQY5JjlGOX -Y5pjnWOgY6JjpWOoY6pjrGOuY7Fjs2O1Y7djuWO7Y71jwGPDY8VjyGPLY81j0GPSY9Vj12PZY9xj3mPg -Y+Nj5WPoY+pj7WPwY/Jj9GP2Y/hj+mP8Y/5kAWQEZAdkCmQMZA9kEWQTZBZkGWQbZB5kIGQjZCVkJ2Qp -ZCtkLWQ2ZDllZmVpZWtlbmVxZXNldWV4ZXplfWWAZYNlhWWIZYtljWWPZZJllGWWZZllnGWfZaJlpWWn -Zallq2WtZbBlsmW1ZbdlumW9ZcBlwmXFZchly2XOZdBl02XWZdhl2mXdZeBl4mXlZedl6mXtZe9l8WX0 -Zfdl+mX9ZgBmAmYEZgZmCGYKZg1mD2YRZhRmF2YZZhtmHWYgZiNmJmYoZitmLmYxZjNmNWY3ZjlmO2Y9 -ZkBmQ2ZGZklmTGZOZlBmUmZVZlhmW2ZeZmBmYmZkZmZmaGZqZm1mcGZyZnRmd2Z5ZntmfmaBZoNmhmaI -ZotmjmaRZpRml2aZZpxmn2aiZqRmp2apZqtmrWavZrFmtGa3ZrpmvWbAZsNmxWbIZspmzGbOZtBm0mbU -Ztdm2WbcZt9m6GbraBhoG2geaCFoJGgnaCpoLWgwaDNoNmg5aDxoP2hCaEVoSGhLaE5oUWhUaFdoWmhd -aGBoY2hmaGlobGhvaHJodWh4aHtofmiBaIRoh2iKaI1okGiTaJZomWicaJ9oomilaKhoq2iuaLFotGi3 -aLpovWjAaMNoxmjJaMxoz2jSaNVo2GjbaN5o4WjkaOdo6mjtaPBo82j2aPlo/Gj/aQJpBWkHaQppDWkQ -aRNpFmkZaRxpH2kiaSVpKGkraS5pMWk0aTdpOmk9aUBpQ2lGaUlpTGlPaVJpVWlYaVtpXmlhaWRpZ2lq -aW1pcGlzaXZpeWl8aX9pgmmFaYhpi2mOaZFplGmXaZppnWmgaaNppmmpaaxpr2myabVpuGm7ab5pwWnE -acdpymnNadBp02nWa5trr2u7a9dr+2wwbDxscWyJbJRsqmzpbVJta22ibb1tyW3Vbq5vf2/scABwUXFo -cW9xdnGWch1zLHNVc2dzf3OLdLB00HUDdix2YXb+eCt4onnVehZ6InrZe/R8AHwJfB58Y3xvfMR9vX54 -fp9/BIAngIGA34D6gRyBK4FUgW2BeoGigcWDAIMNgyiDMoNOg2eECIWthdOGfobHhtOG+IcGhySHr4fQ -h+WIVoiDiJ2I3ojriTKJRolein+LJIs3i2iLiouii9WMIoxHjF2MdI1NjXCNs46wj2OPeI+Rj5yPx4/j -kBKQHpA4kTmRTZGSk0+TZ5Nzk4uURJUllT+VRpWPldSWW5akl7eZZJohm0ybz5wCnA+cFpwynKWdmp4h -ns6fB58QnxOfFJ8dnyCfIZ8qny2g5KDnoOqg7KDvoPGg9KD3oPqg/KD/oQGhA6EFoQehCqEMoQ+hEaET -oRahGKEboR6hIKEjoSWhKKEroS6hMaE0oTahOKE7oT2hQKFDoUahSKFLoU6hUKFSoVWhV6FaoV2hX6Fi -oWShZ6FqoW2hb6FyoXWheKF6oXyhf6GBoYShhqGJoYuhjaGQoZOhlqGYoZqhnKGeoaGhpKGmoaihqqGt -obChs6G1obihu6G9ocChwqHEocahyaHLoc2h0KHTodah2aHbod6h4KHioeSh5qHooeqh7KHvofGh86H2 -ofih+qH9of+iAqIEogeiCaILog6iEaIUoheiGqIdoh+iIaIjoiaiKaIsoi6iMaIzojWiOKI6ojyiPqJA -okOiRaJIokuiTqJRolOiVaJXolmiW6JdomCiY6JlomeiaaJsom+icqJ1oneieaJ7on2if6KBooSih6KJ -ooyijqKRopSilqKYopuinaKgoqKipKKnoqmirKKuorCisqK1oreiuqK8or+iwqLEoseiyaLLos6i0aLU -otai2aLbot2i36LhouSi56Lqouyi7qLwovOi9aL3ovqi/aMAowKjC6MOpMWkyKTLpM6k0aTUpNek2qTd -pOCk46TmpOmk7KTvpPKk9aT4pPuk/qUBpQSlB6UKpQ2lEKUTpRalGaUcpR+lIqUlpSilK6UupTGlNKU3 -pTqlPaVApUOlRqVJpUylT6VSpVWlWKVbpV6lYaVkpWelaqVtpXClc6V2pXmlfKV/pYKlhaWIpYuljqWR -pZSll6WapZ2loKWjpaalqaWspa+lsqW1pbilu6W+pcGlxKXHpcqlzaXQpdOl1qXZpdyl36XipeWl6KXr -pe6l8aX0pfel+qX9pgCmA6YGpgmmDKYPphKmFaYYphumHqYhpiSmJ6Yqpi2mMKYzpjamOaY8pj+mQqZF -pkimS6ZOplGmVKZXplqmXaZgpmOmZqZppmymb6ZypnWmeKZ7pn6mgaaEpoemiqaNppCmk6aWppmmnKaf -pqKmpaaopqumrqaxprSmt6a6pr2mwKbDpsamyabMps+m0qbVptim26bepuGm5Kbnpuqm7abwpvOm9qb5 -pvym/6cCpwWnCKcLpw6nEacUpxenGqcdpyCnI6cmpymnLKcvpzKnNac4pzunPqdBp0SnR6dKp02nUKdT -p1WnWqddp1+nYqdlp2qnb6dyp3enfKeBp4SniaeMp5GnlqeZp56noaemp6unrqexp7Snt6e6p72nwqfH -p8qnz6fUp9en2qfcp96n46fop+2n8Kf1p/in+6f+qAGoBqgLqBCoEqgXqBqoHaggqCWoKKgqqCyoMag0 -qDmoO6g+qEOoRqhJqE6oUahUqFmoXKhhqGOoZqhrqHCodah4qHuogKiCqIWoiKiLqI2oj6iUqJmonKif -qKGopKinqKyor6i0qLeouqi9qMCow6jIqM2o0KjTqNio3ajgqOKo56jsqO6o8aj0qPmo/qkDqQWpCKkL -qQ6pEakWqRmpHqkjqSapKKkrqTCpNak6qT2pQqlHqUypUalUqVapWaleqWCpZaloqW2pcKlzqXapeal8 -qX6pgamDqYapiKmNqZCpk6mWqZmpm6mgqaOppqmpqauprqmxqbapu6nAqcOpyKnKqc+p1KnXqdqp3ani -qeep7KnxqfSp9qn4qfqp/aoAqgOqDKoOqhGqFqoZqhyqH6oiqiWqKKotqjKqN6o6qj+qRKpJqk6qUapT -qliqXapgqmWqaKpqqm2qdqp4qnmqgqqFqoaqj6qSqpOqnKqhAAAAAAAAAgIAAAAAAAAOzgAAAAAAAAAA -AAAAAAAAqrA - diff --git a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib index 9aabfb63d..74a1efe39 100644 Binary files a/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist b/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist index e086cf7a0..2c58741c7 100644 --- a/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist b/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist index 5c8d62349..0fbea3558 100644 --- a/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib index 759ead2c9..808d57c7e 100644 --- a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib @@ -1,11 +1,15 @@ - + 1050 - 9C31 - 677 - 949.26 - 352.00 + 10A314 + 718 + 1013 + 415.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 718 + YES @@ -15,7 +19,7 @@ YES - + YES @@ -68,7 +72,7 @@ - SW5zdMOkbGxuaW5nYXIuLi4 + Inställningar... , 1048576 2147483647 @@ -88,7 +92,7 @@ - VGrDpG5zdGVyA + Tjänster 1048576 2147483647 @@ -96,7 +100,7 @@ submenuAction: - VGrDpG5zdGVyA + Tjänster YES @@ -116,7 +120,7 @@ - VsOkeGxhIGhlbHNrw6RybXNsw6RnZQ + Växla helskärmsläge a 1572864 2147483647 @@ -136,7 +140,7 @@ - R8O2bSBYMTE + Göm X11 h 1048576 2147483647 @@ -146,7 +150,7 @@ - R8O2bSDDtnZyaWdhA + Göm övriga h 1572864 2147483647 @@ -250,7 +254,7 @@ - RsO2bnN0ZXI + Fönster 1048576 2147483647 @@ -258,12 +262,12 @@ submenuAction: - RsO2bnN0ZXI + Fönster YES - U3TDpG5nA + Stäng w 1048576 2147483647 @@ -301,7 +305,7 @@ - QmzDpGRkcmEgZ2Vub20gZsO2bnN0ZXI + Bläddra genom fönster ` 1048840 2147483647 @@ -310,7 +314,7 @@ - QmzDpGRkcmEgZ2Vub20gZsO2bnN0ZXIgYmFrbMOkbmdlcw + Bläddra genom fönster baklänges ~ 1179914 2147483647 @@ -330,7 +334,7 @@ - TMOkZ2cgYWxsYSDDtnZlcnN0A + Lägg alla överst 1048576 2147483647 @@ -354,7 +358,7 @@ - SGrDpGxwA + Hjälp 1048576 2147483647 @@ -362,12 +366,12 @@ submenuAction: - SGrDpGxwA + Hjälp YES - WDExIEhqw6RscA + X11 Hjälp 1048576 2147483647 @@ -388,12 +392,12 @@ 2 {{288, 302}, {484, 308}} 1350041600 - WDExLWluc3TDpGxsbmluZ2FyA + X11-inställningar NSPanel View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -428,7 +432,7 @@ Emulera treknappsmus LucidaGrande - 1.300000e+01 + 13 1044 @@ -456,12 +460,10 @@ 67239424 4194304 - T20gZGUgw6RyIGFrdGl2ZXJhZGUga2FuIHRhbmdlbnRlciBzb20gbW90c3ZhcmFyIG1lbnlyYWRlbiBo -YW1uYSBpIGtvbmZsaWt0IG1lZCBYMTEtcHJvZ3JhbSBzb20gYW52w6RuZGVyIG1ldGFtb2RpZmllcmFy -ZW4uA + Om de är aktiverade kan tangenter som motsvarar menyraden hamna i konflikt med X11-program som använder metamodifieraren. LucidaGrande - 1.100000e+01 + 11 3100 @@ -470,9 +472,9 @@ ZW4uA 6 System controlColor - + 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA @@ -535,8 +537,7 @@ ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo 67239424 4194304 - VGlsbMOldGVyIGF0dCDDpG5kcmluZ2FyIGkgaW5kYXRhbWVueW4gc2tyaXZlciDDtnZlciBkZSBiZWZp -bnRsaWdhIFgxMS10YW5nZW50a29wcGxpbmdhcm5hLg + Tillåter att ändringar i indatamenyn skriver över de befintliga X11-tangentkopplingarna. @@ -553,7 +554,7 @@ bnRsaWdhIFgxMS10YW5nZW50a29wcGxpbmdhcm5hLg 67239424 0 - RsO2bGogZGF0b3JucyB0YW5nZW50Ym9yZHNsYXlvdXQ + Följ datorns tangentbordslayout 1211912703 @@ -592,7 +593,7 @@ bnRsaWdhIFgxMS10YW5nZW50a29wcGxpbmdhcm5hLg 67239424 0 - QW52w6RuZCBzeXN0ZW1ldHMgdmFybmluZ3NlZmZla3Q + Använd systemets varningseffekt 1211912703 @@ -614,9 +615,7 @@ bnRsaWdhIFgxMS10YW5nZW50a29wcGxpbmdhcm5hLg 67239424 4194304 - WDExLWxqdWRldCBibGlyIGRldCB2YW5saWdhIHN5c3RlbXZhcm5pbmdzbGp1ZGV0IHNvbSB2YWx0cyBw -w6UgaW5zdMOkbGxuaW5nc3BhbmVsZW4gTGp1ZGVmZmVrdGVyIGkgU3lzdGVtaW5zdMOkbGxuaW5nYXIu -A + X11-ljudet blir det vanliga systemvarningsljudet som valts på inställningspanelen Ljudeffekter i Systeminställningar. @@ -639,7 +638,7 @@ A 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -650,7 +649,7 @@ A 75 - RnLDpW4gYmlsZHNrw6RybQ + Från bildskärm 1048576 2147483647 @@ -671,7 +670,7 @@ A - MjU2IGbDpHJnZXI + 256 färger 1048576 2147483647 @@ -706,6 +705,7 @@ A + 3 YES @@ -739,7 +739,7 @@ A 67239424 4194304 - QWx0ZXJuYXRpdmV0IGLDtnJqYXIgZ8OkbGxhIG7DpHN0YSBnw6VuZyBYMTEgw7ZwcG5hcy4 + Alternativet börjar gälla nästa gång X11 öppnas. @@ -756,7 +756,7 @@ A 67239424 0 - SGVsc2vDpHJtc2zDpGdlA + Helskärmsläge 1211912703 @@ -778,7 +778,7 @@ A 67239424 0 - VmlzYSBtZW55ZsOkbHRldCBhdXRvbWF0aXNrdCBpIGhlbHNrw6RybXNsw6RnZQ + Visa menyfältet automatiskt i helskärmsläge 1211912703 @@ -800,8 +800,7 @@ A 67239424 4194304 - QWt0aXZlcmFyIFgxMTpzIHJvdGbDtm5zdGVyLiBUcnljayBuZWQga29tbWFuZG8tYWx0LUEgZsO2ciBh -dHQgdsOkeGxhIHRpbGwgb2NoIGZyw6VuIGhlbHNrw6RybXNsw6RnZS4 + Aktiverar X11:s rotfönster. Tryck ned kommando-alt-A för att växla till och från helskärmsläge. @@ -856,9 +855,7 @@ dHQgdsOkeGxhIHRpbGwgb2NoIGZyw6VuIGhlbHNrw6RybXNsw6RnZS4 67239424 4194304 - QWt0aXZlcmFyIG1lbnlhbHRlcm5hdGl2ZXQg4oCdS29waWVyYeKAnSBvY2ggZ8O2ciBkZXQgbcO2amxp -Z3QgYXR0IHN5bmtyb25pc2VyYSBtZWxsYW4gdXJrbGlwcCBpIE9TWCBvY2ggQ0xJUEJPQVJELSBvY2gg -UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 + Aktiverar menyalternativet ”Kopiera” och gör det möjligt att synkronisera mellan urklipp i OSX och CLIPBOARD- och PRIMARY-buffertarna i X11. @@ -874,7 +871,7 @@ UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 67239424 0 - VXBwZGF0ZXJhIENMSVBCT0FSRCBuw6RyIHVya2xpcHAgw6RuZHJhcy4 + Uppdatera CLIPBOARD när urklipp ändras. 1211912703 @@ -896,7 +893,7 @@ UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 67239424 0 - VXBwZGF0ZXJhIFBSSU1BUlkgKG1lbGxhbmtsaWNrKSBuw6RyIHVya2xpcHAgw6RuZHJhcy4 + Uppdatera PRIMARY (mellanklick) när urklipp ändras. 1211912703 @@ -918,7 +915,7 @@ UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 67239424 0 - VXBwZGF0ZXJhIHVya2xpcHAgZGlyZWt0IG7DpHIgbnkgdGV4dCBtYXJrZXJhcy4 + Uppdatera urklipp direkt när ny text markeras. 1211912703 @@ -940,7 +937,7 @@ UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 67239424 0 - VXBwZGF0ZXJhIHVya2xpcHAgbsOkciBDTElQQk9BUkQgw6RuZHJhcy4 + Uppdatera urklipp när CLIPBOARD ändras. 1211912703 @@ -962,8 +959,7 @@ UFJJTUFSWS1idWZmZXJ0YXJuYSBpIFgxMS4 67239424 4194304 - QXZha3RpdmVyYSBkZXQgaMOkciBhbHRlcm5hdGl2ZXQgb20gZHUgdmlsbCBhbnbDpG5kYSB4Y2xpcGJv -YXJkLCBrbGlwcGVyLCBlbGxlciBuw6Vnb24gYW5uYW4gdXJrbGlwcHNoYW50ZXJhcmUgaSBYMTEuA + Avaktivera det här alternativet om du vill använda xclipboard, klipper, eller någon annan urklippshanterare i X11. @@ -979,8 +975,7 @@ YXJkLCBrbGlwcGVyLCBlbGxlciBuw6Vnb24gYW5uYW4gdXJrbGlwcHNoYW50ZXJhcmUgaSBYMTEuA 67239424 4194304 - UMOlIGdydW5kIGF2IGJlZ3LDpG5zbmluZ2FyIGkgWDExLXByb3Rva29sbGV0IGthbnNrZSBkZXQgaMOk -ciBhbHRlcm5hdGl2ZXQgaW50ZSBmdW5nZXJhciBpIHZpc3NhIHByb2dyYW0uA + På grund av begränsningar i X11-protokollet kanske det här alternativet inte fungerar i vissa program. @@ -1012,7 +1007,7 @@ ciBhbHRlcm5hdGl2ZXQgaW50ZSBmdW5nZXJhciBpIHZpc3NhIHByb2dyYW0uA 67239424 0 - S2xpY2thIGlnZW5vbSBpbmFrdGl2YSBmw7Zuc3Rlcg + Klicka igenom inaktiva fönster 1211912703 @@ -1028,7 +1023,7 @@ ciBhbHRlcm5hdGl2ZXQgaW50ZSBmdW5nZXJhciBpIHZpc3NhIHByb2dyYW0uA 256 - {{23, 175}, {385, 31}} + {{32, 175}, {385, 31}} YES @@ -1053,7 +1048,7 @@ cmthIGlubmVow6VsbGV0Lgo 67239424 0 - Rm9rdXMgZsO2bGplciBtdXM + Fokus följer mus 1211912703 @@ -1069,14 +1064,13 @@ cmthIGlubmVow6VsbGV0Lgo 256 - {{23, 128}, {385, 17}} + {{32, 128}, {385, 17}} YES 67239424 4194304 - RsO2bnN0ZXJmb2t1cyBpIFgxMSBmw7ZsamVyIHBla2FyZW4uIERldCBow6RyIGhhciBuw6VncmEgYmll -ZmZla3Rlci4 + Fönsterfokus i X11 följer pekaren. Det här har några bieffekter. @@ -1093,7 +1087,7 @@ ZmZla3Rlci4 67239424 0 - Rm9rdXMgcMOlIG55YSBmw7Zuc3Rlcg + Fokus på nya fönster 1211912703 @@ -1109,15 +1103,13 @@ ZmZla3Rlci4 256 - {{23, 73}, {385, 28}} + {{32, 73}, {385, 28}} YES 67239424 4194304 - TWVkIGRldCBow6RyIGFsdGVybmF0aXZldCBrb21tZXIgc2thcGFuZGV0IGF2IGV0dCBueXR0IFgxMS1m -w7Zuc3RlciBhdHQgbMOkZ2dhIFgxMSDDtnZlcnN0IChpc3TDpGxsZXQgZsO2ciBGaW5kZXIsIFRlcm1p -bmFsLCBldGMuKQ + Med det här alternativet kommer skapandet av ett nytt X11-fönster att lägga X11 överst (istället för Finder, Terminal, etc.) @@ -1128,7 +1120,7 @@ bmFsLCBldGMuKQ {{10, 33}, {438, 246}} - RsO2bnN0ZXI + Fönster @@ -1169,7 +1161,7 @@ bmFsLCBldGMuKQ 67239424 0 - VGlsbMOldCBhbnNsdXRuaW5nYXIgZnLDpW4gbsOkdHZlcmtza2xpZW50ZXI + Tillåt anslutningar från nätverksklienter 1211912703 @@ -1191,9 +1183,7 @@ bmFsLCBldGMuKQ 67239424 4194304 - TsOkciBkdSDDtnBwbmFyIFgxMSBza2FwYXMgWGF1dGhvcml0eS1ueWNrbGFyIHNvbSBrb250cm9sbGVy -YXIgw6V0a29tc3QuIE9tIGRhdG9ybnMgSVAtYWRyZXNzIMOkbmRyYXMgYmxpciBueWNrbGFybmEgb2dp -bHRpZ2Egdmlsa2V0IGthbiBmw7ZyaGluZHJhIGF0dCBYMTEtcHJvZ3JhbSDDtnBwbmFzLg + När du öppnar X11 skapas Xauthority-nycklar som kontrollerar åtkomst. Om datorns IP-adress ändras blir nycklarna ogiltiga vilket kan förhindra att X11-program öppnas. @@ -1210,10 +1200,7 @@ bHRpZ2Egdmlsa2V0IGthbiBmw7ZyaGluZHJhIGF0dCBYMTEtcHJvZ3JhbSDDtnBwbmFzLg 67239424 4194304 - T20gZGV0IMOkciBha3RpdmVyYXQgbcOlc3RlIEF1dGVudGlzZXJhIGFuc2x1dG5pbmdhciBvY2tzw6Ug -dmFyYSBha3RpdmVyYXQgZsO2ciBhdHQgc8Oka2Vyc3TDpGxsYSBzw6RrZXJoZXRlbiBpIHN5c3RlbWV0 -LiBPbSBkZXQgw6RyIGF2YWt0aXZlcmF0IHRpbGzDpXRzIGludGUgYW5zbHV0bmluZ2FyIGZyw6VuIGZq -w6RycnByb2dyYW0uA + Om det är aktiverat måste Autentisera anslutningar också vara aktiverat för att säkerställa säkerheten i systemet. Om det är avaktiverat tillåts inte anslutningar från fjärrprogram. @@ -1230,7 +1217,7 @@ w6RycnByb2dyYW0uA 67239424 4194304 - QWx0ZXJuYXRpdmVuIGLDtnJqYXIgZ8OkbGxhIG7DpHN0YSBnw6VuZyBYMTEgw7ZwcG5hcy4 + Alternativen börjar gälla nästa gång X11 öppnas. @@ -1241,7 +1228,7 @@ w6RycnByb2dyYW0uA {{10, 33}, {438, 246}} - U8Oka2VyaGV0A + Säkerhet @@ -1261,7 +1248,7 @@ w6RycnByb2dyYW0uA {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1274,7 +1261,7 @@ w6RycnByb2dyYW0uA View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} @@ -1359,12 +1346,12 @@ w6RycnByb2dyYW0uA YES - 1.227310e+02 - 6.273100e+01 - 1.000000e+03 + 122.73099999999999 + 62.731000000000002 + 1000 - 75628032 - 0 + 75628096 + 2048 Namn @@ -1398,12 +1385,12 @@ w6RycnByb2dyYW0uA - 1.000000e+02 - 4.000000e+01 - 1.000000e+03 + 100 + 40 + 1000 - 75628032 - 0 + 75628096 + 2048 Kommando @@ -1426,12 +1413,12 @@ w6RycnByb2dyYW0uA - 6.900000e+01 - 1.000000e+01 - 1.000000e+03 + 69 + 10 + 1000 - 67239424 - 0 + 75628096 + 2048 Kortkom. @@ -1448,7 +1435,7 @@ w6RycnByb2dyYW0uA Text Cell LucidaGrande - 1.200000e+01 + 12 16 @@ -1458,7 +1445,7 @@ w6RycnByb2dyYW0uA 6 System controlBackgroundColor - + @@ -1469,8 +1456,8 @@ w6RycnByb2dyYW0uA - 3.000000e+00 - 2.000000e+00 + 3 + 2 6 @@ -1481,16 +1468,20 @@ w6RycnByb2dyYW0uA MC41AA - 1.700000e+01 + 17 1379958784 + + 1 -1 0 YES + 0 {{1, 17}, {301, 198}} + 4 @@ -1502,7 +1493,7 @@ w6RycnByb2dyYW0uA _doScroller: - 9.949238e-01 + 0.99492380000000002 @@ -1512,7 +1503,7 @@ w6RycnByb2dyYW0uA 1 _doScroller: - 6.885246e-01 + 0.68852460000000004 @@ -1523,6 +1514,7 @@ w6RycnByb2dyYW0uA {{1, 0}, {301, 17}} + 4 @@ -1531,6 +1523,7 @@ w6RycnByb2dyYW0uA {{20, 20}, {318, 231}} + 50 @@ -1548,7 +1541,7 @@ w6RycnByb2dyYW0uA -2080244224 137887744 - TMOkZ2cgdGlsbCBvYmpla3Q + Lägg till objekt -2038284033 @@ -1567,7 +1560,7 @@ w6RycnByb2dyYW0uA {{0, 0}, {1440, 878}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps @@ -1611,7 +1604,7 @@ w6RycnByb2dyYW0uA - QW5wYXNzYeKApg + Anpassa… 1048576 2147483647 @@ -2186,28 +2179,26 @@ w6RycnByb2dyYW0uA YES 0 - - YES - + -2 - - RmlsZSdzIE93bmVyA + + File's Owner -1 - + First Responder -3 - + Application @@ -2221,7 +2212,7 @@ w6RycnByb2dyYW0uA - + MainMenu @@ -2466,7 +2457,7 @@ w6RycnByb2dyYW0uA 196 - + X11Controller @@ -2476,7 +2467,7 @@ w6RycnByb2dyYW0uA YES - + PrefsPanel @@ -2740,7 +2731,7 @@ w6RycnByb2dyYW0uA YES - + EditPrograms @@ -2763,7 +2754,7 @@ w6RycnByb2dyYW0uA - + DockMenu @@ -3315,10 +3306,8 @@ w6RycnByb2dyYW0uA YES - + YES - -1.IBPluginDependency - -2.IBPluginDependency -3.IBPluginDependency -3.ImportedFromIB2 100292.IBPluginDependency @@ -3376,7 +3365,6 @@ w6RycnByb2dyYW0uA 169.editorWindowContentRectSynchronizationRect 19.IBPluginDependency 19.ImportedFromIB2 - 196.IBPluginDependency 196.ImportedFromIB2 200295.IBPluginDependency 200295.IBShouldRemoveOnLegacySave @@ -3391,6 +3379,7 @@ w6RycnByb2dyYW0uA 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 244.IBEditorWindowLastContentRect + 244.IBPluginDependency 244.IBPropertyAccessControl 244.IBViewEditorWindowController.showingLayoutRectangles 244.IBWindowTemplateEditedContentRect @@ -3412,6 +3401,7 @@ w6RycnByb2dyYW0uA 272.IBPluginDependency 272.ImportedFromIB2 285.IBEditorWindowLastContentRect + 285.IBPluginDependency 285.IBViewEditorWindowController.showingBoundsRectangles 285.IBViewEditorWindowController.showingLayoutRectangles 285.IBWindowTemplateEditedContentRect @@ -3586,6 +3576,7 @@ w6RycnByb2dyYW0uA 379.IBPluginDependency 379.IBPropertyAccessControl 379.ImportedFromIB2 + 380.IBEditorWindowLastContentRect 380.IBPluginDependency 380.ImportedFromIB2 381.IBPluginDependency @@ -3664,13 +3655,12 @@ w6RycnByb2dyYW0uA YES com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3688,331 +3678,330 @@ w6RycnByb2dyYW0uA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + {{168, 821}, {113, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + {{202, 626}, {154, 153}} com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{349, 858}, {315, 153}} com.apple.InterfaceBuilder.CocoaPlugin - + {{271, 666}, {301, 153}} {{444, 200}, {484, 308}} - + com.apple.InterfaceBuilder.CocoaPlugin + {{444, 200}, {484, 308}} - + {{184, 290}, {481, 345}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + {{58, 803}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{100, 746}, {155, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + {{68, 585}, {496, 271}} - - + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {496, 271}} - + {{433, 406}, {486, 327}} - - + + {3.40282e+38, 3.40282e+38} {320, 240} com.apple.InterfaceBuilder.CocoaPlugin - + {{145, 836}, {347, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + {{67, 819}, {336, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + + {{530, 368}, {171, 83}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{84, 676}, {127, 33}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - - + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{20, 641}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + {{79, 616}, {218, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + YES - - YES - + YES @@ -4020,9 +4009,7 @@ w6RycnByb2dyYW0uA YES - - YES - + YES @@ -4060,6 +4047,15 @@ w6RycnByb2dyYW0uA 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES ../X11.xcodeproj 1 diff --git a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib index 11f4bc935..ae0faf9bc 100644 Binary files a/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib differ diff --git a/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist b/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist index 8b8767f06..1cbc91af8 100644 --- a/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 75.1 + 83 diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist b/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist index 15f4f1b9e..866f0f1ef 100644 --- a/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist +++ b/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist @@ -9,6 +9,6 @@ LprojRevisionLevel 1 LprojVersion - 73 + 83 diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib index 96b6f1fa3..14a5fd064 100644 --- a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib @@ -396,7 +396,7 @@ {3.40282e+38, 3.40282e+38} {320, 240} - + 256 YES @@ -405,6 +405,7 @@ 256 {{13, 10}, {458, 292}} + YES @@ -421,6 +422,7 @@ 256 {{18, 210}, {402, 18}} + YES 67239424 @@ -452,6 +454,7 @@ 256 {{36, 92}, {399, 14}} + YES 67239424 @@ -469,7 +472,7 @@ 6 System controlColor - + 3 MC42NjY2NjY2OQA @@ -488,8 +491,9 @@ 256 - {{36, 162}, {385, 42}} + {{36, 176}, {385, 28}} + YES 67239424 @@ -508,6 +512,7 @@ vKDnmoTkuK3plpPmiJblj7PpgormjInpiJXjgIIKA 256 {{18, 112}, {402, 18}} + YES 67239424 @@ -530,6 +535,7 @@ vKDnmoTkuK3plpPmiJblj7PpgormjInpiJXjgIIKA 256 {{36, 141}, {385, 14}} + YES 67239424 @@ -548,6 +554,7 @@ h4njgII 256 {{18, 161}, {402, 18}} + YES 67239424 @@ -568,6 +575,7 @@ h4njgII {{10, 33}, {438, 246}} + 6Ly45YWlA @@ -1113,7 +1121,7 @@ uOWPjeeahOaViOaenOOAgg 67239424 4194304 55W25ZWT55So5pmC77yM5paw5bu655qEIFgxMSDoppbnqpflsIfmnIPkvb8gWDExLmFwcO+8iOiAjOS4 -jeaYryBGaW5kZXIuYXBw44CBVGVybWluYWwuYXBwIOetie+8ieenu+iHs+acgOWJjeOAgg +jeaYryBGaW5kZXIuYXBw44CB57WC56uv5qmfLmFwcCDnrYnvvInnp7voh7PmnIDliY3jgII @@ -1252,6 +1260,8 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9 {484, 308} + + {{0, 0}, {1440, 878}} {320, 262} @@ -1450,7 +1460,7 @@ s7vntbHnmoQgSVAg5L2N5Z2A5pu05YuV77yM6YCZ5Lqb6Y215bCH5pyD54Sh5pWI77yM6YCZ5Y+v6IO9 6 System controlBackgroundColor - + diff --git a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib index 4c9973681..3f516a318 100644 Binary files a/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib and b/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib differ -- cgit v1.2.3 From 6e6927247359cc0db47501fb9d2dbb7856aa5985 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Pedersen Date: Wed, 27 May 2009 15:51:19 -0400 Subject: Fix alpha map computation in miComputeCompositeRegion() According to the RENDER spec, the origin of the alpha map is interpreted relative to the origin of the drawable of the image, not the origin of the drawable of the alpha map. This commit fixes that and adds an alpha-test.c test program. The only use of alpha maps I have been able to find is in Qt and they don't use a non-zero alpha origin. --- render/mipict.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/render/mipict.c b/render/mipict.c index c653ec4f5..e0d40ae34 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -459,8 +459,8 @@ miComputeCompositeRegion (RegionPtr pRegion, if (pSrc->alphaMap) { if (!miClipPictureSrc (pRegion, pSrc->alphaMap, - xDst - (xSrc + pSrc->alphaOrigin.x), - yDst - (ySrc + pSrc->alphaOrigin.y))) + xDst - (xSrc - pSrc->alphaOrigin.x), + yDst - (ySrc - pSrc->alphaOrigin.y))) { pixman_region_fini (pRegion); return FALSE; @@ -477,8 +477,8 @@ miComputeCompositeRegion (RegionPtr pRegion, if (pMask->alphaMap) { if (!miClipPictureSrc (pRegion, pMask->alphaMap, - xDst - (xMask + pMask->alphaOrigin.x), - yDst - (yMask + pMask->alphaOrigin.y))) + xDst - (xMask - pMask->alphaOrigin.x), + yDst - (yMask - pMask->alphaOrigin.y))) { pixman_region_fini (pRegion); return FALSE; -- cgit v1.2.3 From e08c6a0752772745f35f7afcf6c2b1c927b91cc0 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Mon, 4 May 2009 19:24:47 -0500 Subject: randr: bug #21554 - re-probe outputs when coming back from laptop unsuspend Make xf86 RANDR wrap the EnterVT call chain, so it can re-probe the outputs when a laptop comes back from suspend/unsuspend (actually, any time that we enter our VT again). The X server should then send RR* events to clients, so they can cope with a monitor that was unplugged while the laptop was suspended. Signed-off-by: Federico Mena Quintero --- hw/xfree86/modes/xf86RandR12.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 1e3b70c09..0de21e253 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -55,6 +55,13 @@ typedef struct _xf86RandR12Info { int pointerY; Rotation rotation; /* current mode */ 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; #ifdef RANDR_12_INTERFACE @@ -1745,11 +1752,26 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma) 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 xf86RandR12Init12 (ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; rrScrPrivPtr rp = rrGetScrPriv(pScreen); + XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); rp->rrGetInfo = xf86RandR12GetInfo12; rp->rrScreenSetSize = xf86RandR12ScreenSetSize; @@ -1767,6 +1789,10 @@ xf86RandR12Init12 (ScreenPtr pScreen) rp->rrSetConfig = NULL; pScrn->PointerMoved = xf86RandR12PointerMoved; pScrn->ChangeGamma = xf86RandR12ChangeGamma; + + randrp->orig_EnterVT = pScrn->EnterVT; + pScrn->EnterVT = xf86RandR12EnterVT; + if (!xf86RandR12CreateObjects12 (pScreen)) return FALSE; -- cgit v1.2.3