Commit Graph

239 Commits

Author SHA1 Message Date
Peter Hutterer
0b729051c0 Merge branch 'master' into mpx
Conflicts:

	Xi/extinit.c
	Xi/grabdev.c
	Xi/setmode.c
	Xi/ungrdev.c
	dix/devices.c
	dix/events.c
	dix/getevents.c
	include/dix.h
	mi/midispcur.c
	mi/misprite.c
	xkb/xkbActions.c
	xkb/xkbEvents.c
	xkb/xkbPrKeyEv.c
2007-11-07 15:37:23 +10:30
Eamon Walsh
a52c9b2a59 Merge branch 'master' into XACE-SELINUX
Conflicts:

	dix/dispatch.c
	dix/property.c
	hw/xfree86/common/xf86VidMode.c
	include/xkbsrv.h
	render/glyph.c
	xkb/xkbActions.c
2007-11-05 19:08:36 -05:00
Peter Hutterer
8ead41388e xfree86: wrap keyboard devices for XKB.
Call ProcessOtherEvents first, then for all keyboard devices let them be
wrapped by XKB. This way all XI events will go through XKB.

Note that the VCK is still not wrapped, so core events will bypass XKB.

(cherry picked from commit d627061b48)
2007-10-28 17:31:07 +02:00
Peter Hutterer
5fe9bfd23f xfree86: NIDR: don't call PairDevices explicitly.
set isMaster to FALSE explicitly.

Pairing isn't necessary, attachment should be done in EnableDevices.
2007-10-16 18:23:48 +09:30
Peter Hutterer
271d4c3d62 xfree86: remove XI86_SHARED_POINTER flag.
Not needed anymore. By default, all devices are slaves of first master device.
2007-10-16 15:50:07 +09:30
Peter Hutterer
e9f149fb56 Fix up detritus from removing GetPairedPointer/Keyboard. 2007-10-16 14:24:20 +09:30
Peter Hutterer
45ec6cd1fb xfree86: fix DGA to use the correct devices.
DGAStealXXXEvent modified to take in device argument.

The evdev driver only sends one valuator when only one axis changed. We need
to check for DGA either way (xf86PostMotionEventP), otherwise we lose purely
horizontal/vertical movements.

Note that DGA does not do XI events.
2007-10-02 13:19:07 +09:30
Peter Hutterer
113011221a Xi, xfree86: Remove leftovers of the XI wrapper code. 2007-10-01 21:42:01 +09:30
Eamon Walsh
5c03d13181 xace: add new hooks + access controls: XInput extension.
Introduces new dix API to lookup a device, dixLookupDevice(), which
replaces LookupDeviceIntRec and LookupDevice.
2007-09-28 08:02:00 -04:00
Peter Hutterer
e2cb851566 xfree86: pass in the XKB event processing proc instead of the XI one.
We need to pass ProcessPointerEvent or ProcessKeyboardEvent to
XkbSetExtension, otherwise we lose the xkb layer.
2007-09-26 18:01:17 +09:30
Peter Hutterer
340911d724 Wrap core event handling through ProcessOtherEvents.
When processing events from the EQ, _always_ call the processInputProc of the
matching device. For XI devices, this proc is wrapped in three layers.
Core event handling is wrapped by XI event handling, which is wrapped by XKB.
A core event now passes through XKB -> XI -> DIX.

This gets rid of a sync'd grab problem: with the previous code, core events
did disappear during a sync'd device grab on account of mieqProcessInputEvents
calling the processInputProc of the VCP/VCK instead of the actual device. This
lead to the event being processed as normal instead of being enqueued for
later replaying.
2007-09-26 15:12:49 +09:30
Peter Hutterer
d627061b48 xfree86: wrap keyboard devices for XKB.
Call ProcessOtherEvents first, then for all keyboard devices let them be
wrapped by XKB. This way all XI events will go through XKB.

