From 86450998da616e3d00d4d6293acc35eccc2061e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Thu, 7 Sep 2006 15:35:16 -0400 Subject: [PATCH 01/18] Fix AIGLX VT switching. See https://bugs.freedesktop.org/show_bug.cgi?id=7916 There may be a simpler, less intrusive fix that involves just rearranging DRI locking between 2D and 3D drivers around VT switch. --- GL/glx/glxdri.c | 36 +++++++++++++++++-- GL/glx/glxext.c | 90 ++++++++++++++++++++++++++++++++++------------ GL/glx/glxserver.h | 5 +-- 3 files changed, 104 insertions(+), 27 deletions(-) diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c index 41e49e225..b5723049d 100644 --- a/GL/glx/glxdri.c +++ b/GL/glx/glxdri.c @@ -73,6 +73,9 @@ struct __GLXDRIscreen { __DRIscreen driScreen; void *driver; + xf86EnterVTProc *enterVT; + xf86LeaveVTProc *leaveVT; + unsigned char glx_enable_bits[__GLX_EXT_BYTES]; }; @@ -622,8 +625,7 @@ static __DRIfuncPtr getProcAddress(const char *proc_name) static __DRIscreen *findScreen(__DRInativeDisplay *dpy, int scrn) { - __GLXDRIscreen *screen = - (__GLXDRIscreen *) __glXgetActiveScreen(scrn); + __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(scrn); return &screen->driScreen; } @@ -817,6 +819,30 @@ static const __DRIinterfaceMethods interface_methods = { static const char dri_driver_path[] = DRI_DRIVER_PATH; +static Bool +glxDRIEnterVT (int index, int flags) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(index); + + LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n"); + + glxResumeClients(); + + return (*screen->enterVT) (index, flags); +} + +static void +glxDRILeaveVT (int index, int flags) +{ + __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(index); + + LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n"); + + glxSuspendClients(); + + return (*screen->leaveVT) (index, flags); +} + static __GLXscreen * __glXDRIscreenProbe(ScreenPtr pScreen) { @@ -842,6 +868,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) char filename[128]; Bool isCapable; size_t buffer_size; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable")) { LogMessage(X_ERROR, "AIGLX: DRI module not loaded\n"); @@ -1029,6 +1056,11 @@ __glXDRIscreenProbe(ScreenPtr pScreen) __glXsetEnterLeaveServerFuncs(__glXDRIenterServer, __glXDRIleaveServer); + screen->enterVT = pScrn->EnterVT; + pScrn->EnterVT = glxDRIEnterVT; + screen->leaveVT = pScrn->LeaveVT; + pScrn->LeaveVT = glxDRILeaveVT; + LogMessage(X_INFO, "AIGLX: Loaded and initialized %s\n", filename); diff --git a/GL/glx/glxext.c b/GL/glx/glxext.c index fdb8ea262..11fb7fcaf 100644 --- a/GL/glx/glxext.c +++ b/GL/glx/glxext.c @@ -59,10 +59,7 @@ xGLXSingleReply __glXReply; ** A set of state for each client. The 0th one is unused because client ** indices start at 1, not 0. */ -__GLXclientState *__glXClients[MAXCLIENTS+1]; - - -static Bool inDispatch; +static __GLXclientState *__glXClients[MAXCLIENTS + 1]; /* ** Forward declarations. @@ -219,6 +216,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid) return True; } +static __GLXcontext *glxPendingDestroyContexts; +static int glxServerLeaveCount; +static int glxBlockClients; + /* ** Free a context. */ @@ -236,13 +237,14 @@ GLboolean __glXFreeContext(__GLXcontext *cx) * __glXDispatch() or as a callback from the resource manager. In * the latter case we need to lift the DRI lock manually. */ - if (!inDispatch) - __glXleaveServer(); - - cx->destroy(cx); - - if (!inDispatch) - __glXenterServer(); + if (glxBlockClients) { + __glXleaveServer(); + cx->destroy(cx); + __glXenterServer(); + } else { + cx->next = glxPendingDestroyContexts; + glxPendingDestroyContexts = cx; + } return GL_TRUE; } @@ -338,7 +340,7 @@ void GlxExtensionInit(void) /* ** Initialize table of client state. There is never a client 0. */ - for (i=1; i <= MAXCLIENTS; i++) { + for (i = 1; i <= MAXCLIENTS; i++) { __glXClients[i] = 0; } @@ -409,11 +411,43 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag, /************************************************************************/ -/* -** Top level dispatcher; all commands are executed from here down. -*/ +void glxSuspendClients(void) +{ + int i; -/* I cried when I wrote this. Damn you XAA! */ + for (i = 1; i <= MAXCLIENTS; i++) { + if (__glXClients[i] == NULL || !__glXClients[i]->inUse) + continue; + + IgnoreClient(__glXClients[i]->client); + } + + glxBlockClients = TRUE; +} + +void glxResumeClients(void) +{ + __GLXcontext *cx, *next; + int i; + + glxBlockClients = FALSE; + + for (i = 1; i <= MAXCLIENTS; i++) { + if (__glXClients[i] == NULL || !__glXClients[i]->inUse) + continue; + + AttendClient(__glXClients[i]->client); + } + + __glXleaveServer(); + for (cx = glxPendingDestroyContexts; cx != NULL; cx = next) { + next = cx->next; + + cx->destroy(cx); + } + glxPendingDestroyContexts = NULL; + __glXenterServer(); +} static void __glXnopEnterServer(void) @@ -438,14 +472,19 @@ void __glXsetEnterLeaveServerFuncs(void (*enter)(void), void __glXenterServer(void) { - (*__glXenterServerFunc)(); + glxServerLeaveCount--; + + if (glxServerLeaveCount == 0) + (*__glXenterServerFunc)(); } void __glXleaveServer(void) { - (*__glXleaveServerFunc)(); -} + if (glxServerLeaveCount == 0) + (*__glXleaveServerFunc)(); + glxServerLeaveCount++; +} /* ** Top level dispatcher; all commands are executed from here down. @@ -491,6 +530,15 @@ static int __glXDispatch(ClientPtr client) return __glXError(GLXBadLargeRequest); } + /* If we're currently blocking GLX clients, just put this guy to + * sleep, reset the request and return. */ + if (glxBlockClients) { + ResetCurrentRequest(client); + client->sequence--; + IgnoreClient(client); + return(client->noClientException); + } + /* ** Use the opcode to index into the procedure table. */ @@ -500,12 +548,8 @@ static int __glXDispatch(ClientPtr client) if (proc != NULL) { __glXleaveServer(); - inDispatch = True; - retval = (*proc)(cl, (GLbyte *) stuff); - inDispatch = False; - __glXenterServer(); } else { diff --git a/GL/glx/glxserver.h b/GL/glx/glxserver.h index 838973731..49cad7328 100644 --- a/GL/glx/glxserver.h +++ b/GL/glx/glxserver.h @@ -136,6 +136,9 @@ void __glXsetEnterLeaveServerFuncs(void (*enter)(void), void __glXenterServer(void); void __glXleaveServer(void); +void glxSuspendClients(void); +void glxResumeClients(void); + /* ** State kept per client. */ @@ -176,8 +179,6 @@ struct __GLXclientStateRec { char *GLClientextensions; }; -extern __GLXclientState *__glXClients[]; - /************************************************************************/ /* From 65256109bb8f5a26704ed960e1dd113981df5787 Mon Sep 17 00:00:00 2001 From: Drew Parsons Date: Sun, 10 Sep 2006 17:40:37 +1000 Subject: [PATCH 02/18] * Define XPSERVERLIST with `/etc/init.d/xprint get_xpserverlist` instead of `/bin/sh /etc/init.d/xprint get_xpserverlist` - allows the initscript to set its own different shell under #! - allows disabling of XPSERVERLIST by making the script non-executable * Allow files to be installed by using dist_*_DATA instead of EXTRA_DIST. Also, use dist_*_SCRIPTS to install scripts. * Fix minor typos in man pages. --- .../config/C/print/models/PS2PDFspooldir-GS/Makefile.am | 3 ++- hw/xprint/config/C/print/models/PSspooldir/Makefile.am | 3 ++- hw/xprint/config/Makefile.am | 2 +- hw/xprint/doc/Xprt.html | 6 +++--- hw/xprint/doc/Xprt.man.pre | 6 +++--- hw/xprint/doc/Xprt.sgml | 6 +++--- hw/xprint/etc/Xsession.d/Makefile.am | 3 ++- hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh | 4 ++-- 8 files changed, 18 insertions(+), 15 deletions(-) diff --git a/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am index 37b57d7bb..2b73b9dad 100644 --- a/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am +++ b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am @@ -1,3 +1,4 @@ xpcdir = @xpconfigdir@/C/print/models/PS2PDFspooldir-GS -dist_xpc_DATA = model-config ps2pdf_spooltodir.sh +dist_xpc_DATA = model-config +dist_xpc_SCRIPTS = ps2pdf_spooltodir.sh diff --git a/hw/xprint/config/C/print/models/PSspooldir/Makefile.am b/hw/xprint/config/C/print/models/PSspooldir/Makefile.am index 52313aa23..717cd2c36 100644 --- a/hw/xprint/config/C/print/models/PSspooldir/Makefile.am +++ b/hw/xprint/config/C/print/models/PSspooldir/Makefile.am @@ -1,3 +1,4 @@ xpcdir = @xpconfigdir@/C/print/models/PSspooldir -dist_xpc_DATA = model-config spooltodir.sh +dist_xpc_DATA = model-config +dist_xpc_SCRIPTS = spooltodir.sh diff --git a/hw/xprint/config/Makefile.am b/hw/xprint/config/Makefile.am index a5ea214c4..197d19de0 100644 --- a/hw/xprint/config/Makefile.am +++ b/hw/xprint/config/Makefile.am @@ -709,4 +709,4 @@ install-data-local: remove-links uninstall-hook: remove-links -EXTRA_DIST = README +dist_xpconfig_DATA = README diff --git a/hw/xprint/doc/Xprt.html b/hw/xprint/doc/Xprt.html index f84a3c134..2aa0c9e3c 100644 --- a/hw/xprint/doc/Xprt.html +++ b/hw/xprint/doc/Xprt.html @@ -4,7 +4,7 @@ applications to use devices like printers, FAX or create documents in formats like PostScript, PCL or PDF. It may be used by clients such as mozilla. -

