diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | hw/xfree86/xf8_16bpp/xf8_16module.c | 79 | ||||
-rw-r--r-- | hw/xgl/glx/xglx.c | 43 |
3 files changed, 127 insertions, 1 deletions
@@ -1,3 +1,9 @@ +2006-04-05 David Reveman <davidr@novell.com> + + * hw/xgl/glx/xglx.c: Add xglxPointerProc and + xglxChangePointerControl so that acceleration and threshold + can be set properly. + 2006-04-04 David Reveman <davidr@novell.com> * hw/xgl/glx/xglxorg.c (xglxInitXorg): No need to try and disable diff --git a/hw/xfree86/xf8_16bpp/xf8_16module.c b/hw/xfree86/xf8_16bpp/xf8_16module.c new file mode 100644 index 000000000..d8bfbdedd --- /dev/null +++ b/hw/xfree86/xf8_16bpp/xf8_16module.c @@ -0,0 +1,79 @@ +/* + * Copyright 2006 Adam Jackson. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifdef HAVE_XORG_CONFIG_H +#include <xorg-config.h> +#endif + +#include <X11/X.h> +#include <X11/Xmd.h> +#include "misc.h" +#include "servermd.h" +#include "scrnintstr.h" +#include "resource.h" +#include "fb.h" +#include "fboverlay.h" +#include "cfb8_16.h" + +_X_EXPORT Bool +cfb8_16ScreenInit(ScreenPtr pScreen, pointer pbits16, pointer pbits8, + int xsize, int ysize, int dpix, int dpiy, + int width16, int width8) +{ + return + (fbOverlaySetupScreen(pScreen, pbits16, pbits8, xsize, ysize, + dpix, dpiy, width16, width8, 16, 8) && + fbOverlayFinishScreenInit(pScreen, pbits16, pbits8, xsize, ysize, + dpix, dpiy, width16, width8, 16, 8, 16, 8)); +} + +#ifdef XFree86LOADER +#include "xf86Module.h" + +static MODULESETUPPROTO(xf8_16bppSetup); + +static XF86ModuleVersionInfo VersRec = { + "xf8_16bpp", + MODULEVENDORSTRING, + MODINFOSTRING1, + MODINFOSTRING2, + XORG_VERSION_CURRENT, + 2, 0, 0, + ABI_CLASS_ANSIC, /* Only need the ansic layer */ + ABI_ANSIC_VERSION, + NULL, + {0,0,0,0} /* signature, to be patched into the file by a tool */ +}; + +_X_EXPORT XF86ModuleData xf8_16bppModuleData = { + &VersRec, + xf8_16bppSetup, + NULL +}; + +static pointer +xf8_16bppSetup(pointer module, pointer opts, int *errmaj, int *errmin) +{ + return (pointer)LoadSubModule(module, "fb", NULL, NULL, NULL, NULL, + errmaj, errmin); +} +#endif diff --git a/hw/xgl/glx/xglx.c b/hw/xgl/glx/xglx.c index bf2f9b439..2f0f9909b 100644 --- a/hw/xgl/glx/xglx.c +++ b/hw/xgl/glx/xglx.c @@ -94,6 +94,8 @@ XkbGetControls (Display *dpy, #define XGLX_DEFAULT_SCREEN_WIDTH 800 #define XGLX_DEFAULT_SCREEN_HEIGHT 600 +#define MAX_BUTTONS 64 + typedef struct _xglxScreen { Window win, root; Colormap colormap; @@ -1263,6 +1265,45 @@ xglxLegalModifier (unsigned int key, return TRUE; } +static void +xglxChangePointerControl (DeviceIntPtr pDev, + PtrCtrl *ctrl) +{ + XChangePointerControl (xdisplay, TRUE, TRUE, + ctrl->num, ctrl->den, ctrl->threshold); +} + +static int +xglxPointerProc (DeviceIntPtr pDevice, + int onoff) +{ + BYTE map[MAX_BUTTONS + 1]; + DevicePtr pDev = (DevicePtr) pDevice; + int i, nMap; + + switch (onoff) { + case DEVICE_INIT: + nMap = XGetPointerMapping (xdisplay, map, MAX_BUTTONS); + for (i = 0; i <= nMap; i++) + map[i] = i; + + InitPointerDeviceStruct (pDev, map, nMap, + miPointerGetMotionEvents, + xglxChangePointerControl, + miPointerGetMotionBufferSize ()); + break; + case DEVICE_ON: + pDev->on = TRUE; + break; + case DEVICE_OFF: + case DEVICE_CLOSE: + pDev->on = FALSE; + break; + } + + return Success; +} + void xglxProcessInputEvents (void) { @@ -1276,7 +1317,7 @@ xglxInitInput (int argc, { DeviceIntPtr pKeyboard, pPointer; - pPointer = AddInputDevice (xglMouseProc, TRUE); + pPointer = AddInputDevice (xglxPointerProc, TRUE); pKeyboard = AddInputDevice (xglxKeybdProc, TRUE); RegisterPointerDevice (pPointer); |