From f7025b4baa1ba35ee796785641f04eac5bedb0a6 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 5 Oct 2011 17:37:34 +0200 Subject: mkfontscale pixman xserver xtrans libX11 libXdmcp libxcb libXmu mesa git update 5 oct 2011 --- xorg-server/include/dix-config.h.in | 9 +- xorg-server/include/eventstr.h | 11 +- xorg-server/include/exevents.h | 647 ++++++++++++++++--------------- xorg-server/include/input.h | 6 + xorg-server/include/inputstr.h | 23 +- xorg-server/include/inpututils.h | 2 +- xorg-server/include/misc.h | 8 +- xorg-server/include/protocol-versions.h | 2 +- xorg-server/include/ptrveloc.h | 32 +- xorg-server/include/xserver-properties.h | 2 + 10 files changed, 398 insertions(+), 344 deletions(-) (limited to 'xorg-server/include') diff --git a/xorg-server/include/dix-config.h.in b/xorg-server/include/dix-config.h.in index 5facb1106..7d6cb966c 100644 --- a/xorg-server/include/dix-config.h.in +++ b/xorg-server/include/dix-config.h.in @@ -178,9 +178,6 @@ /* Define to 1 if you have the `shmctl64' function. */ #undef HAVE_SHMCTL64 -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -402,6 +399,12 @@ /* Use libudev for input hotplug */ #undef CONFIG_UDEV +/* Use udev_monitor_filter_add_match_tag() */ +#undef HAVE_UDEV_MONITOR_FILTER_ADD_MATCH_TAG + +/* Use udev_enumerate_add_match_tag() */ +#undef HAVE_UDEV_ENUMERATE_ADD_MATCH_TAG + /* Use D-Bus for input hotplug */ #undef CONFIG_NEED_DBUS diff --git a/xorg-server/include/eventstr.h b/xorg-server/include/eventstr.h index 049688ca0..2de077fd2 100644 --- a/xorg-server/include/eventstr.h +++ b/xorg-server/include/eventstr.h @@ -95,8 +95,7 @@ struct _DeviceEvent struct { uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */ uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/ - int32_t data[MAX_VALUATORS]; /**< Valuator data */ - int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */ + double data[MAX_VALUATORS]; /**< Valuator data */ } valuators; struct { uint32_t base; /**< XKB base modifiers */ @@ -113,6 +112,7 @@ struct _DeviceEvent Window root; /**< Root window of the event */ int corestate; /**< Core key/button state BEFORE the event */ int key_repeat; /**< Internally-generated key repeat event */ + uint32_t flags; /**< Flags to be copied into the generated event */ }; @@ -198,11 +198,10 @@ struct _RawDeviceEvent } detail; struct { uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */ - int32_t data[MAX_VALUATORS]; /**< Valuator data */ - int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */ - int32_t data_raw[MAX_VALUATORS]; /**< Valuator data as posted */ - int32_t data_raw_frac[MAX_VALUATORS];/**< Fractional part for data_raw */ + double data[MAX_VALUATORS]; /**< Valuator data */ + double data_raw[MAX_VALUATORS]; /**< Valuator data as posted */ } valuators; + uint32_t flags; /**< Flags to be copied into the generated event */ }; #ifdef XQUARTZ diff --git a/xorg-server/include/exevents.h b/xorg-server/include/exevents.h index 6e5804080..4fe6c61a9 100644 --- a/xorg-server/include/exevents.h +++ b/xorg-server/include/exevents.h @@ -1,312 +1,335 @@ -/************************************************************ - -Copyright 1996 by Thomas E. Dickey - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of the above listed -copyright holder(s) not be used in advertising or publicity pertaining -to distribution of the software without specific, written prior -permission. - -THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD -TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE -LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -********************************************************/ - -/******************************************************************** - * Interface of 'exevents.c' - */ - -#ifndef EXEVENTS_H -#define EXEVENTS_H - -#include -#include "inputstr.h" - -/*************************************************************** - * Interface available to drivers * - ***************************************************************/ - -extern _X_EXPORT int InitProximityClassDeviceStruct( - DeviceIntPtr /* dev */); - -extern _X_EXPORT void InitValuatorAxisStruct( - DeviceIntPtr /* dev */, - int /* axnum */, - Atom /* label */, - int /* minval */, - int /* maxval */, - int /* resolution */, - int /* min_res */, - int /* max_res */, - int /* mode */); - -/* Input device properties */ -extern _X_EXPORT void XIDeleteAllDeviceProperties( - DeviceIntPtr /* device */ -); - -extern _X_EXPORT int XIDeleteDeviceProperty( - DeviceIntPtr /* device */, - Atom /* property */, - Bool /* fromClient */ -); - -extern _X_EXPORT int XIChangeDeviceProperty( - DeviceIntPtr /* dev */, - Atom /* property */, - Atom /* type */, - int /* format*/, - int /* mode*/, - unsigned long /* len*/, - const pointer /* value*/, - Bool /* sendevent*/ - ); - -extern _X_EXPORT int XIGetDeviceProperty( - DeviceIntPtr /* dev */, - Atom /* property */, - XIPropertyValuePtr* /* value */ -); - -extern _X_EXPORT int XISetDevicePropertyDeletable( - DeviceIntPtr /* dev */, - Atom /* property */, - Bool /* deletable */ -); - -extern _X_EXPORT long XIRegisterPropertyHandler( - DeviceIntPtr dev, - int (*SetProperty) (DeviceIntPtr dev, - Atom property, - XIPropertyValuePtr prop, - BOOL checkonly), - int (*GetProperty) (DeviceIntPtr dev, - Atom property), - int (*DeleteProperty) (DeviceIntPtr dev, - Atom property) -); - -extern _X_EXPORT void XIUnregisterPropertyHandler( - DeviceIntPtr dev, - long id -); - -extern _X_EXPORT Atom XIGetKnownProperty( - char* name -); - -extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev); - -extern _X_EXPORT int XIPropToInt( - XIPropertyValuePtr val, - int *nelem_return, - int **buf_return -); - -extern _X_EXPORT int XIPropToFloat( - XIPropertyValuePtr val, - int *nelem_return, - float **buf_return -); - -/**************************************************************************** - * End of driver interface * - ****************************************************************************/ - - -/** - * Attached to the devPrivates of each client. Specifies the version number as - * supported by the client. - */ -typedef struct _XIClientRec { - int major_version; - int minor_version; -} XIClientRec, *XIClientPtr; - - -typedef struct _GrabParameters { - int grabtype; /* GRABTYPE_CORE, etc. */ - unsigned int ownerEvents; - unsigned int this_device_mode; - unsigned int other_devices_mode; - Window grabWindow; - Window confineTo; - Cursor cursor; - unsigned int modifiers; -} GrabParameters; - - -extern int -UpdateDeviceState ( - DeviceIntPtr /* device */, - DeviceEvent* /* xE */); - -extern void -ProcessOtherEvent ( - InternalEvent* /* ev */, - DeviceIntPtr /* other */); - -extern void -DeviceFocusEvent( - DeviceIntPtr /* dev */, - int /* type */, - int /* mode */, - int /* detail */, - WindowPtr /* pWin */); - -extern int -CheckGrabValues( - ClientPtr /* client */, - GrabParameters* /* param */); - -extern int -GrabButton( - ClientPtr /* client */, - DeviceIntPtr /* dev */, - DeviceIntPtr /* modifier_device */, - int /* button */, - GrabParameters* /* param */, - GrabType /* grabtype */, - GrabMask* /* eventMask */); - -extern int -GrabKey( - ClientPtr /* client */, - DeviceIntPtr /* dev */, - DeviceIntPtr /* modifier_device */, - int /* key */, - GrabParameters* /* param */, - GrabType /* grabtype */, - GrabMask* /* eventMask */); - -extern int -GrabWindow( - ClientPtr /* client */, - DeviceIntPtr /* dev */, - int /* type */, - GrabParameters* /* param */, - GrabMask* /* eventMask */); - -extern int -SelectForWindow( - DeviceIntPtr /* dev */, - WindowPtr /* pWin */, - ClientPtr /* client */, - Mask /* mask */, - Mask /* exclusivemasks */); - -extern int -AddExtensionClient ( - WindowPtr /* pWin */, - ClientPtr /* client */, - Mask /* mask */, - int /* mskidx */); - -extern void -RecalculateDeviceDeliverableEvents( - WindowPtr /* pWin */); - -extern int -InputClientGone( - WindowPtr /* pWin */, - XID /* id */); - -extern int -SendEvent ( - ClientPtr /* client */, - DeviceIntPtr /* d */, - Window /* dest */, - Bool /* propagate */, - xEvent * /* ev */, - Mask /* mask */, - int /* count */); - -extern int -SetButtonMapping ( - ClientPtr /* client */, - DeviceIntPtr /* dev */, - int /* nElts */, - BYTE * /* map */); - -extern int -ChangeKeyMapping( - ClientPtr /* client */, - DeviceIntPtr /* dev */, - unsigned /* len */, - int /* type */, - KeyCode /* firstKeyCode */, - CARD8 /* keyCodes */, - CARD8 /* keySymsPerKeyCode */, - KeySym * /* map */); - -extern void -DeleteWindowFromAnyExtEvents( - WindowPtr /* pWin */, - Bool /* freeResources */); - -extern int -MaybeSendDeviceMotionNotifyHint ( - deviceKeyButtonPointer * /* pEvents */, - Mask /* mask */); - -extern void -CheckDeviceGrabAndHintWindow ( - WindowPtr /* pWin */, - int /* type */, - deviceKeyButtonPointer * /* xE */, - GrabPtr /* grab */, - ClientPtr /* client */, - Mask /* deliveryMask */); - -extern void -MaybeStopDeviceHint( - DeviceIntPtr /* dev */, - ClientPtr /* client */); - -extern int -DeviceEventSuppressForWindow( - WindowPtr /* pWin */, - ClientPtr /* client */, - Mask /* mask */, - int /* maskndx */); - -extern void -SendEventToAllWindows( - DeviceIntPtr /* dev */, - Mask /* mask */, - xEvent * /* ev */, - int /* count */); - -extern _X_HIDDEN void XI2EventSwap( - xGenericEvent * /* from */, - xGenericEvent * /* to */); - -/* For an event such as MappingNotify which affects client interpretation - * of input events sent by device dev, should we notify the client, or - * would it merely be irrelevant and confusing? */ -extern int -XIShouldNotify(ClientPtr client, DeviceIntPtr dev); - -extern void -XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, - DeviceChangedEvent *dce); - -extern int -XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client, - unsigned int len, unsigned char* mask); - -extern int -XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len); - -#endif /* EXEVENTS_H */ +/************************************************************ + +Copyright 1996 by Thomas E. Dickey + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the above listed +copyright holder(s) not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +********************************************************/ + +/******************************************************************** + * Interface of 'exevents.c' + */ + +#ifndef EXEVENTS_H +#define EXEVENTS_H + +#include +#include "inputstr.h" + +/*************************************************************** + * Interface available to drivers * + ***************************************************************/ + +/** + * Scroll flags for ::SetScrollValuator. + */ +enum ScrollFlags { + SCROLL_FLAG_NONE = 0, + /** + * Do not emulate legacy button events for valuator events on this axis. + */ + SCROLL_FLAG_DONT_EMULATE = (1 << 1), + /** + * This axis is the preferred axis for valuator emulation for this axis' + * scroll type. + */ + SCROLL_FLAG_PREFERRED = (1 << 2) +}; + +extern _X_EXPORT int InitProximityClassDeviceStruct( + DeviceIntPtr /* dev */); + +extern _X_EXPORT Bool InitValuatorAxisStruct( + DeviceIntPtr /* dev */, + int /* axnum */, + Atom /* label */, + int /* minval */, + int /* maxval */, + int /* resolution */, + int /* min_res */, + int /* max_res */, + int /* mode */); + +extern _X_EXPORT Bool SetScrollValuator( + DeviceIntPtr /* dev */, + int /* axnum */, + enum ScrollType /* type */, + double /* increment */, + int /* flags */); + +/* Input device properties */ +extern _X_EXPORT void XIDeleteAllDeviceProperties( + DeviceIntPtr /* device */ +); + +extern _X_EXPORT int XIDeleteDeviceProperty( + DeviceIntPtr /* device */, + Atom /* property */, + Bool /* fromClient */ +); + +extern _X_EXPORT int XIChangeDeviceProperty( + DeviceIntPtr /* dev */, + Atom /* property */, + Atom /* type */, + int /* format*/, + int /* mode*/, + unsigned long /* len*/, + const pointer /* value*/, + Bool /* sendevent*/ + ); + +extern _X_EXPORT int XIGetDeviceProperty( + DeviceIntPtr /* dev */, + Atom /* property */, + XIPropertyValuePtr* /* value */ +); + +extern _X_EXPORT int XISetDevicePropertyDeletable( + DeviceIntPtr /* dev */, + Atom /* property */, + Bool /* deletable */ +); + +extern _X_EXPORT long XIRegisterPropertyHandler( + DeviceIntPtr dev, + int (*SetProperty) (DeviceIntPtr dev, + Atom property, + XIPropertyValuePtr prop, + BOOL checkonly), + int (*GetProperty) (DeviceIntPtr dev, + Atom property), + int (*DeleteProperty) (DeviceIntPtr dev, + Atom property) +); + +extern _X_EXPORT void XIUnregisterPropertyHandler( + DeviceIntPtr dev, + long id +); + +extern _X_EXPORT Atom XIGetKnownProperty( + char* name +); + +extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev); + +extern _X_EXPORT int XIPropToInt( + XIPropertyValuePtr val, + int *nelem_return, + int **buf_return +); + +extern _X_EXPORT int XIPropToFloat( + XIPropertyValuePtr val, + int *nelem_return, + float **buf_return +); + +/**************************************************************************** + * End of driver interface * + ****************************************************************************/ + + +/** + * Attached to the devPrivates of each client. Specifies the version number as + * supported by the client. + */ +typedef struct _XIClientRec { + int major_version; + int minor_version; +} XIClientRec, *XIClientPtr; + + +typedef struct _GrabParameters { + int grabtype; /* GRABTYPE_CORE, etc. */ + unsigned int ownerEvents; + unsigned int this_device_mode; + unsigned int other_devices_mode; + Window grabWindow; + Window confineTo; + Cursor cursor; + unsigned int modifiers; +} GrabParameters; + + +extern int +UpdateDeviceState ( + DeviceIntPtr /* device */, + DeviceEvent* /* xE */); + +extern void +ProcessOtherEvent ( + InternalEvent* /* ev */, + DeviceIntPtr /* other */); + +extern void +DeviceFocusEvent( + DeviceIntPtr /* dev */, + int /* type */, + int /* mode */, + int /* detail */, + WindowPtr /* pWin */); + +extern int +CheckGrabValues( + ClientPtr /* client */, + GrabParameters* /* param */); + +extern int +GrabButton( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + DeviceIntPtr /* modifier_device */, + int /* button */, + GrabParameters* /* param */, + GrabType /* grabtype */, + GrabMask* /* eventMask */); + +extern int +GrabKey( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + DeviceIntPtr /* modifier_device */, + int /* key */, + GrabParameters* /* param */, + GrabType /* grabtype */, + GrabMask* /* eventMask */); + +extern int +GrabWindow( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + int /* type */, + GrabParameters* /* param */, + GrabMask* /* eventMask */); + +extern int +SelectForWindow( + DeviceIntPtr /* dev */, + WindowPtr /* pWin */, + ClientPtr /* client */, + Mask /* mask */, + Mask /* exclusivemasks */); + +extern int +AddExtensionClient ( + WindowPtr /* pWin */, + ClientPtr /* client */, + Mask /* mask */, + int /* mskidx */); + +extern void +RecalculateDeviceDeliverableEvents( + WindowPtr /* pWin */); + +extern int +InputClientGone( + WindowPtr /* pWin */, + XID /* id */); + +extern int +SendEvent ( + ClientPtr /* client */, + DeviceIntPtr /* d */, + Window /* dest */, + Bool /* propagate */, + xEvent * /* ev */, + Mask /* mask */, + int /* count */); + +extern int +SetButtonMapping ( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + int /* nElts */, + BYTE * /* map */); + +extern int +ChangeKeyMapping( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + unsigned /* len */, + int /* type */, + KeyCode /* firstKeyCode */, + CARD8 /* keyCodes */, + CARD8 /* keySymsPerKeyCode */, + KeySym * /* map */); + +extern void +DeleteWindowFromAnyExtEvents( + WindowPtr /* pWin */, + Bool /* freeResources */); + +extern int +MaybeSendDeviceMotionNotifyHint ( + deviceKeyButtonPointer * /* pEvents */, + Mask /* mask */); + +extern void +CheckDeviceGrabAndHintWindow ( + WindowPtr /* pWin */, + int /* type */, + deviceKeyButtonPointer * /* xE */, + GrabPtr /* grab */, + ClientPtr /* client */, + Mask /* deliveryMask */); + +extern void +MaybeStopDeviceHint( + DeviceIntPtr /* dev */, + ClientPtr /* client */); + +extern int +DeviceEventSuppressForWindow( + WindowPtr /* pWin */, + ClientPtr /* client */, + Mask /* mask */, + int /* maskndx */); + +extern void +SendEventToAllWindows( + DeviceIntPtr /* dev */, + Mask /* mask */, + xEvent * /* ev */, + int /* count */); + +extern _X_HIDDEN void XI2EventSwap( + xGenericEvent * /* from */, + xGenericEvent * /* to */); + +/* For an event such as MappingNotify which affects client interpretation + * of input events sent by device dev, should we notify the client, or + * would it merely be irrelevant and confusing? */ +extern int +XIShouldNotify(ClientPtr client, DeviceIntPtr dev); + +extern void +XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, + DeviceChangedEvent *dce); + +extern int +XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client, + unsigned int len, unsigned char* mask); + +extern int +XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len); + +#endif /* EXEVENTS_H */ diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index 0258f4f18..6ba1ab200 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -68,6 +68,7 @@ SOFTWARE. #define POINTER_ACCELERATE (1 << 3) #define POINTER_SCREEN (1 << 4) /* Data in screen coordinates */ #define POINTER_NORAW (1 << 5) /* Don't generate RawEvents */ +#define POINTER_EMULATED (1 << 6) /* Event was emulated from another event */ /*int constants for pointer acceleration schemes*/ #define PtrAccelNoOp 0 @@ -583,6 +584,9 @@ extern _X_EXPORT void valuator_mask_set_range(ValuatorMask *mask, extern _X_EXPORT void valuator_mask_set(ValuatorMask *mask, int valuator, int data); +extern _X_EXPORT void valuator_mask_set_double(ValuatorMask *mask, + int valuator, + double data); extern _X_EXPORT void valuator_mask_zero(ValuatorMask *mask); extern _X_EXPORT int valuator_mask_size(const ValuatorMask *mask); extern _X_EXPORT int valuator_mask_isset(const ValuatorMask *mask, int bit); @@ -591,6 +595,8 @@ extern _X_EXPORT int valuator_mask_num_valuators(const ValuatorMask *mask); extern _X_EXPORT void valuator_mask_copy(ValuatorMask *dest, const ValuatorMask *src); extern _X_EXPORT int valuator_mask_get(const ValuatorMask *mask, int valnum); +extern _X_EXPORT double valuator_mask_get_double(const ValuatorMask *mask, + int valnum); /* InputOption handling interface */ extern _X_EXPORT InputOption* input_option_new(InputOption *list, const char *key, const char *value); diff --git a/xorg-server/include/inputstr.h b/xorg-server/include/inputstr.h index 480e95671..9d4108ef5 100644 --- a/xorg-server/include/inputstr.h +++ b/xorg-server/include/inputstr.h @@ -74,6 +74,16 @@ extern _X_EXPORT int CountBits(const uint8_t *mask, int len); #define XI2LASTEVENT 17 /* XI_RawMotion */ #define XI2MASKSIZE ((XI2LASTEVENT + 7)/8) /* no of bits for masks */ +/** + * Scroll types for ::SetScrollValuator and the scroll type in the + * ::ScrollInfoPtr. + */ +enum ScrollType { + SCROLL_TYPE_NONE = 0, /**< Not a scrolling valuator */ + SCROLL_TYPE_VERTICAL = 8, + SCROLL_TYPE_HORIZONTAL = 9, +}; + /** * This struct stores the core event mask for each client except the client * that created the window. @@ -252,6 +262,12 @@ typedef struct _KeyClassRec { struct _XkbSrvInfo *xkbInfo; } KeyClassRec, *KeyClassPtr; +typedef struct _ScrollInfo { + enum ScrollType type; + double increment; + int flags; +} ScrollInfo, *ScrollInfoPtr; + typedef struct _AxisInfo { int resolution; int min_resolution; @@ -260,6 +276,7 @@ typedef struct _AxisInfo { int max_value; Atom label; CARD8 mode; + ScrollInfo scroll; } AxisInfo, *AxisInfoPtr; typedef struct _ValuatorAccelerationRec { @@ -283,6 +300,8 @@ typedef struct _ValuatorClassRec { unsigned short numAxes; double *axisVal; /* always absolute, but device-coord system */ ValuatorAccelerationRec accelScheme; + int h_scroll_axis; /* horiz smooth-scrolling axis */ + int v_scroll_axis; /* vert smooth-scrolling axis */ } ValuatorClassRec; typedef struct _ButtonClassRec { @@ -521,10 +540,10 @@ typedef struct _DeviceIntRec { * remainder supports acceleration */ struct { - int valuators[MAX_VALUATORS]; - float remainder[MAX_VALUATORS]; + double valuators[MAX_VALUATORS]; int numValuators; DeviceIntPtr slave; + ValuatorMask *scroll; } last; /* Input device property handling. */ diff --git a/xorg-server/include/inpututils.h b/xorg-server/include/inpututils.h index 63e1a263a..47e242d87 100644 --- a/xorg-server/include/inpututils.h +++ b/xorg-server/include/inpututils.h @@ -34,7 +34,7 @@ struct _ValuatorMask { int8_t last_bit; /* highest bit set in mask */ uint8_t mask[(MAX_VALUATORS + 7)/8]; - int valuators[MAX_VALUATORS]; /* valuator data */ + double valuators[MAX_VALUATORS]; /* valuator data */ }; extern void verify_internal_event(const InternalEvent *ev); diff --git a/xorg-server/include/misc.h b/xorg-server/include/misc.h index 1fea73ec3..dc039113d 100644 --- a/xorg-server/include/misc.h +++ b/xorg-server/include/misc.h @@ -261,14 +261,16 @@ version_compare(uint16_t a_major, uint16_t a_minor, #define SwapRestL(stuff) \ SwapLongs((CARD32 *)(stuff + 1), LengthRestL(stuff)) -#ifdef __GNUC__ +#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) void __attribute__((error("wrong sized variable passed to swap"))) wrong_size(void); #else static inline void wrong_size(void) { } +#endif -static inline void __builtin_constant_p(int x) +#if !(defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C < 0x590))) +static inline int __builtin_constant_p(int x) { return 0; } @@ -277,7 +279,7 @@ static inline void __builtin_constant_p(int x) /* byte swap a 32-bit value */ static inline void swap_uint32(uint32_t *x) { - char n = ((char *) &x)[0]; + char n = ((char *) x)[0]; ((char *) x)[0] = ((char *) x)[3]; ((char *) x)[3] = n; n = ((char *) x)[1]; diff --git a/xorg-server/include/protocol-versions.h b/xorg-server/include/protocol-versions.h index 7b7a9f53c..832bcf756 100644 --- a/xorg-server/include/protocol-versions.h +++ b/xorg-server/include/protocol-versions.h @@ -127,7 +127,7 @@ /* X Input */ #define SERVER_XI_MAJOR_VERSION 2 -#define SERVER_XI_MINOR_VERSION 0 +#define SERVER_XI_MINOR_VERSION 1 /* XKB */ #define SERVER_XKB_MAJOR_VERSION 1 diff --git a/xorg-server/include/ptrveloc.h b/xorg-server/include/ptrveloc.h index 6ca309c8c..4f76b0094 100644 --- a/xorg-server/include/ptrveloc.h +++ b/xorg-server/include/ptrveloc.h @@ -47,9 +47,9 @@ struct _DeviceVelocityRec; * profile * returns actual acceleration depending on velocity, acceleration control,... */ -typedef float (*PointerAccelerationProfileFunc) +typedef double (*PointerAccelerationProfileFunc) (DeviceIntPtr dev, struct _DeviceVelocityRec* vel, - float velocity, float threshold, float accelCoeff); + double velocity, double threshold, double accelCoeff); /** * a motion history, with just enough information to @@ -57,8 +57,8 @@ typedef float (*PointerAccelerationProfileFunc) * a more or less straight line */ typedef struct _MotionTracker { - int dx, dy; /* accumulated delta for each axis */ - int time; /* time of creation */ + double dx, dy; /* accumulated delta for each axis */ + int time; /* time of creation */ int dir; /* initial direction bitfield */ } MotionTracker, *MotionTrackerPtr; @@ -69,17 +69,17 @@ typedef struct _DeviceVelocityRec { MotionTrackerPtr tracker; int num_tracker; int cur_tracker; /* current index */ - float velocity; /* velocity as guessed by algorithm */ - float last_velocity; /* previous velocity estimate */ - int last_dx; /* last time-difference */ - int last_dy ; /* phase of last/current estimate */ - float corr_mul; /* config: multiply this into velocity */ - float const_acceleration; /* config: (recipr.) const deceleration */ - float min_acceleration; /* config: minimum acceleration */ + double velocity; /* velocity as guessed by algorithm */ + double last_velocity; /* previous velocity estimate */ + double last_dx; /* last time-difference */ + double last_dy; /* phase of last/current estimate */ + double corr_mul; /* config: multiply this into velocity */ + double const_acceleration; /* config: (recipr.) const deceleration */ + double min_acceleration; /* config: minimum acceleration */ short reset_time; /* config: reset non-visible state after # ms */ short use_softening; /* config: use softening of mouse values */ - float max_rel_diff; /* config: max. relative difference */ - float max_diff; /* config: max. difference */ + double max_rel_diff; /* config: max. relative difference */ + double max_diff; /* config: max. difference */ int initial_range; /* config: max. offset used as initial velocity */ Bool average_accel; /* config: average acceleration over velocity */ PointerAccelerationProfileFunc Profile; @@ -107,11 +107,11 @@ extern _X_EXPORT void InitTrackers(DeviceVelocityPtr vel, int ntracker); extern _X_EXPORT BOOL -ProcessVelocityData2D(DeviceVelocityPtr vel, int dx, int dy, int time); +ProcessVelocityData2D(DeviceVelocityPtr vel, double dx, double dy, int time); -extern _X_EXPORT float +extern _X_EXPORT double BasicComputeAcceleration(DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, float threshold, float acc); + double velocity, double threshold, double acc); extern _X_EXPORT void FreeVelocityData(DeviceVelocityPtr vel); diff --git a/xorg-server/include/xserver-properties.h b/xorg-server/include/xserver-properties.h index bf50042d0..18b54ba32 100644 --- a/xorg-server/include/xserver-properties.h +++ b/xorg-server/include/xserver-properties.h @@ -77,6 +77,8 @@ #define AXIS_LABEL_PROP_REL_DIAL "Rel Dial" #define AXIS_LABEL_PROP_REL_WHEEL "Rel Vert Wheel" #define AXIS_LABEL_PROP_REL_MISC "Rel Misc" +#define AXIS_LABEL_PROP_REL_VSCROLL "Rel Vert Scroll" +#define AXIS_LABEL_PROP_REL_HSCROLL "Rel Horiz Scroll" /* * Absolute axes -- cgit v1.2.3