Note that the VCK is still not wrapped, so core events will bypass XKB.
2007-09-06 18:57:00 +09:30
Peter Hutterer
f367285fd5 Merge branch 'master' into mpx
Conflicts:

	Xi/exevents.c
	dix/devices.c
	dix/getevents.c
	include/dix.h
	mi/mieq.c
2007-08-12 15:31:10 +09:30
Daniel Stone
0e0174d45e XFree86: Allow disabling of HAL
If NoAutoAddDevices is given as a server flag, then no devices will be added
from HAL events at all.  If NoAutoEnableDevices is given, then the devices will
be added (and the DevicePresenceNotify sent), but not enabled, thus leaving
policy up to the client.
2007-08-01 03:33:06 +03:00
Daniel Stone
cd8e99e56e Input: Don't enable devices when we open them
Thanks to Xi's braindead design, it's otherwise impossible to query input
devices without enabling them.  Hurrah.
2007-08-01 03:33:06 +03:00
Daniel Stone
89f628394f XFree86: Input: Fix whitespace 2007-08-01 03:33:05 +03:00
Daniel Stone
7c9e8fd56e Input: Allow enabling and disabling of devices
Add DEVICE_ENABLE to KDrive and XFree86 to allow us to enable and disable
devices on the fly.
2007-08-01 01:53:31 +03:00
Adam Jackson
4d76075dbb Death to RCS tags. 2007-06-29 14:06:52 -04:00
Tiago Vignatti
38f8e53668 Janitor work. Remove 'defined but not used' warnings from xorg and other cosmetic. 2007-06-27 03:19:37 -03:00
Peter Hutterer
1f97a76476 Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	hw/xfree86/common/xf86Xinput.c
	hw/xfree86/loader/xf86sym.c
	mi/mieq.c
2007-06-19 17:20:52 +09:30
Zephaniah E. Hull
562ca3f2f9 In NewInputDeviceRequest, only call EnableDevice if xf86Screens[0]->vtSema is
true, preventing unwanted behavior in the case where a device is added while
the user is in a different VT.
2007-06-18 12:00:49 -04:00
Zephaniah E. Hull
75dece08fb xf86PostMotionEvents[P] calls xf86SendDragEvents, xf86SendDragEvents
unconditionally checks device->button->buttonsDown.

Let's make it possible to have a device with motion, but no buttons.

Without segfaulting.
2007-06-04 09:09:20 -04:00
Zephaniah E. Hull
fbb9b20395 Let's not do a calloc and a free on every call to xf86PostMotionEvents. 2007-06-04 06:59:42 -04:00
Zephaniah E. Hull
3f4295e643 Add xf86PostMotionEventP, takes a pointer instead of a variable number of
arguments.

Bump input ABI to 1.1 since we export this.
2007-06-04 06:48:06 -04:00
Daniel Stone
9a7aaeb3f6 XFree86: Input: Assume core events per default
Assume that a device will be sending core events, unless explicitly
specified otherwise.
2007-06-03 18:38:53 +03:00
Daniel Stone
94361cbba7 XFree86: Input: Perform case-insensitive comparisons on option names 2007-06-03 18:38:42 +03:00
Peter Hutterer
58c0fd2927 Adjust EQ to support long events.
Add RawDeviceEvent (pointers only for now).

This commit changes the event queue to use EventLists instead of xEvent
arrays. Only EQ is affected, event delivery still uses xEvent* (look for
comment in mieqProcessInputEvent).

RawDeviceEvents deliver driver information to the client, without clipping or
acceleration.
2007-05-02 13:50:09 +09:30
Peter Hutterer
f28eea0647 Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	dix/events.c
2007-04-27 16:34:36 +09:30
Peter Hutterer
09436fb7c3 Disable devices before removing, remove unrecoverable devices. 2007-04-24 23:11:44 +09:30
Peter Hutterer
c7e2ba0c9b Use DevicePresence events to tell the client about enabled/disabled devices.
Include the device id in the event sent to the client.
2007-04-24 23:11:44 +09:30
Peter Hutterer
d4dad6f84f Merge branch 'master' into mpx
Conflicts:

	configure.ac
	dix/events.c
	hw/xfree86/common/xf86Xinput.c