Xprint is a very flexible, extensible, scaleable, client/server +

Xprint is a very flexible, extensible, scalable, client/server print system based on ISO 10175 (and some other specs) and the X11 rendering protocol. Using Xprint an application can search, query and use devices like @@ -44,11 +44,11 @@ font databases.

-pn

permits the server to continue running if it fails to establish all of its well-known sockets (connection points for clients), but establishes at least - one.

-XpFile file

Sets an altername Xprinters file (see section FILES).

-XpSpoolerType spoolername

+ one.

-XpFile file

Sets an alternate Xprinters file (see section FILES).

-XpSpoolerType spoolername

Defines the spooler system to be used for print job spooling. Supported values in xprint.mozdev.org release 009 are:

aix
aix4
bsd
osf
solaris
sysv
uxp
cups
lprng
other
none

- (multiple values can be specified, seperated by ':', the first active spooler will be chosen). + (multiple values can be specified, separated by ':', the first active spooler will be chosen). The default value is platform-specific and can be obtained via

Xprt -h

.

ENVIRONMENT

diff --git a/hw/xprint/doc/Xprt.man.pre b/hw/xprint/doc/Xprt.man.pre index 7599a1344..837619cb2 100644 --- a/hw/xprint/doc/Xprt.man.pre +++ b/hw/xprint/doc/Xprt.man.pre @@ -20,7 +20,7 @@ applications to use devices like printers, FAX or create documents in formats like PostScript, PCL or PDF. It may be used by clients such as mozilla. .PP -Xprint is a very flexible, extensible, scaleable, client/server +Xprint is a very flexible, extensible, scalable, client/server print system based on ISO 10175 (and some other specs) and the X11 rendering protocol. Using Xprint an application can search, query and use devices like @@ -85,7 +85,7 @@ points for clients), but establishes at least one. .TP \fB\-XpFile \fIfile\fB\fR -Sets an altername Xprinters file (see section FILES). +Sets an alternate Xprinters file (see section FILES). .TP \fB\-XpSpoolerType \fIspoolername\fB\fR Defines the spooler system to be used for print job spooling. @@ -113,7 +113,7 @@ other none -(multiple values can be specified, seperated by ':', the first active spooler will be chosen). +(multiple values can be specified, separated by ':', the first active spooler will be chosen). The default value is platform-specific and can be obtained via .nf diff --git a/hw/xprint/doc/Xprt.sgml b/hw/xprint/doc/Xprt.sgml index 0ffa39fcb..a62499263 100644 --- a/hw/xprint/doc/Xprt.sgml +++ b/hw/xprint/doc/Xprt.sgml @@ -55,7 +55,7 @@ HTML generation can be done like this: clients such as mozilla. - Xprint is a very flexible, extensible, scaleable, client/server + Xprint is a very flexible, extensible, scalable, client/server print system based on ISO 10175 (and some other specs) and the X11 rendering protocol. Using Xprint an application can search, query and use devices like @@ -155,7 +155,7 @@ HTML generation can be done like this: - Sets an altername Xprinters file (see section FILES). + Sets an alternate Xprinters file (see section FILES). @@ -178,7 +178,7 @@ HTML generation can be done like this: other none - (multiple values can be specified, seperated by ':', the first active spooler will be chosen). + (multiple values can be specified, separated by ':', the first active spooler will be chosen). The default value is platform-specific and can be obtained via Xprt -h. diff --git a/hw/xprint/etc/Xsession.d/Makefile.am b/hw/xprint/etc/Xsession.d/Makefile.am index e0277d9d4..3ef8e0596 100644 --- a/hw/xprint/etc/Xsession.d/Makefile.am +++ b/hw/xprint/etc/Xsession.d/Makefile.am @@ -1 +1,2 @@ -EXTRA_DIST = cde_xsessiond_xprint.sh +xpcdir = /etc/X11/Xsession.d +dist_xpc_DATA = cde_xsessiond_xprint.sh diff --git a/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh b/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh index 3fb6bba7c..54c431d5c 100644 --- a/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh +++ b/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh @@ -22,8 +22,8 @@ # Obtain list of Xprint servers # -if [ -f "/etc/init.d/xprint" ] ; then - XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`" +if [ -x "/etc/init.d/xprint" ] ; then + XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`" export XPSERVERLIST fi From b3a3020fd018df8bc5a8193d36e1a1c7ae8af8ba Mon Sep 17 00:00:00 2001 From: Jesse Barnes Date: Sun, 10 Sep 2006 11:13:18 -0700 Subject: [PATCH 03/18] the new PCI mapping routines are broken on sparc64 (in fact they look broken for any 32 bit X server running on a 64 bit kernel) so #ifdef them out for now. the PCI rework tree will make all this crap go away, so I think we can tolerate the extra #ifdef for the next release. --- hw/xfree86/os-support/bus/linuxPci.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c index a3c07f330..a97e6f0c9 100644 --- a/hw/xfree86/os-support/bus/linuxPci.c +++ b/hw/xfree86/os-support/bus/linuxPci.c @@ -83,7 +83,13 @@ static pciBusFuncs_t linuxFuncs0 = { /* pciAddrBusToHost */ linuxPpcBusAddrToHostAddr, #else /* pciAddrHostToBus */ pciAddrNOOP, +/* linuxTransAddrBusToHost is busted on sparc64 but the PCI rework tree + * makes it all moot, so we kludge it for now */ +#if defined(__sparc64__) +/* pciAddrBusToHost */ pciAddrNOOP, +#else /* pciAddrBusToHost */ linuxTransAddrBusToHost, +#endif /* __sparc64__ */ #endif /* pciControlBridge */ NULL, From 2b357e9a2f9038cf9cd07da908e3103a3d0965c9 Mon Sep 17 00:00:00 2001 From: Donnie Berkholz Date: Sun, 10 Sep 2006 22:17:20 -0700 Subject: [PATCH 04/18] If we're installing libxf86config, install headers needed to build against it. --- hw/xfree86/parser/Makefile.am | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am index acda83d27..46ef79060 100644 --- a/hw/xfree86/parser/Makefile.am +++ b/hw/xfree86/parser/Makefile.am @@ -1,5 +1,8 @@ if INSTALL_LIBXF86CONFIG lib_LIBRARIES = libxf86config.a +LIBHEADERS = \ + xf86Optrec.h \ + xf86Parser.h else noinst_LIBRARIES = libxf86config.a endif @@ -32,3 +35,6 @@ EXTRA_DIST = \ xf86Parser.h \ xf86tokens.h \ cpconfig.c + +sdk_HEADERS = \ + $(LIBHEADERS) From fc30370d14125f86ee1192890a184881fa139546 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Mon, 11 Sep 2006 19:43:09 +0200 Subject: [PATCH 05/18] Bug #8226: Fixed SetPictureTransform()'s handling of the argument matrix. It now recognizes scaled variants of the identity matrix, too. --- render/picture.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/render/picture.c b/render/picture.c index 566d91e09..a9910ab27 100644 --- a/render/picture.c +++ b/render/picture.c @@ -1459,18 +1459,24 @@ SetPictureClipRegion (PicturePtr pPicture, return result; } +static Bool +transformIsIdentity(PictTransform *t) +{ + return ((t->matrix[0][0] == t->matrix[1][1]) && + (t->matrix[0][0] == t->matrix[2][2]) && + (t->matrix[0][1] == 0) && + (t->matrix[0][2] == 0) && + (t->matrix[1][0] == 0) && + (t->matrix[1][2] == 0) && + (t->matrix[2][0] == 0) && + (t->matrix[2][1] == 0)); +} int SetPictureTransform (PicturePtr pPicture, PictTransform *transform) { - static const PictTransform identity = { { - { xFixed1, 0x00000, 0x00000 }, - { 0x00000, xFixed1, 0x00000 }, - { 0x00000, 0x00000, xFixed1 }, - } }; - - if (transform && memcmp (transform, &identity, sizeof (PictTransform)) == 0) + if (transform && transformIsIdentity (transform)) transform = 0; if (transform) From 594d4019c613b0f4bf8f48cc074ecc3c8366f1d7 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Tue, 12 Sep 2006 01:15:40 +0200 Subject: [PATCH 06/18] transformIsIdentity() now doesn't accept a zero matrix as the identity. Added a non-zero test for one of the diagonal values. --- render/picture.c | 1 + 1 file changed, 1 insertion(+) diff --git a/render/picture.c b/render/picture.c index a9910ab27..a3443c20e 100644 --- a/render/picture.c +++ b/render/picture.c @@ -1464,6 +1464,7 @@ transformIsIdentity(PictTransform *t) { return ((t->matrix[0][0] == t->matrix[1][1]) && (t->matrix[0][0] == t->matrix[2][2]) && + (t->matrix[0][0] != 0) && (t->matrix[0][1] == 0) && (t->matrix[0][2] == 0) && (t->matrix[1][0] == 0) && From 182e5e0f4ba4c98a34bc52bdf4032ba315fe80ad Mon Sep 17 00:00:00 2001 From: Drew Parsons Date: Tue, 12 Sep 2006 14:30:46 +1000 Subject: [PATCH 07/18] Xprint: revert installation of /etc/X11/Xsession.d/cde_xsessiond_xprint.sh pending resolution of #8232. --- hw/xprint/etc/Xsession.d/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/xprint/etc/Xsession.d/Makefile.am b/hw/xprint/etc/Xsession.d/Makefile.am index 3ef8e0596..e0277d9d4 100644 --- a/hw/xprint/etc/Xsession.d/Makefile.am +++ b/hw/xprint/etc/Xsession.d/Makefile.am @@ -1,2 +1 @@ -xpcdir = /etc/X11/Xsession.d -dist_xpc_DATA = cde_xsessiond_xprint.sh +EXTRA_DIST = cde_xsessiond_xprint.sh From 0a62840e2ce25e5c2554e7e5ab4c9c5b96899e2d Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Wed, 13 Sep 2006 15:40:23 -0700 Subject: [PATCH 08/18] Bug 7641: fix comment written to Xorg.conf (s/VertSync/VertRefresh/) X.Org Bugzilla #7641 Patch #6349 --- hw/xfree86/parser/Monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/parser/Monitor.c b/hw/xfree86/parser/Monitor.c index 4a8575049..9dd0b1b1c 100644 --- a/hw/xfree86/parser/Monitor.c +++ b/hw/xfree86/parser/Monitor.c @@ -675,7 +675,7 @@ xf86printMonitorSection (FILE * cf, XF86ConfMonitorPtr ptr) ptr->mon_width, ptr->mon_height); if ( ptr->mon_n_hsync || ptr->mon_n_vrefresh ) - fprintf(cf," ### Comment all HorizSync and VertSync values to use DDC:\n"); + fprintf(cf," ### Comment all HorizSync and VertRefresh values to use DDC:\n"); for (i = 0; i < ptr->mon_n_hsync; i++) { fprintf (cf, "\tHorizSync %2.1f - %2.1f\n", From 05231e336db8f959c15dda518641976f061df1a6 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 14 Sep 2006 14:13:39 -0700 Subject: [PATCH 09/18] Use correct opcodes for GLX_EXT_texture_from_pixmap. Regenerate from glX_API.xml 1.3 from Mesa. The glproto package and libGL (from Mesa) must also be updated. --- GL/glx/indirect_table.c | 353 +++++++++++++++++++++------------------- 1 file changed, 183 insertions(+), 170 deletions(-) diff --git a/GL/glx/indirect_table.c b/GL/glx/indirect_table.c index d13e4f8df..57712f4f5 100644 --- a/GL/glx/indirect_table.c +++ b/GL/glx/indirect_table.c @@ -1232,12 +1232,12 @@ const struct __glXDispatchInfo Render_dispatch_info = { /*****************************************************************/ /* tree depth = 13 */ -static const int_fast16_t VendorPriv_dispatch_tree[155] = { +static const int_fast16_t VendorPriv_dispatch_tree[158] = { /* [0] -> opcode range [0, 131072], node depth 1 */ 2, 5, EMPTY_LEAF, - 119, + 122, EMPTY_LEAF, /* [5] -> opcode range [0, 32768], node depth 2 */ @@ -1254,7 +1254,7 @@ static const int_fast16_t VendorPriv_dispatch_tree[155] = { 2, 16, EMPTY_LEAF, - 78, + 81, EMPTY_LEAF, /* [16] -> opcode range [0, 2048], node depth 5 */ @@ -1299,7 +1299,7 @@ static const int_fast16_t VendorPriv_dispatch_tree[155] = { 44, EMPTY_LEAF, 56, - 67, + 70, /* [44] -> opcode range [1024, 1152], node depth 7 */ 1, @@ -1327,164 +1327,169 @@ static const int_fast16_t VendorPriv_dispatch_tree[155] = { EMPTY_LEAF, /* [59] -> opcode range [1280, 1344], node depth 8 */ - 1, - 62, - EMPTY_LEAF, - - /* [62] -> opcode range [1280, 1312], node depth 9 */ 2, - EMPTY_LEAF, + 64, LEAF(16), - LEAF(24), + EMPTY_LEAF, + 67, + + /* [64] -> opcode range [1280, 1296], node depth 9 */ + 1, + EMPTY_LEAF, LEAF(32), - /* [67] -> opcode range [1408, 1536], node depth 7 */ + /* [67] -> opcode range [1328, 1344], node depth 9 */ 1, - 70, + LEAF(40), EMPTY_LEAF, - /* [70] -> opcode range [1408, 1472], node depth 8 */ + /* [70] -> opcode range [1408, 1536], node depth 7 */ 1, 73, EMPTY_LEAF, - /* [73] -> opcode range [1408, 1440], node depth 9 */ - 2, - EMPTY_LEAF, - LEAF(40), - LEAF(48), - EMPTY_LEAF, - - /* [78] -> opcode range [4096, 6144], node depth 5 */ - 2, - 83, - EMPTY_LEAF, - 101, - EMPTY_LEAF, - - /* [83] -> opcode range [4096, 4608], node depth 6 */ + /* [73] -> opcode range [1408, 1472], node depth 8 */ 1, + 76, + EMPTY_LEAF, + + /* [76] -> opcode range [1408, 1440], node depth 9 */ + 2, + EMPTY_LEAF, + LEAF(48), + LEAF(56), + EMPTY_LEAF, + + /* [81] -> opcode range [4096, 6144], node depth 5 */ + 2, 86, EMPTY_LEAF, + 104, + EMPTY_LEAF, - /* [86] -> opcode range [4096, 4352], node depth 7 */ + /* [86] -> opcode range [4096, 4608], node depth 6 */ 1, 89, EMPTY_LEAF, - /* [89] -> opcode range [4096, 4224], node depth 8 */ + /* [89] -> opcode range [4096, 4352], node depth 7 */ 1, 92, EMPTY_LEAF, - /* [92] -> opcode range [4096, 4160], node depth 9 */ + /* [92] -> opcode range [4096, 4224], node depth 8 */ 1, 95, EMPTY_LEAF, - /* [95] -> opcode range [4096, 4128], node depth 10 */ + /* [95] -> opcode range [4096, 4160], node depth 9 */ 1, 98, EMPTY_LEAF, - /* [98] -> opcode range [4096, 4112], node depth 11 */ + /* [98] -> opcode range [4096, 4128], node depth 10 */ 1, - LEAF(56), + 101, EMPTY_LEAF, - /* [101] -> opcode range [5120, 5632], node depth 6 */ - 1, - 104, - EMPTY_LEAF, - - /* [104] -> opcode range [5120, 5376], node depth 7 */ - 1, - 107, - EMPTY_LEAF, - - /* [107] -> opcode range [5120, 5248], node depth 8 */ - 1, - 110, - EMPTY_LEAF, - - /* [110] -> opcode range [5120, 5184], node depth 9 */ - 1, - EMPTY_LEAF, - 113, - - /* [113] -> opcode range [5152, 5184], node depth 10 */ - 1, - 116, - EMPTY_LEAF, - - /* [116] -> opcode range [5152, 5168], node depth 11 */ + /* [101] -> opcode range [4096, 4112], node depth 11 */ 1, LEAF(64), EMPTY_LEAF, - /* [119] -> opcode range [65536, 98304], node depth 2 */ + /* [104] -> opcode range [5120, 5632], node depth 6 */ 1, - 122, + 107, EMPTY_LEAF, - /* [122] -> opcode range [65536, 81920], node depth 3 */ + /* [107] -> opcode range [5120, 5376], node depth 7 */ 1, - 125, + 110, EMPTY_LEAF, - /* [125] -> opcode range [65536, 73728], node depth 4 */ + /* [110] -> opcode range [5120, 5248], node depth 8 */ 1, - 128, + 113, EMPTY_LEAF, - /* [128] -> opcode range [65536, 69632], node depth 5 */ + /* [113] -> opcode range [5120, 5184], node depth 9 */ 1, - 131, + EMPTY_LEAF, + 116, + + /* [116] -> opcode range [5152, 5184], node depth 10 */ + 1, + 119, EMPTY_LEAF, - /* [131] -> opcode range [65536, 67584], node depth 6 */ - 1, - 134, - EMPTY_LEAF, - - /* [134] -> opcode range [65536, 66560], node depth 7 */ - 1, - 137, - EMPTY_LEAF, - - /* [137] -> opcode range [65536, 66048], node depth 8 */ - 1, - 140, - EMPTY_LEAF, - - /* [140] -> opcode range [65536, 65792], node depth 9 */ - 1, - 143, - EMPTY_LEAF, - - /* [143] -> opcode range [65536, 65664], node depth 10 */ - 1, - 146, - EMPTY_LEAF, - - /* [146] -> opcode range [65536, 65600], node depth 11 */ - 1, - 149, - EMPTY_LEAF, - - /* [149] -> opcode range [65536, 65568], node depth 12 */ - 1, - 152, - EMPTY_LEAF, - - /* [152] -> opcode range [65536, 65552], node depth 13 */ + /* [119] -> opcode range [5152, 5168], node depth 11 */ 1, LEAF(72), EMPTY_LEAF, + /* [122] -> opcode range [65536, 98304], node depth 2 */ + 1, + 125, + EMPTY_LEAF, + + /* [125] -> opcode range [65536, 81920], node depth 3 */ + 1, + 128, + EMPTY_LEAF, + + /* [128] -> opcode range [65536, 73728], node depth 4 */ + 1, + 131, + EMPTY_LEAF, + + /* [131] -> opcode range [65536, 69632], node depth 5 */ + 1, + 134, + EMPTY_LEAF, + + /* [134] -> opcode range [65536, 67584], node depth 6 */ + 1, + 137, + EMPTY_LEAF, + + /* [137] -> opcode range [65536, 66560], node depth 7 */ + 1, + 140, + EMPTY_LEAF, + + /* [140] -> opcode range [65536, 66048], node depth 8 */ + 1, + 143, + EMPTY_LEAF, + + /* [143] -> opcode range [65536, 65792], node depth 9 */ + 1, + 146, + EMPTY_LEAF, + + /* [146] -> opcode range [65536, 65664], node depth 10 */ + 1, + 149, + EMPTY_LEAF, + + /* [149] -> opcode range [65536, 65600], node depth 11 */ + 1, + 152, + EMPTY_LEAF, + + /* [152] -> opcode range [65536, 65568], node depth 12 */ + 1, + 155, + EMPTY_LEAF, + + /* [155] -> opcode range [65536, 65552], node depth 13 */ + 1, + LEAF(80), + EMPTY_LEAF, + }; -static const void *VendorPriv_function_table[80][2] = { +static const void *VendorPriv_function_table[88][2] = { /* [ 0] = 8 */ {NULL, NULL}, /* [ 1] = 9 */ {NULL, NULL}, /* [ 2] = 10 */ {NULL, NULL}, @@ -1501,70 +1506,78 @@ static const void *VendorPriv_function_table[80][2] = { /* [ 13] = 1029 */ {NULL, NULL}, /* [ 14] = 1030 */ {NULL, NULL}, /* [ 15] = 1031 */ {NULL, NULL}, - /* [ 16] = 1288 */ {NULL, NULL}, - /* [ 17] = 1289 */ {NULL, NULL}, - /* [ 18] = 1290 */ {NULL, NULL}, - /* [ 19] = 1291 */ {NULL, NULL}, - /* [ 20] = 1292 */ {NULL, NULL}, - /* [ 21] = 1293 */ {__glXDisp_AreProgramsResidentNV, __glXDispSwap_AreProgramsResidentNV}, - /* [ 22] = 1294 */ {__glXDisp_DeleteProgramsNV, __glXDispSwap_DeleteProgramsNV}, - /* [ 23] = 1295 */ {__glXDisp_GenProgramsNV, __glXDispSwap_GenProgramsNV}, - /* [ 24] = 1296 */ {__glXDisp_GetProgramEnvParameterfvARB, __glXDispSwap_GetProgramEnvParameterfvARB}, - /* [ 25] = 1297 */ {__glXDisp_GetProgramEnvParameterdvARB, __glXDispSwap_GetProgramEnvParameterdvARB}, - /* [ 26] = 1298 */ {__glXDisp_GetProgramivNV, __glXDispSwap_GetProgramivNV}, - /* [ 27] = 1299 */ {__glXDisp_GetProgramStringNV, __glXDispSwap_GetProgramStringNV}, - /* [ 28] = 1300 */ {__glXDisp_GetTrackMatrixivNV, __glXDispSwap_GetTrackMatrixivNV}, - /* [ 29] = 1301 */ {__glXDisp_GetVertexAttribdvARB, __glXDispSwap_GetVertexAttribdvARB}, - /* [ 30] = 1302 */ {__glXDisp_GetVertexAttribfvNV, __glXDispSwap_GetVertexAttribfvNV}, - /* [ 31] = 1303 */ {__glXDisp_GetVertexAttribivNV, __glXDispSwap_GetVertexAttribivNV}, - /* [ 32] = 1304 */ {__glXDisp_IsProgramNV, __glXDispSwap_IsProgramNV}, - /* [ 33] = 1305 */ {__glXDisp_GetProgramLocalParameterfvARB, __glXDispSwap_GetProgramLocalParameterfvARB}, - /* [ 34] = 1306 */ {__glXDisp_GetProgramLocalParameterdvARB, __glXDispSwap_GetProgramLocalParameterdvARB}, - /* [ 35] = 1307 */ {__glXDisp_GetProgramivARB, __glXDispSwap_GetProgramivARB}, - /* [ 36] = 1308 */ {__glXDisp_GetProgramStringARB, __glXDispSwap_GetProgramStringARB}, - /* [ 37] = 1309 */ {NULL, NULL}, - /* [ 38] = 1310 */ {__glXDisp_GetProgramNamedParameterfvNV, __glXDispSwap_GetProgramNamedParameterfvNV}, - /* [ 39] = 1311 */ {__glXDisp_GetProgramNamedParameterdvNV, __glXDispSwap_GetProgramNamedParameterdvNV}, - /* [ 40] = 1416 */ {NULL, NULL}, - /* [ 41] = 1417 */ {NULL, NULL}, - /* [ 42] = 1418 */ {NULL, NULL}, - /* [ 43] = 1419 */ {NULL, NULL}, - /* [ 44] = 1420 */ {NULL, NULL}, - /* [ 45] = 1421 */ {NULL, NULL}, - /* [ 46] = 1422 */ {__glXDisp_IsRenderbufferEXT, __glXDispSwap_IsRenderbufferEXT}, - /* [ 47] = 1423 */ {__glXDisp_GenRenderbuffersEXT, __glXDispSwap_GenRenderbuffersEXT}, - /* [ 48] = 1424 */ {__glXDisp_GetRenderbufferParameterivEXT, __glXDispSwap_GetRenderbufferParameterivEXT}, - /* [ 49] = 1425 */ {__glXDisp_IsFramebufferEXT, __glXDispSwap_IsFramebufferEXT}, - /* [ 50] = 1426 */ {__glXDisp_GenFramebuffersEXT, __glXDispSwap_GenFramebuffersEXT}, - /* [ 51] = 1427 */ {__glXDisp_CheckFramebufferStatusEXT, __glXDispSwap_CheckFramebufferStatusEXT}, - /* [ 52] = 1428 */ {__glXDisp_GetFramebufferAttachmentParameterivEXT, __glXDispSwap_GetFramebufferAttachmentParameterivEXT}, - /* [ 53] = 1429 */ {NULL, NULL}, - /* [ 54] = 1430 */ {NULL, NULL}, - /* [ 55] = 1431 */ {NULL, NULL}, - /* [ 56] = 4096 */ {NULL, NULL}, - /* [ 57] = 4097 */ {NULL, NULL}, - /* [ 58] = 4098 */ {__glXDisp_GetColorTableSGI, __glXDispSwap_GetColorTableSGI}, - /* [ 59] = 4099 */ {__glXDisp_GetColorTableParameterfvSGI, __glXDispSwap_GetColorTableParameterfvSGI}, - /* [ 60] = 4100 */ {__glXDisp_GetColorTableParameterivSGI, __glXDispSwap_GetColorTableParameterivSGI}, - /* [ 61] = 4101 */ {NULL, NULL}, - /* [ 62] = 4102 */ {NULL, NULL}, - /* [ 63] = 4103 */ {NULL, NULL}, - /* [ 64] = 5152 */ {__glXDisp_BindTexImageEXT, __glXDispSwap_BindTexImageEXT}, - /* [ 65] = 5153 */ {__glXDisp_ReleaseTexImageEXT, __glXDispSwap_ReleaseTexImageEXT}, - /* [ 66] = 5154 */ {__glXDisp_CopySubBufferMESA, __glXDispSwap_CopySubBufferMESA}, - /* [ 67] = 5155 */ {NULL, NULL}, - /* [ 68] = 5156 */ {NULL, NULL}, - /* [ 69] = 5157 */ {NULL, NULL}, - /* [ 70] = 5158 */ {NULL, NULL}, - /* [ 71] = 5159 */ {NULL, NULL}, - /* [ 72] = 65536 */ {__glXDisp_SwapIntervalSGI, __glXDispSwap_SwapIntervalSGI}, - /* [ 73] = 65537 */ {__glXDisp_MakeCurrentReadSGI, __glXDispSwap_MakeCurrentReadSGI}, - /* [ 74] = 65538 */ {NULL, NULL}, - /* [ 75] = 65539 */ {NULL, NULL}, - /* [ 76] = 65540 */ {__glXDisp_GetFBConfigsSGIX, __glXDispSwap_GetFBConfigsSGIX}, - /* [ 77] = 65541 */ {__glXDisp_CreateContextWithConfigSGIX, __glXDispSwap_CreateContextWithConfigSGIX}, - /* [ 78] = 65542 */ {__glXDisp_CreateGLXPixmapWithConfigSGIX, __glXDispSwap_CreateGLXPixmapWithConfigSGIX}, - /* [ 79] = 65543 */ {NULL, NULL}, + /* [ 16] = 1296 */ {__glXDisp_GetProgramEnvParameterfvARB, __glXDispSwap_GetProgramEnvParameterfvARB}, + /* [ 17] = 1297 */ {__glXDisp_GetProgramEnvParameterdvARB, __glXDispSwap_GetProgramEnvParameterdvARB}, + /* [ 18] = 1298 */ {__glXDisp_GetProgramivNV, __glXDispSwap_GetProgramivNV}, + /* [ 19] = 1299 */ {__glXDisp_GetProgramStringNV, __glXDispSwap_GetProgramStringNV}, + /* [ 20] = 1300 */ {__glXDisp_GetTrackMatrixivNV, __glXDispSwap_GetTrackMatrixivNV}, + /* [ 21] = 1301 */ {__glXDisp_GetVertexAttribdvARB, __glXDispSwap_GetVertexAttribdvARB}, + /* [ 22] = 1302 */ {__glXDisp_GetVertexAttribfvNV, __glXDispSwap_GetVertexAttribfvNV}, + /* [ 23] = 1303 */ {__glXDisp_GetVertexAttribivNV, __glXDispSwap_GetVertexAttribivNV}, + /* [ 24] = 1304 */ {__glXDisp_IsProgramNV, __glXDispSwap_IsProgramNV}, + /* [ 25] = 1305 */ {__glXDisp_GetProgramLocalParameterfvARB, __glXDispSwap_GetProgramLocalParameterfvARB}, + /* [ 26] = 1306 */ {__glXDisp_GetProgramLocalParameterdvARB, __glXDispSwap_GetProgramLocalParameterdvARB}, + /* [ 27] = 1307 */ {__glXDisp_GetProgramivARB, __glXDispSwap_GetProgramivARB}, + /* [ 28] = 1308 */ {__glXDisp_GetProgramStringARB, __glXDispSwap_GetProgramStringARB}, + /* [ 29] = 1309 */ {NULL, NULL}, + /* [ 30] = 1310 */ {__glXDisp_GetProgramNamedParameterfvNV, __glXDispSwap_GetProgramNamedParameterfvNV}, + /* [ 31] = 1311 */ {__glXDisp_GetProgramNamedParameterdvNV, __glXDispSwap_GetProgramNamedParameterdvNV}, + /* [ 32] = 1288 */ {NULL, NULL}, + /* [ 33] = 1289 */ {NULL, NULL}, + /* [ 34] = 1290 */ {NULL, NULL}, + /* [ 35] = 1291 */ {NULL, NULL}, + /* [ 36] = 1292 */ {NULL, NULL}, + /* [ 37] = 1293 */ {__glXDisp_AreProgramsResidentNV, __glXDispSwap_AreProgramsResidentNV}, + /* [ 38] = 1294 */ {__glXDisp_DeleteProgramsNV, __glXDispSwap_DeleteProgramsNV}, + /* [ 39] = 1295 */ {__glXDisp_GenProgramsNV, __glXDispSwap_GenProgramsNV}, + /* [ 40] = 1328 */ {NULL, NULL}, + /* [ 41] = 1329 */ {NULL, NULL}, + /* [ 42] = 1330 */ {__glXDisp_BindTexImageEXT, __glXDispSwap_BindTexImageEXT}, + /* [ 43] = 1331 */ {__glXDisp_ReleaseTexImageEXT, __glXDispSwap_ReleaseTexImageEXT}, + /* [ 44] = 1332 */ {NULL, NULL}, + /* [ 45] = 1333 */ {NULL, NULL}, + /* [ 46] = 1334 */ {NULL, NULL}, + /* [ 47] = 1335 */ {NULL, NULL}, + /* [ 48] = 1416 */ {NULL, NULL}, + /* [ 49] = 1417 */ {NULL, NULL}, + /* [ 50] = 1418 */ {NULL, NULL}, + /* [ 51] = 1419 */ {NULL, NULL}, + /* [ 52] = 1420 */ {NULL, NULL}, + /* [ 53] = 1421 */ {NULL, NULL}, + /* [ 54] = 1422 */ {__glXDisp_IsRenderbufferEXT, __glXDispSwap_IsRenderbufferEXT}, + /* [ 55] = 1423 */ {__glXDisp_GenRenderbuffersEXT, __glXDispSwap_GenRenderbuffersEXT}, + /* [ 56] = 1424 */ {__glXDisp_GetRenderbufferParameterivEXT, __glXDispSwap_GetRenderbufferParameterivEXT}, + /* [ 57] = 1425 */ {__glXDisp_IsFramebufferEXT, __glXDispSwap_IsFramebufferEXT}, + /* [ 58] = 1426 */ {__glXDisp_GenFramebuffersEXT, __glXDispSwap_GenFramebuffersEXT}, + /* [ 59] = 1427 */ {__glXDisp_CheckFramebufferStatusEXT, __glXDispSwap_CheckFramebufferStatusEXT}, + /* [ 60] = 1428 */ {__glXDisp_GetFramebufferAttachmentParameterivEXT, __glXDispSwap_GetFramebufferAttachmentParameterivEXT}, + /* [ 61] = 1429 */ {NULL, NULL}, + /* [ 62] = 1430 */ {NULL, NULL}, + /* [ 63] = 1431 */ {NULL, NULL}, + /* [ 64] = 4096 */ {NULL, NULL}, + /* [ 65] = 4097 */ {NULL, NULL}, + /* [ 66] = 4098 */ {__glXDisp_GetColorTableSGI, __glXDispSwap_GetColorTableSGI}, + /* [ 67] = 4099 */ {__glXDisp_GetColorTableParameterfvSGI, __glXDispSwap_GetColorTableParameterfvSGI}, + /* [ 68] = 4100 */ {__glXDisp_GetColorTableParameterivSGI, __glXDispSwap_GetColorTableParameterivSGI}, + /* [ 69] = 4101 */ {NULL, NULL}, + /* [ 70] = 4102 */ {NULL, NULL}, + /* [ 71] = 4103 */ {NULL, NULL}, + /* [ 72] = 5152 */ {NULL, NULL}, + /* [ 73] = 5153 */ {NULL, NULL}, + /* [ 74] = 5154 */ {__glXDisp_CopySubBufferMESA, __glXDispSwap_CopySubBufferMESA}, + /* [ 75] = 5155 */ {NULL, NULL}, + /* [ 76] = 5156 */ {NULL, NULL}, + /* [ 77] = 5157 */ {NULL, NULL}, + /* [ 78] = 5158 */ {NULL, NULL}, + /* [ 79] = 5159 */ {NULL, NULL}, + /* [ 80] = 65536 */ {__glXDisp_SwapIntervalSGI, __glXDispSwap_SwapIntervalSGI}, + /* [ 81] = 65537 */ {__glXDisp_MakeCurrentReadSGI, __glXDispSwap_MakeCurrentReadSGI}, + /* [ 82] = 65538 */ {NULL, NULL}, + /* [ 83] = 65539 */ {NULL, NULL}, + /* [ 84] = 65540 */ {__glXDisp_GetFBConfigsSGIX, __glXDispSwap_GetFBConfigsSGIX}, + /* [ 85] = 65541 */ {__glXDisp_CreateContextWithConfigSGIX, __glXDispSwap_CreateContextWithConfigSGIX}, + /* [ 86] = 65542 */ {__glXDisp_CreateGLXPixmapWithConfigSGIX, __glXDispSwap_CreateGLXPixmapWithConfigSGIX}, + /* [ 87] = 65543 */ {NULL, NULL}, }; const struct __glXDispatchInfo VendorPriv_dispatch_info = { From f057de4f73fa593fa3fc5f05f65b89e76273b158 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Sat, 16 Sep 2006 03:49:11 -0400 Subject: [PATCH 10/18] Don't install librac.a. Thanks, automake. --- hw/xfree86/rac/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/rac/Makefile.am b/hw/xfree86/rac/Makefile.am index 328ed197d..2d8d87975 100644 --- a/hw/xfree86/rac/Makefile.am +++ b/hw/xfree86/rac/Makefile.am @@ -1,4 +1,4 @@ -module_LIBRARIES = librac.a +noinst_LIBRARIES = librac.a librac_a_SOURCES = xf86RAC.c sdk_HEADERS = xf86RAC.h From d812f486a01a6276aed7b4ebd3cd8eb8ddfe10d3 Mon Sep 17 00:00:00 2001 From: Donnie Berkholz Date: Wed, 20 Sep 2006 15:39:39 -0700 Subject: [PATCH 11/18] Really fix sparc on 64-bit kernel/32-bit userland. Commit b3a3020fd018df8bc5a8193d36e1a1c7ae8af8ba used a sparc64 ifdef instead of sparc. But for 32-bit userland, __sparc64__ is not defined so the wrong code is used. --- hw/xfree86/os-support/bus/linuxPci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c index a97e6f0c9..c6dad1faa 100644 --- a/hw/xfree86/os-support/bus/linuxPci.c +++ b/hw/xfree86/os-support/bus/linuxPci.c @@ -85,7 +85,7 @@ static pciBusFuncs_t linuxFuncs0 = { /* pciAddrHostToBus */ pciAddrNOOP, /* linuxTransAddrBusToHost is busted on sparc64 but the PCI rework tree * makes it all moot, so we kludge it for now */ -#if defined(__sparc64__) +#if defined(__sparc__) /* pciAddrBusToHost */ pciAddrNOOP, #else /* pciAddrBusToHost */ linuxTransAddrBusToHost, From 8b4ed47c5d39f219866e3c72fa973c6fc4c70f18 Mon Sep 17 00:00:00 2001 From: Drew Parsons Date: Thu, 21 Sep 2006 22:19:44 +1000 Subject: [PATCH 12/18] * Install Xprint's Xsession script to $(sysconfdir)/X11/Xsession.d * Removing outdated references to CDE and dt, rename script to 92xprint-xpserverlist. --- .../{cde_xsessiond_xprint.sh => 92xprint-xpserverlist} | 8 ++++---- hw/xprint/etc/Xsession.d/Makefile.am | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) rename hw/xprint/etc/Xsession.d/{cde_xsessiond_xprint.sh => 92xprint-xpserverlist} (76%) diff --git a/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh b/hw/xprint/etc/Xsession.d/92xprint-xpserverlist similarity index 76% rename from hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh rename to hw/xprint/etc/Xsession.d/92xprint-xpserverlist index 54c431d5c..60d964a34 100644 --- a/hw/xprint/etc/Xsession.d/cde_xsessiond_xprint.sh +++ b/hw/xprint/etc/Xsession.d/92xprint-xpserverlist @@ -1,19 +1,19 @@ #!/bin/sh ##################################################################### -### File: 0018.xprint +### File: 92xprint-xpserverlist ### -### Default Location: /usr/dt/config/Xsession.d/ +### Default Location: /etc/X11/Xsession.d/ ### ### Purpose: Setup Xprint env vars ### ### Description: This script is invoked by means of the Xsession file ### at user login. ### -### Invoked by: /usr/dt/bin/Xsession +### Invoked by: /etc/X11/Xsession ### ### (c) Copyright 2003-2004 Roland Mainz ### -### please send bugfixes or comments to http://xprint.mozdev.org/ +### please send bugfixes or comments to https://bugs.freedesktop.org ### ##################################################################### diff --git a/hw/xprint/etc/Xsession.d/Makefile.am b/hw/xprint/etc/Xsession.d/Makefile.am index e0277d9d4..96a5ee73b 100644 --- a/hw/xprint/etc/Xsession.d/Makefile.am +++ b/hw/xprint/etc/Xsession.d/Makefile.am @@ -1 +1,2 @@ -EXTRA_DIST = cde_xsessiond_xprint.sh +xpcdir = $(sysconfdir)/X11/Xsession.d +dist_xpc_DATA = 92xprint-xpserverlist From c1655f0fd457f9bdf0857c5e0904639925bb01f1 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Thu, 21 Sep 2006 14:45:17 -0700 Subject: [PATCH 13/18] Bug 8386: Grow parser buffers to fit an entire line if it's longer than CONFIG_BUF_LEN. --- hw/xfree86/parser/scan.c | 123 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c index 5b29ab855..f81c45afe 100644 --- a/hw/xfree86/parser/scan.c +++ b/hw/xfree86/parser/scan.c @@ -157,9 +157,128 @@ xf86strToUL (char *str) return (tot); } +/* + * xf86getNextLine -- + * + * read from the configFile FILE stream until we encounter a new + * line; this is effectively just a big wrapper for fgets(3). + * + * xf86getToken() assumes that we will read up to the next + * newline; we need to grow configBuf and configRBuf as needed to + * support that. + */ + +static char* +xf86getNextLine(void) +{ + static int configBufLen = CONFIG_BUF_LEN; + char *tmpConfigBuf, *tmpConfigRBuf; + int c, i, pos = 0, eolFound = 0; + char *ret = NULL; + + /* + * reallocate the string if it was grown last time (i.e., is no + * longer CONFIG_BUF_LEN); we malloc the new strings first, so + * that if either of the mallocs fail, we can fall back on the + * existing buffer allocations + */ + + if (configBufLen != CONFIG_BUF_LEN) { + + tmpConfigBuf = xf86confmalloc(CONFIG_BUF_LEN); + tmpConfigRBuf = xf86confmalloc(CONFIG_BUF_LEN); + + if (!tmpConfigBuf || !tmpConfigRBuf) { + + /* + * at least one of the mallocs failed; keep the old buffers + * and free any partial allocations + */ + + xf86conffree(tmpConfigBuf); + xf86conffree(tmpConfigRBuf); + + } else { + + /* + * malloc succeeded; free the old buffers and use the new + * buffers + */ + + configBufLen = CONFIG_BUF_LEN; + + xf86conffree(configBuf); + xf86conffree(configRBuf); + + configBuf = tmpConfigBuf; + configRBuf = tmpConfigRBuf; + } + } + + /* read in another block of chars */ + + do { + ret = fgets(configBuf + pos, configBufLen - pos - 1, configFile); + + if (!ret) break; + + /* search for EOL in the new block of chars */ + + for (i = pos; i < (configBufLen - 1); i++) { + c = configBuf[i]; + + if (c == '\0') break; + + if ((c == '\n') || (c == '\r')) { + eolFound = 1; + break; + } + } + + /* + * if we didn't find EOL, then grow the string and + * read in more + */ + + if (!eolFound) { + + tmpConfigBuf = xf86confrealloc(configBuf, configBufLen + CONFIG_BUF_LEN); + tmpConfigRBuf = xf86confrealloc(configRBuf, configBufLen + CONFIG_BUF_LEN); + + if (!tmpConfigBuf || !tmpConfigRBuf) { + + /* + * at least one of the reallocations failed; use the + * new allocation that succeeded, but we have to + * fallback to the previous configBufLen size and use + * the string we have, even though we don't have an + * EOL + */ + + if (tmpConfigBuf) configBuf = tmpConfigBuf; + if (tmpConfigRBuf) configRBuf = tmpConfigRBuf; + + break; + + } else { + + /* reallocation succeeded */ + + configBuf = tmpConfigBuf; + configRBuf = tmpConfigRBuf; + pos = i; + configBufLen += CONFIG_BUF_LEN; + } + } + + } while (!eolFound); + + return (ret); +} + /* * xf86getToken -- - * Read next Token form the config file. Handle the global variable + * Read next Token from the config file. Handle the global variable * pushToken. */ int @@ -193,7 +312,7 @@ again: { char *ret; if (configFile) - ret = fgets (configBuf, CONFIG_BUF_LEN - 1, configFile); + ret = xf86getNextLine(); else { if (builtinConfig[builtinIndex] == NULL) ret = NULL; From ce78b0cd2b1c35d60eb5683a1d00222aa4797c79 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 21 Sep 2006 20:42:47 -0400 Subject: [PATCH 14/18] Close with Pclose() that which we open with Popen(). --- xkb/ddxList.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xkb/ddxList.c b/xkb/ddxList.c index f94a869ae..034f694ed 100644 --- a/xkb/ddxList.c +++ b/xkb/ddxList.c @@ -269,7 +269,7 @@ char tmpname[PATH_MAX]; #ifndef WIN32 if (haveDir) fclose(in); - else if ((rval=pclose(in))!=0) { + else if ((rval=Pclose(in))!=0) { if (xkbDebugFlags) ErrorF("xkbcomp returned exit code %d\n",rval); } From a10039a100dfe5f87e29e9cc4fa656176e0890f9 Mon Sep 17 00:00:00 2001 From: David Nusinow Date: Thu, 21 Sep 2006 23:58:32 -0400 Subject: [PATCH 15/18] Allow the xfree86 ddx utils to be optionally built. Patch by Eugene Konev. --- configure.ac | 3 +++ hw/xfree86/Makefile.am | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 798c8f0da..76f5e04c2 100644 --- a/configure.ac +++ b/configure.ac @@ -426,6 +426,7 @@ AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extensi AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes]) AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes]) AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes]) +AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) dnl DDXes. AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) @@ -735,6 +736,8 @@ if test "x$XINPUT" = xyes; then XI_INC='-I$(top_srcdir)/Xi' fi +AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes) + AC_DEFINE(SHAPE, 1, [Support SHAPE extension]) AC_DEFINE(XKB, 1, [Build XKB]) diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am index 67bfd80d9..5cce11d27 100644 --- a/hw/xfree86/Makefile.am +++ b/hw/xfree86/Makefile.am @@ -2,12 +2,16 @@ if DRI DRI_SUBDIR = dri endif +if XF86UTILS +XF86UTILS_SUBDIR = utils +endif + DOC_SUBDIR = doc SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support parser rac \ ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp xf8_16bpp \ xf8_32bpp loader scanpci dixmods exa \ - $(DRI_SUBDIR) utils $(DOC_SUBDIR) + $(DRI_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR) DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \ parser rac ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp \ From 891e9c3e6cbd0869a57395b96c8e18ff522c2bb4 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 23 Sep 2006 10:28:24 -0600 Subject: [PATCH 16/18] Replace broken DMXDBG3() with DMXDBG2() --- hw/dmx/dmxcursor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c index a49fc9f43..e74a05215 100644 --- a/hw/dmx/dmxcursor.c +++ b/hw/dmx/dmxcursor.c @@ -664,8 +664,8 @@ static Bool _dmxUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) { DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; - DMXDBG3("_dmxUnrealizeCursor(%d,%p) %p\n", - pScreen->myNum, pCursor, pCursorPriv); + DMXDBG2("_dmxUnrealizeCursor(%d,%p)\n", + pScreen->myNum, pCursor); if (dmxScreen->beDisplay) { if (dmxBEFreeCursor(pScreen, pCursor)) From 945b7c63946f5257d0f9b0dcf2f8f4882fb2c6f8 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 23 Sep 2006 10:35:25 -0600 Subject: [PATCH 17/18] The fbcmap.c file used by Xdmx _must_ be compiled with XFree86Server defined. Otherwise, Xdmx generates a slew of protocol errors. --- hw/dmx/Makefile.am | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/dmx/Makefile.am b/hw/dmx/Makefile.am index d36647b54..89136b904 100644 --- a/hw/dmx/Makefile.am +++ b/hw/dmx/Makefile.am @@ -16,6 +16,9 @@ GLX_INCS = -I$(top_srcdir)/hw/xfree86/dixmods/extmod \ GLX_DEFS = @GL_CFLAGS@ endif +# It's essential that fbcmap.c be compiled with this flag for DMX to work!! +DMX_CFLAGS = -DXFree86Server=1 + if BUILDDOCS SUBDIRS += doc endif @@ -86,6 +89,7 @@ Xdmx_CFLAGS = \ $(DIX_CFLAGS) \ $(GLX_INCS) \ $(GLX_DEFS) \ + $(DMX_CFLAGS) \ @DMXMODULES_CFLAGS@ # Man page From f7c1d942416db8d0d4c5a21f5ece1ccacb926b69 Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 23 Sep 2006 10:38:10 -0600 Subject: [PATCH 18/18] Check for visual==NULL in dmxBECreateColormap() before calling XCreateColormap() to prevent potential segfault. --- hw/dmx/dmxcmap.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/hw/dmx/dmxcmap.c b/hw/dmx/dmxcmap.c index b4279e7ce..9a9781f53 100644 --- a/hw/dmx/dmxcmap.c +++ b/hw/dmx/dmxcmap.c @@ -40,6 +40,7 @@ #endif #include "dmx.h" +#include "dmxlog.h" #include "dmxsync.h" #include "dmxcmap.h" #include "dmxvisual.h" @@ -83,12 +84,18 @@ Bool dmxBECreateColormap(ColormapPtr pColormap) VisualPtr pVisual = pColormap->pVisual; Visual *visual = dmxLookupVisual(pScreen, pVisual); - pCmapPriv->cmap = XCreateColormap(dmxScreen->beDisplay, - dmxScreen->scrnWin, - visual, - (pVisual->class & DynamicClass ? - AllocAll : AllocNone)); - return (pCmapPriv->cmap != 0); + if (visual) { + pCmapPriv->cmap = XCreateColormap(dmxScreen->beDisplay, + dmxScreen->scrnWin, + visual, + (pVisual->class & DynamicClass ? + AllocAll : AllocNone)); + return (pCmapPriv->cmap != 0); + } + else { + dmxLog(dmxWarning, "dmxBECreateColormap: No visual found\n"); + return 0; + } } /** Create colormap on back-end server associated with \a pColormap's