From 2107becb0ce2ffda001be65728c53563496d8d50 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 27 May 2009 17:13:19 -0400 Subject: [PATCH 01/13] xfree86: Remove unused (and useless) xf86{Add,Delete}ModuleInfo --- hw/xfree86/common/xf86.h | 3 --- hw/xfree86/common/xf86Helper.c | 11 ----------- hw/xfree86/common/xf86str.h | 15 --------------- 3 files changed, 29 deletions(-) diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index 0c0320fda..cb05cb36b 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -315,9 +315,6 @@ extern _X_EXPORT int xf86RegisterRootWindowProperty(int ScrnIndex, Atom propert pointer value); extern _X_EXPORT Bool xf86IsUnblank(int mode); -extern _X_EXPORT _X_DEPRECATED void xf86AddModuleInfo(pointer info, pointer module); -extern _X_EXPORT _X_DEPRECATED void xf86DeleteModuleInfo(int idx); - /* xf86Init.c */ extern _X_EXPORT PixmapFormatPtr xf86GetPixFormat(ScrnInfoPtr pScrn, int depth); diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 441efb098..37802d61a 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -169,17 +169,6 @@ xf86LookupInput(const char *name) return NULL; } -/* ABI stubs of despair */ -void -xf86AddModuleInfo(pointer info, pointer module) -{ -} - -void -xf86DeleteModuleInfo(int idx) -{ -} - /* Allocate a new ScrnInfoRec in xf86Screens */ ScrnInfoPtr diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h index 904c369a6..3b1346f05 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h @@ -342,21 +342,6 @@ typedef struct _DriverRec { */ #define HaveDriverFuncs 1 - -/* - * The optional module list struct. This allows modules exporting helping - * functions to configuration tools, the Xserver, or any other - * application/module interested in such information. - */ -_X_DEPRECATED typedef struct _ModuleInfoRec { - int moduleVersion; - char * moduleName; - pointer module; - int refCount; - const OptionInfoRec * (*AvailableOptions)(void *unused); - pointer unused[8]; /* leave some space for more fields */ -} ModuleInfoRec, *ModuleInfoPtr; - /* * These are the private bus types. New types can be added here. Types * required for the public interface should be added to xf86str.h, with From 71a83d68ab07536c0778d13cd7da974c40e77457 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 28 May 2009 15:32:03 -0400 Subject: [PATCH 02/13] xfree86: Remove loader symbol list ABI stubs These have been nops since 2006 and functionally void since 7.0. --- hw/xfree86/common/xf86.h | 4 ---- hw/xfree86/common/xf86Helper.c | 22 ---------------------- hw/xfree86/common/xf86Module.h | 4 ---- hw/xfree86/loader/loader.c | 21 --------------------- 4 files changed, 51 deletions(-) diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index cb05cb36b..e49f28db0 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -277,10 +277,6 @@ extern _X_EXPORT pointer xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name); extern _X_EXPORT pointer xf86LoadOneModule(char *name, pointer optlist); extern _X_EXPORT void xf86UnloadSubModule(pointer mod); extern _X_EXPORT Bool xf86LoaderCheckSymbol(const char *name); -extern _X_EXPORT void xf86LoaderReqSymLists(const char **, ...); -extern _X_EXPORT void xf86LoaderReqSymbols(const char *, ...); -extern _X_EXPORT void xf86LoaderRefSymLists(const char **, ...); -extern _X_EXPORT void xf86LoaderRefSymbols(const char *, ...); extern _X_EXPORT void xf86SetBackingStore(ScreenPtr pScreen); extern _X_EXPORT void xf86SetSilkenMouse(ScreenPtr pScreen); extern _X_EXPORT pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char *port_name, diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index 37802d61a..eac819b9c 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -2290,28 +2290,6 @@ xf86LoaderCheckSymbol(const char *name) return LoaderSymbol(name) != NULL; } -/* These two are just ABI stubs, they don't do anything in dlloader world */ -void -xf86LoaderReqSymLists(const char **list0, ...) -{ -} - -void -xf86LoaderReqSymbols(const char *sym0, ...) -{ -} - -void -xf86LoaderRefSymLists(const char **list0, ...) -{ -} - -void -xf86LoaderRefSymbols(const char *sym0, ...) -{ -} - - typedef enum { OPTION_BACKING_STORE } BSOpts; diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h index cbba3edde..9ecffb7cd 100644 --- a/hw/xfree86/common/xf86Module.h +++ b/hw/xfree86/common/xf86Module.h @@ -194,10 +194,6 @@ extern _X_EXPORT char **LoaderListDirs(const char **, const char **); extern _X_EXPORT void LoaderFreeDirList(char **); extern _X_EXPORT void LoaderErrorMsg(const char *, const char *, int, int); extern _X_EXPORT void LoadExtension(ExtensionModule *, Bool); -extern _X_EXPORT void LoaderRefSymLists(const char **, ...); -extern _X_EXPORT void LoaderRefSymbols(const char *, ...); -extern _X_EXPORT void LoaderReqSymLists(const char **, ...); -extern _X_EXPORT void LoaderReqSymbols(const char *, ...); extern _X_EXPORT int LoaderCheckUnresolved(int); extern _X_EXPORT void LoaderGetOS(const char **name, int *major, int *minor, int *teeny); extern _X_EXPORT Bool LoaderShouldIgnoreABI(void); diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c index 1803d0eb1..47c8c2e7f 100644 --- a/hw/xfree86/loader/loader.c +++ b/hw/xfree86/loader/loader.c @@ -159,27 +159,6 @@ LoaderInit(void) #endif } -/* These four are just ABI stubs */ -void -LoaderRefSymbols(const char *sym0, ...) -{ -} - -void -LoaderRefSymLists(const char **list0, ...) -{ -} - -void -LoaderReqSymLists(const char **list0, ...) -{ -} - -void -LoaderReqSymbols(const char *sym0, ...) -{ -} - /* Public Interface to the loader. */ int From ec9e9c8bcabda3d8b4ea07037fb247f7408dde8b Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Thu, 28 May 2009 15:30:20 -0700 Subject: [PATCH 03/13] XQuartz: English localization update for HIG compliance (cherry picked from commit 86b319d7cbef39d75b54c9d321e5dbf097b552be) --- .../English.lproj/main.nib/designable.nib | 12 ++++++------ .../English.lproj/main.nib/keyedobjects.nib | Bin 41769 -> 41697 bytes 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib index d27162539..38b00183c 100644 --- a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib @@ -2,9 +2,9 @@ 1050 - 9G55 + 9J61 677 - 949.43 + 949.46 353.00 YES @@ -857,7 +857,7 @@ Lg 67239424 0 - Update CLIPBOARD when Pasteboard changes. + Update CLIPBOARD when Pasteboard changes 1211912703 @@ -878,7 +878,7 @@ Lg 67239424 0 - Update PRIMARY (middle-click) when Pasteboard changes. + Update PRIMARY (middle-click) when Pasteboard changes 1211912703 @@ -899,7 +899,7 @@ Lg 67239424 0 - Update Pasteboard immediately when new text is selected. + Update Pasteboard immediately when new text is selected 1211912703 @@ -920,7 +920,7 @@ Lg 67239424 0 - Update Pasteboard when CLIPBOARD changes. + Update Pasteboard when CLIPBOARD changes 1211912703 diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib index ee6cdf25e7187b1b5b3cae519633c7a6487b6eb4..516508961ee8fd7d16ae09b097dd0bfa71c2d993 100644 GIT binary patch literal 41697 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 L{^$Qsz4iY9%O;U5 literal 41769 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 From 7c158ffa766d32f5e8ec459693da5ef6ba0892e9 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 29 May 2009 14:02:18 -0700 Subject: [PATCH 04/13] Rootless: Use miPaintWindow since PaintWindowBackground is dead (cherry picked from commit 4975c087257b52189a5c21d93d121f183e60e4c8) --- miext/rootless/rootlessScreen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index 75dd43994..88d38698b 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -481,8 +481,7 @@ static void expose_1 (WindowPtr pWin) { if (!pWin->realized) return; - (*pWin->drawable.pScreen->PaintWindowBackground) (pWin, &pWin->borderClip, - PW_BACKGROUND); + miPaintWindow(pWin, &pWin->borderClip, PW_BACKGROUND); /* FIXME: comments in windowstr.h indicate that borderClip doesn't include subwindow visibility. But I'm not so sure.. so we may From f2151f1b0dcbfec23488a29a7ea887fbfd53b760 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 29 May 2009 14:09:41 -0700 Subject: [PATCH 05/13] XQuartz: Fix alpha to be 1 (screenshots bug, etc) This is related to: bc964ff1e3f3d8ab590eab40d767c6241e9480d4 XQuartz: Stab at fixing the alpha 0/1 bug (screenshots, etc) by pulling in some old code that got gutted from rootless. which was on the 1.4 branch and implemented in fbPaintWindow. Now that fbPaintWindow is gone, this is now in miPaintWindow(). (cherry picked from commit 032173f693f75385a40e144ffe2b7b5378bb6f2e) --- configure.ac | 2 +- mi/miexpose.c | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index daddd094a..696e03f65 100644 --- a/configure.ac +++ b/configure.ac @@ -1666,7 +1666,7 @@ if test "x$XQUARTZ" = xyes; then AC_CHECK_LIB([Xplugin],[xp_init],[:]) - CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DNO_ALLOCA" + CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DROOTLESS_SAFEALPHA -DNO_ALLOCA" PKG_CHECK_MODULES(XPBPROXY, [applewmproto >= 1.2] [applewm >= 1.2] xfixes fixesproto x11) diff --git a/mi/miexpose.c b/mi/miexpose.c index 2c43d9824..6ce56ee85 100644 --- a/mi/miexpose.c +++ b/mi/miexpose.c @@ -522,7 +522,7 @@ void miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) { ScreenPtr pScreen = pWin->drawable.pScreen; - ChangeGCVal gcval[5]; + ChangeGCVal gcval[6]; BITS32 gcmask; GCPtr pGC; int i; @@ -590,18 +590,35 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) gcval[0].val = GXcopy; gcmask = GCFunction; +#ifdef ROOTLESS_SAFEALPHA +/* Bit mask for alpha channel with a particular number of bits per + * pixel. Note that we only care for 32bpp data. Mac OS X uses planar + * alpha for 16bpp. + */ +#define RootlessAlphaMask(bpp) ((bpp) == 32 ? 0xFF000000 : 0) +#endif + if (solid) { +#ifdef ROOTLESS_SAFEALPHA + gcval[1].val = fill.pixel | RootlessAlphaMask(pWin->drawable.bitsPerPixel); +#else gcval[1].val = fill.pixel; +#endif gcval[2].val = FillSolid; gcmask |= GCForeground | GCFillStyle; } else { - gcval[1].val = FillTiled; - gcval[2].ptr = (pointer)fill.pixmap; - gcval[3].val = tile_x_off; - gcval[4].val = tile_y_off; + int c=1; +#ifdef ROOTLESS_SAFEALPHA + gcval[c++].val = ((CARD32)-1) & ~RootlessAlphaMask(pWin->drawable.bitsPerPixel); + gcmask |= GCPlaneMask; +#endif + gcval[c++].val = FillTiled; + gcval[c++].ptr = (pointer)fill.pixmap; + gcval[c++].val = tile_x_off; + gcval[c++].val = tile_y_off; gcmask |= GCFillStyle | GCTile | GCTileStipXOrigin | GCTileStipYOrigin; } From da2aaee24a77e1a9e5c623af4a78ca6acc94b787 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 29 May 2009 14:27:46 -0700 Subject: [PATCH 06/13] GLX: Purge some glxint.h usage in glxcmds.c This is related to d0b249f1c5df81f3941d638f9625fe1e16c31807 in the 1.4 branch and was ok'd by krh (cherry picked from commit e587436cf2e1237813c924699ff0662aea3034e1) --- glx/glxcmds.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 1ae31515d..66b1ec7b0 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -877,6 +877,14 @@ int __glXDisp_CopyContext(__GLXclientState *cl, GLbyte *pc) return Success; } +enum { + GLX_VIS_CONFIG_UNPAIRED = 18, + GLX_VIS_CONFIG_PAIRED = 20 +}; + +enum { + GLX_VIS_CONFIG_TOTAL = GLX_VIS_CONFIG_UNPAIRED + GLX_VIS_CONFIG_PAIRED +}; int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) { @@ -885,7 +893,7 @@ int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) xGLXGetVisualConfigsReply reply; __GLXscreen *pGlxScreen; __GLXconfig *modes; - CARD32 buf[__GLX_TOTAL_CONFIG]; + CARD32 buf[GLX_VIS_CONFIG_TOTAL]; int p, i, err; __GLX_DECLARE_SWAP_VARIABLES; __GLX_DECLARE_SWAP_ARRAY_VARIABLES; @@ -894,8 +902,8 @@ int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) return err; reply.numVisuals = pGlxScreen->numVisuals; - reply.numProps = __GLX_TOTAL_CONFIG; - reply.length = (reply.numVisuals * __GLX_SIZE_CARD32 * __GLX_TOTAL_CONFIG) >> 2; + reply.numProps = GLX_VIS_CONFIG_TOTAL; + reply.length = (reply.numVisuals * __GLX_SIZE_CARD32 * GLX_VIS_CONFIG_TOTAL) >> 2; reply.type = X_Reply; reply.sequenceNumber = client->sequence; @@ -933,6 +941,8 @@ int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) buf[p++] = modes->stencilBits; buf[p++] = modes->numAuxBuffers; buf[p++] = modes->level; + + assert(p == GLX_VIS_CONFIG_UNPAIRED); /* ** Add token/value pairs for extensions. */ @@ -957,11 +967,11 @@ int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc) buf[p++] = 0; /* copy over visualSelectGroup (GLX_VISUAL_SELECT_GROUP_SGIX)? */ buf[p++] = 0; + assert(p == GLX_VIS_CONFIG_TOTAL); if (client->swapped) { - __GLX_SWAP_INT_ARRAY(buf, __GLX_TOTAL_CONFIG); + __GLX_SWAP_INT_ARRAY(buf, p); } - WriteToClient(client, __GLX_SIZE_CARD32 * __GLX_TOTAL_CONFIG, - (char *)buf); + WriteToClient(client, __GLX_SIZE_CARD32 * p, (char *)buf); } return Success; } From 5c8540d8cf9ebaafa7572cb2879d057cd3d15190 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 29 May 2009 14:49:05 -0700 Subject: [PATCH 07/13] GLX: Purge glxint.h usage Change (__GLXvisualConfig *) to (void *) in ABI compat stubs. (cherry picked from commit b4adec886c65e49cfbd30d1e3a41b613f75ed3f5) --- glx/glxscreens.c | 2 +- glx/glxserver.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/glx/glxscreens.c b/glx/glxscreens.c index 2b12049fb..3fff26866 100644 --- a/glx/glxscreens.c +++ b/glx/glxscreens.c @@ -225,7 +225,7 @@ glxGetScreen(ScreenPtr pScreen) } _X_EXPORT void GlxSetVisualConfigs(int nconfigs, - __GLXvisualConfig *configs, void **privates) + void *configs, void **privates) { /* We keep this stub around for the DDX drivers that still * call it. */ diff --git a/glx/glxserver.h b/glx/glxserver.h index a5ca0a20b..3e44b71fb 100644 --- a/glx/glxserver.h +++ b/glx/glxserver.h @@ -55,7 +55,6 @@ #define GL_GLEXT_PROTOTYPES /* we want prototypes */ #include #include -#include /* For glxscreens.h */ typedef struct __GLXdrawable __GLXdrawable; @@ -93,7 +92,7 @@ extern __GLXclientState *glxGetClient(ClientPtr pClient); void GlxExtensionInit(void); void GlxSetVisualConfigs(int nconfigs, - __GLXvisualConfig *configs, void **privates); + void *configs, void **privates); struct _glapi_table; void GlxSetRenderTables (struct _glapi_table *table); From 45530d16097459a756696e255ab4e72d6e51fbc4 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 29 May 2009 18:07:48 -0400 Subject: [PATCH 08/13] vfb: Fix depth setup. Initialize the depth corresponding to the root window before the pixmap-only depths. Otherwise you end up with the root window depth in the depth list twice, which is mildly confusing for clients and catastrophically confusing for PanoramiXConsolidate(). --- hw/vfb/InitOutput.c | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 8ab8bae64..b4b845593 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -863,8 +863,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) pbits = vfbAllocateFramebufferMemory(pvfb); if (!pbits) return FALSE; - miSetPixmapDepths (); - switch (pvfb->depth) { case 8: miSetVisualTypesAndMasks (8, @@ -876,20 +874,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) (1 << DirectColor)), 8, PseudoColor, 0, 0, 0); break; -#if 0 - /* 12bit PseudoColor with 12bit color resolution - * (to simulate SGI hardware and the 12bit PseudoColor emulation layer) */ - case 12: - miSetVisualTypesAndMasks (12, - ((1 << StaticGray) | - (1 << GrayScale) | - (1 << StaticColor) | - (1 << PseudoColor) | - (1 << TrueColor) | - (1 << DirectColor)), - 12, PseudoColor, 0, 0, 0); - break; -#endif case 15: miSetVisualTypesAndMasks (15, ((1 << TrueColor) | @@ -908,18 +892,10 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) (1 << DirectColor)), 8, TrueColor, 0xff0000, 0x00ff00, 0x0000ff); break; -#if 0 - /* 30bit TrueColor (to simulate Sun's XVR-1000/-4000 high quality - * framebuffer series) */ - case 30: - miSetVisualTypesAndMasks (30, - ((1 << TrueColor) | - (1 << DirectColor)), - 10, TrueColor, 0x3ff00000, 0x000ffc00, 0x000003ff); - break; -#endif } - + + miSetPixmapDepths (); + ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height, dpix, dpiy, pvfb->paddedWidth,pvfb->bitsPerPixel); #ifdef RENDER From eb97d125fb6adeff0b23c2460108e0587ba253e2 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 1 Jun 2009 15:50:50 -0400 Subject: [PATCH 09/13] doc: Remove mention of Kerberos replay cache from Xserver.1 The krb5 auth code is gone, so this is no longer relevant. --- doc/Xserver.man.pre | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre index e2673f7be..12b4cd486 100644 --- a/doc/Xserver.man.pre +++ b/doc/Xserver.man.pre @@ -560,9 +560,6 @@ Outline font directories .I /tmp/.X11-unix/X\fBn\fP Unix domain socket for display number \fBn\fP .TP 30 -.IR /tmp/rcX\fBn\fP -Kerberos 5 replay cache for display number \fBn\fP -.TP 30 .I /usr/adm/X\fBn\fPmsgs Error log file for display number \fBn\fP if run from \fIinit\fP(__adminmansuffix__) .TP 30 From 75795637c7160f1579dbe81c2d7600e85b1d141f Mon Sep 17 00:00:00 2001 From: Matthias Hopf Date: Tue, 2 Jun 2009 18:41:36 +0200 Subject: [PATCH 10/13] Revert "randr: Setting gamma: inverse logic looks more sane" This reverts commit 79138eec1b49cbaca6a16f2bdd8579b5828aeb28. --- 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 353b26874..0ab2f3df9 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); From ab5d1ae82ebd467d0a5b39821b286097865ba0c7 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2009 13:39:55 -0400 Subject: [PATCH 11/13] Remove some libXfont leftovers --- glx/glxcmds.c | 1 - glx/glxcmdsswap.c | 1 - hw/dmx/glxProxy/glxcmds.c | 1 - hw/dmx/glxProxy/glxcmdsswap.c | 1 - hw/dmx/glxProxy/glxutil.c | 1 - 5 files changed, 5 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 66b1ec7b0..d4ff7daf3 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -28,7 +28,6 @@ * Silicon Graphics, Inc. */ -#define FONT_PCF #ifdef HAVE_DIX_CONFIG_H #include #endif diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c index 4132b76bf..f1c0ce69f 100644 --- a/glx/glxcmdsswap.c +++ b/glx/glxcmdsswap.c @@ -28,7 +28,6 @@ * Silicon Graphics, Inc. */ -#define FONT_PCF #ifdef HAVE_DIX_CONFIG_H #include #endif diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c index f19239f31..31fd431e7 100644 --- a/hw/dmx/glxProxy/glxcmds.c +++ b/hw/dmx/glxProxy/glxcmds.c @@ -43,7 +43,6 @@ #undef Xrealloc #undef Xfree -#define FONT_PCF #include "glxserver.h" #include #include "g_disptab.h" diff --git a/hw/dmx/glxProxy/glxcmdsswap.c b/hw/dmx/glxProxy/glxcmdsswap.c index 702479f55..b3720f6f6 100644 --- a/hw/dmx/glxProxy/glxcmdsswap.c +++ b/hw/dmx/glxProxy/glxcmdsswap.c @@ -28,7 +28,6 @@ * Silicon Graphics, Inc. */ -#define FONT_PCF #include "glxserver.h" #include "glxutil.h" #include diff --git a/hw/dmx/glxProxy/glxutil.c b/hw/dmx/glxProxy/glxutil.c index 70f8b74bb..d0ce50486 100644 --- a/hw/dmx/glxProxy/glxutil.c +++ b/hw/dmx/glxProxy/glxutil.c @@ -28,7 +28,6 @@ * Silicon Graphics, Inc. */ -#define FONT_PCF #include "glxserver.h" #include #include From 20d9f11abfd6ce3630d9640ff7383c7e27196956 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 2 Jun 2009 13:49:09 -0400 Subject: [PATCH 12/13] Typo fix --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 696e03f65..6a78af9bf 100644 --- a/configure.ac +++ b/configure.ac @@ -589,7 +589,7 @@ AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (d AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: no)]), [XNEST=$enableval], [XNEST=no]) AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) -AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addigion to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) +AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) dnl kdrive and its subsystems AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no]) From 7f027d9dc0146e229802aeac342ea2dbab63264a Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Thu, 28 May 2009 20:57:36 +0200 Subject: [PATCH 13/13] kdrive: add protocol mouse option kdrive probes a lot of PS/2 protocols for the mouse device, which makes the mouse unusable for some seconds after X startup. This new "protocol" option allows forcing the mouse protocol. It can be used this way: Xfbdev -mouse mouse,,protocol=ps/2 -keybd keyboard Signed-off-by: Olivier Blin Signed-off-by: Peter Hutterer --- hw/kdrive/linux/mouse.c | 6 +++++- hw/kdrive/src/kdrive.h | 1 + hw/kdrive/src/kinput.c | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/hw/kdrive/linux/mouse.c b/hw/kdrive/linux/mouse.c index 02214b33e..6f399b586 100644 --- a/hw/kdrive/linux/mouse.c +++ b/hw/kdrive/linux/mouse.c @@ -961,7 +961,11 @@ MouseInit (KdPointerInfo *pi) km = (Kmouse *) xalloc (sizeof (Kmouse)); if (km) { km->iob.avail = km->iob.used = 0; - MouseFirstProtocol(km, "exps/2"); + MouseFirstProtocol(km, pi->protocol ? pi->protocol : "exps/2"); + /* MouseFirstProtocol sets state to MouseBroken for later protocol + * checks. Skip these checks if a protocol was supplied */ + if (pi->protocol) + km->state = MouseWorking; km->i_prot = 0; km->tty = isatty (fd); km->iob.fd = -1; diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h index c60559a89..ce47cf4fa 100644 --- a/hw/kdrive/src/kdrive.h +++ b/hw/kdrive/src/kdrive.h @@ -220,6 +220,7 @@ struct _KdPointerInfo { DeviceIntPtr dixdev; char *name; char *path; + char *protocol; InputOption *options; int inputClass; diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index 0d216a9b8..360739cac 100644 --- a/hw/kdrive/src/kinput.c +++ b/hw/kdrive/src/kinput.c @@ -1166,6 +1166,8 @@ KdParsePointerOptions (KdPointerInfo *pi) pi->transformCoordinates = FALSE; else if (!strcasecmp (option->key, "device")) pi->path = strdup(option->value); + else if (!strcasecmp (option->key, "protocol")) + pi->protocol = strdup(option->value); else ErrorF("Pointer option key (%s) of value (%s) not assigned!\n", option->key, option->value); @@ -1186,6 +1188,7 @@ KdParsePointer (char *arg) return NULL; pi->emulateMiddleButton = kdEmulateMiddleButton; pi->transformCoordinates = !kdRawPointerCoordinates; + pi->protocol = NULL; pi->nButtons = 5; /* XXX should not be hardcoded */ pi->inputClass = KD_MOUSE;