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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 Bkt_fJ 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;