2007-04-12 11:11:03 +09:30
Remigiusz Marcinkiewicz
aecbc71214 Input: Allow a pointer to a device to be returned in NIDR
Allow a pointer to the first device added to be returned, so we know which
device(s) were added by the NIDR call.
2007-04-11 00:38:16 +03:00
Magnus Vigerlöf
82962bbae2 Input: Add DeleteInputDeviceRequest
Add DIDR, which asks the DDX to remove a device, analogous to
NewInputDeviceRequest.  Only implemented for XFree86 at the moment.
2007-04-10 23:58:20 +03:00
Magnus Vigerlöf
7b82a836c6 XFree86: Fix memory leaks, option parsing, in NewInputDeviceRequest
Plugged some possible memory leaks, and added some more checks on the
options, particular for driver/identifier.  Added an unwind.
2007-04-10 23:58:20 +03:00
Peter Hutterer
e8777a91f3 Merge branch 'master' into mpx
Conflicts:

	Xi/closedev.c
	Xi/exevents.c
	Xi/extinit.c
	Xi/listdev.c
	dix/window.c
	hw/xfree86/common/xf86Xinput.c
	include/extinit.h
	mi/mipointer.c
2007-04-02 15:36:26 +09:30
Peter Hutterer
63d8f01819 dix: Fix wrong cursor refcount.
Calloc cursor struct to ensure devPrivates are zeroed out and don't
        increase the refcnt for devices automatically when allocating a new
        cursor. Use new DeviceIsPointerType() to detect if device is a pointer
        _before_ device has been activated and can thus be identified and set
        up grab functions accordingly. This way we can increase the refcnt
        when we get a pointer grab.
2007-03-30 14:59:43 +09:30
Peter Hutterer
5f9c10e8da Clean up DeviceIntPtr, prepare for Server 1.4 ABI. Move sprite-related
information into a new SpriteInfoRec, remove isMPDev flag.
2007-03-25 15:00:03 +09:30
Daniel Stone
3e9f7a5504 XFree86 DGA: Guard against NULL pointer dereferences.
Ass, u, me ...
2007-03-21 02:35:31 +02:00
Daniel Stone
9398d62f27 XFree86 input: Add backwards compatibility for motion history
Add the old motion history API back, as a shim around the new mi API.
2007-03-21 00:18:24 +02:00
Daniel Stone
0f75c47e0c xfree86 input: Re-enable DGA support
Re-enable DGA support for relative mouse motion.
2007-03-21 00:12:02 +02:00
Peter Hutterer
65b0eb60b0 Xi: move IsPointerDevice into dix.
dix:    IsPointerDevice and IsKeyboardDevice, use same ways to identify type
        of device as XI does for the XListInputDevices reply.
        Autopair each non-pointer device with VCP when activating, pair with
        real device after activation.
        Don't return non-keyboard devices when calling GetPairedKeyboard or
        PickKeyboard, otherwise we segfault for 'evdev brain'.
2007-03-16 15:52:24 +10:30
Peter Hutterer
39aa791771 dix: Add GuessFreePointerDevice(). Runs through device list and tries to
find a pointer that hasn't been paired yet.

xfree86:  Use GuessFreePointerDevice() for newly connected non-sprite devices.
2007-03-05 15:31:16 +10:30
Peter Hutterer
e43b8a4e40 dix: Add ClientPointer to client, used for picking which pointer to use in
ambiguious request. PickPointer and PickKeyboard are used for getting
        the appropriate pointer when situation is unclear.
        Fix some issues with InitializeSprite.

dix, xfree86: Remove last traces of InitSprite.
2007-03-02 15:21:46 +10:30
Peter Hutterer
43bd35fcf8 dix: Remove InitSprite, work can be done by InitializeSprite.
Free sprite struct if a spriteOwner is paired.

xfree86: Use PairDevices instead of passing booleans around when creating a
         sprite.

Xext:    Switch back to using LookupPointer/KeyboardDevice instead of
         inputInfo.xyz.
2007-03-01 17:19:37 +10:30
Peter Hutterer
bc4ae25433 xfree86: Don't initialize sprites for devices that don't own a sprite (stops
keyboard hotplug segfaults)
2007-02-23 12:06:51 +10:30
Peter Hutterer
f6c3b9fa97 xfree86: mouse and keyboard hotplugging support. New mouse devices will get
new cursors,  keyboard devices use VCP's focus until paired.
2007-02-15 13:51:20 +10:30
Peter Hutterer
4aaaa70d1b Xi: Adding ChangePointerKeyboardPairing request
Adding PointerKeyboardPairingChanged event
	Correct error values for XWarpDevicePointer

dix:	Adding device argument to SendMappingNotify
	Adding spriteOwner flag to devices
2007-01-29 18:23:24 +10:30
Peter Hutterer
a7ab793293 xfree86: fix XI86_SHARED_POINTER flag setting 2007-01-08 17:31:16 +10:30
Peter Hutterer
9fd2f167ec xfree86: fix xf86ProcessCommonOptions() core and shared pointer assignment
TAG: mpx-0.3.0
2006-12-20 16:30:36 +10:30
Peter Hutterer
b55e1239ac xfree86: fix xf86ActivateDevice(): only set to MP device if not a keyboard 2006-12-20 14:43:38 +10:30
Peter Hutterer
202b46eb6b xfree86: Changing "IsMPDevice" to "SharedPointer" option. Devices will default
to MP devices.

Xi:	Adding QueryDevicePointer request/reply
	Adding WarpDevicePointer request/reply
2006-12-20 13:05:53 +10:30
Peter Hutterer
2d0a63126b Merge branch 'master' of git://anongit.freedesktop.org/git/xorg/xserver 2006-12-19 10:31:40 +10:30
Peter Hutterer
ae3c24da34 dix: Moving SpriteRec into DeviceIntRec
removing global sprite structure
	beginning to remove MPX ifdefs

xnest:  Fix to make xnest compile again
2006-12-11 18:09:59 +10:30
Daniel Stone
8884a73a3f xfree86/input: re-add support for disabling drag events 2006-12-06 23:24:24 +02:00
Peter Hutterer
5388423eb0 mieq: EQ processing handles MP devices
global: MPX define added to xorg-server.h.in

xfree86/common: small fix to avoid byte overflow
2006-11-16 20:43:27 +10:30
Peter Hutterer
c957a16180 dix: added isMPdev field to _DeviceIntRec, is used in GetPointerEvents()
mieq:   avoid merging events from different devices in mieqEnqueue()

xfree86/common
        isMPdev field used from xf86ActivateDevice(), xf86PostMotionEvent()
        and xf86PostButtonEvent()
2006-11-16 15:11:14 +10:30
Peter Hutterer
7ce2dc5784 dix:
merge with code cleanup from master
        GetPointerEvents treats events in the same way as XINPUT devices when flag
        has POINTER_MULTIPOINTER set.

xfree86/common:
    added XI86_MP_DEVICE flag and parsing in xf86ProcessCommonOptions
    added POINTER_MULTIPOINTER define. Is used in xf86PostMotionEvent and
    xf86PostButtonEvent for the flags that are passed into GetPointerEvents()

global:
    added flags to configure.ac to enable/disable MPX define
    added flags to dix-config.h.in to define MPX
2006-11-16 12:51:08 +10:30
Peter Hutterer
bffb1f9b67 removed unused variables drag and local from xf86PostMotionEvent 2006-11-15 17:53:13 +10:30
Daniel Stone
96e32805d1 Xi: disallow changing core keyboard and pointer
Just short-circuit the change core keyboard/pointer requests.
2006-10-29 03:43:34 +03:00
Daniel Stone
0514d53e10 xfree86: remove motion history handling
Remove motion history handling, as we now deal with this in the DIX.
2006-10-25 01:10:44 +03:00
Daniel Stone
0cd6a3d8ef xfree86/input: add proximity support, free valuators
Re-add support for proximity events, and remember to both va_end our
varargs, and free our valuators.
2006-10-23 06:56:07 +03:00
Daniel Stone
c8f76fb3a4 xfree86/input: disallow pointer device changes, fix drag event calculation
Don't allow users to change the core pointer.
Fix xf86SendDragEvents to check the device button state, not the core
pointer's.
Remove unused xf86CheckButton.
2006-10-23 05:12:15 +03:00
Zephaniah E. Hull
e26a494f41 Merge branch 'input-hotplug' of git+ssh://git.freedesktop.org/git/xorg/xserver 2006-10-21 04:26:14 -04:00
Zephaniah E. Hull
736b0d5078 DEVICE_TOUCHSCREEN becomes DEVICE_ABS_CALIB.
Update the DEVICE_ABS_CALIB stuff to include the new elements.

New DEVICE_ABS_AREA support.

dev->touchscreen becomes dev->absolute, with _CALIB and _AREA stuff in it.

Update xfree86 to compile with this, kdrive needs an update too.
2006-10-21 04:24:49 -04:00
Daniel Stone
aeba855b07 move keymap copy to event processing, from enqueuing
Move the keymap copying to event processing time (in
ProcessInputEvents), instead of being at event enqueuing time.
Break SetCore{Pointer,Keyboard} out into separate functions.
Change mieqEnqueue to take a device pointer, that asks for the
_original_ device associated with this event.
2006-10-20 00:43:11 +03:00
Zephaniah E. Hull
1b1698af41 Pass SetDeviceValuators down to the driver.
NOTE: This changes the LocalDeviceRec struct, which breaks input drivers.
2006-10-18 04:57:22 -04:00
Daniel Stone
4ae7745a0d xfree86 input: always open devices on NewInputDeviceRequest 2006-10-15 21:48:01 +03:00
Daniel Stone
ef7e05e9de xfree86/xinput: pass first_valuator params, don't clip to first screen bound
Pass first_valuator to GetPointerEvents/GetKeyboardValuatorEvents.
Don't clip axis bounds to that of screen 0 when initialising axes.
2006-10-08 21:42:15 +03:00
Daniel Stone
41bb9fce47 mipointer: take device arguments, split miPointerAbsoluteCursor
Update mipointer API to take a device argument to (almost) all functions,
and split miPointerAbsoluteCursor into a couple of separate functions.
Remove miPointerAbsoluteCursor call from mieq, as we now deal with it in
GetPointerEvents.
Make miPointerSetPosition (successor of miPointerAbsoluteCursor) take
pointers to x and y, so it can return the clipped values.
Modify callers of miPointer*() functions to generally use the new
functions.
This should fix things with multi-head setups.
2006-10-08 20:34:32 +03:00
Daniel Stone
3ae4d25018 xfree86 Xinput: remove still more excessive debugging
There isn't any more debugging left for input events in the XFree86 DDX.
2006-10-08 16:20:42 +03:00
Daniel Stone
58314756ae GetPointerEvents: add first_valuator parameter
Add a first_valuator parameter.  Looks correct by inspection, but untested
with first_valuator != 0 as yet.
2006-10-08 16:18:05 +03:00
Daniel Stone
539d1f3347 GKVE/GPE: have DDX allocate events
Don't allocate events on every GKE/GKVE/GPE call, just have the DDX manage
it instead.  Introduce GetMaximumEventsNum(), which is the maximum number
of events these functions will ever produce.
2006-08-10 14:00:14 +03:00
Daniel Stone
afcad4ad99 xfree86 ddx: always free GKE/GPE events
free() events we get passed back from GKE and GPE so we don't just, er,
leak them all.  *cough*.
2006-08-07 18:11:05 +03:00
Daniel Stone
ca3f4fc1b0 add fallback ChangeDeviceControl, allow XOpenDevice on closed device
Add a fallback ChangeDeviceControl, which allows the attributes we know about
so far.
Allow XOpenDevice on closed devices.
2006-07-23 19:02:12 -04:00
Daniel Stone
7465010d59 Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug 2006-07-21 19:05:41 -04:00
Adam Jackson
0aaac95b0d Remove RCS tags. Fix Xprint makefile braindamage. 2006-07-21 17:56:00 -04:00
Daniel Stone
60ea7b51fe xorg ddx: move to new input API, remove old keyboard driver
Remove most of the rest of the old keyboard driver.
Move to the new Get{Keyboard,Pointer}Events API, which is mostly
complete at this stage: just missing the proximity events.
2006-07-21 15:23:37 -04:00
Daniel Stone
c9a3d9baa8 xorg DDX: implement NewInputDeviceRequest
Implement NewInputDeviceRequest for Xorg, mainly written by Kristian Høgsberg.
Move MatchInput to xf86Helper.c, as xf86LookupInputDriver.
2006-07-21 15:19:50 -04:00
Adam Jackson
a68c11bb1d Mark everything in xf86sym.c as _X_EXPORT. 2006-03-25 19:52:05 +00:00
Fredrik Höglund
ae935832fa Refactored the screensaver and DPMS timer code to use the screensaver timer
for both screensaver and DPMS. Removed the SetDPMSTimers() and
    FreeDPMSTimers() functions.
2006-03-24 20:50:13 +00:00
Adam Jackson
59279da498 Bug #1429: Report input device type correctly. (Stéphane VOLTZ) 2005-10-21 19:06:13 +00:00
Daniel Stone
e03198972c Add Xtrans definitions (FONT_t, TRANS_CLIENT) to clean up warnings.
Add XSERV_t, TRANS_SERVER, TRANS_REOPEN to quash warnings.
Add #include <dix-config.h> or <xorg-config.h>, as appropriate, to all
    source files in the xserver/xorg tree, predicated on defines of
    HAVE_{DIX,XORG}_CONFIG_H. Change all Xfont includes to
    <X11/fonts/foo.h>.
2005-07-03 07:02:09 +00:00
Daniel Stone
9b1debcdb6 Change all misc.h and os.h references to <X11/foo.h>. 2005-07-01 22:43:43 +00:00
Daniel Stone
292c4cff26 Fix includes right throughout the Xserver tree:
change "foo.h" to <X11/foo.h> for core headers, e.g. X.h, Xpoll.h;
change "foo.h", "extensions/foo.h" and "X11/foo.h" to
    <X11/extensions/foo.h> for extension headers, e.g. Xv.h;
change "foo.[ch]" to <X11/Xtrans/foo.[ch]> for Xtrans files.
2005-04-20 12:25:48 +00:00
Alan Coopersmith
9bd876768b Fix debugging ErrorF() so it compiles when DEBUG is true. 2005-01-19 22:23:20 +00:00
Roland Mainz
159e443a22 //bugs.freedesktop.org/show_bug.cgi?id=1688) attachment #1530
(https://bugs.freedesktop.org/attachment.cgi?id=1530): Fix the current
    implementation to make it possible to slow down the mouse pointer or
    use arbitrary fractions (without running into rounding error issues).
    The change is using the same method of preserving rounding errors that
    the exponential method is already using. Patch by Jan Brunner
    <Jan_B@gmx.ch>.
2004-12-13 02:13:32 +00:00
Kaleb Keithley
adc7f9a4eb XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks 2003-11-25 19:29:01 +00:00
Kaleb Keithley
d568221710 XFree86 4.3.0.1 2003-11-14 16:49:22 +00:00
Kaleb Keithley
ded6147bfb R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00