Commit Graph

452 Commits

Author SHA1 Message Date
Peter Hutterer
5e43910929 Add GenericEvent extension to Xext.
This adds (unconditional) support for the GE extension. Anything from now on
that sends events in MPX will have to use the GE extension. No GE, no MPX
events. GE is not actually used yet from anywhere with this commit.

You will need to update x11proto, xextproto, libX11, libXext and xcb to the
matching xge branches. Things will _NOT_ work without the updated protocol
headers and libraries.
2007-04-30 12:57:42 +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
339b73e710 Allow events to grabWindows event if the device is not grabbed.
This kinda makes popup windows useable if the WM doesn't set the
ClientPointer. Kinda.
2007-04-27 13:24:27 +09:30
Paulo Ricardo Zanoni
82f97e1c0c Enable event delivery for multiple heads.
Requires moving the spriteTrace into the DeviceIntRec and adjusting a few
functions to take in device argument, most notably XYToWindow().

Cursor rendering on the second screen is busted.
2007-04-26 15:58:50 +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
Brian
ce099a9b78 fix bug in which maxKeysPerModifier wasn't getting set 2007-04-23 12:34:01 -06:00
Peter Hutterer
d61ed6c8a2 Check for NULL devices in CloseDevice(). 2007-04-19 18:08:55 +09:30
Peter Hutterer
b6aec7f6f9 Change FocusIn/Out semantics to match Enter/Leave semantics. 2007-04-17 16:51:16 +09:30
Peter Hutterer
451d5464b4 Change enter/leave semantics for events with detail Notify{Nonlinear}Virtual.
Core enter/leave events with detail Notify{Ancestor|Inferior|Nonlinear} are
only sent for the first/last pointer to enter/leave. Events with detail
Notify{Nonlinear}Virtual are sent at all times, but not to those windows that
currently have one or more pointers inside their boundaries.
2007-04-17 11:17:04 +09:30
Peter Hutterer
ea27b09d3a Deliver FocusIn/FocusOut events for all devices.
Don't use VCK in SetInputFocus and DeliverFocusedEvent.
2007-04-13 17:15:22 +09:30
Peter Hutterer
7ccebc50b9 Documentation for events.c. 2007-04-13 13:08:44 +09:30
Peter Hutterer
2bb3c81fc1 Use paired kbd instead of VCK for EnterLeaveEvents, sanitize variable naming. 2007-04-12 16:35:43 +09:30
Peter Hutterer
e7b47b1758 Change core enter/leave semantics for multiple pointers.
Send EnterNotify when first device enters the window, LeaveNotify when the
last device leaves the window. Additional devices will not cause additional
Enter/LeaveNotifies.
2007-04-12 16:24:42 +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
Magnus Vigerlöf
4f05f9591e Input: Always add devices with first available ID
Scan the device list when adding a new device, and make sure we can use
the first available ID, instead of always incrementing.
2007-04-10 23:58:20 +03:00
Magnus Vigerlöf
07c56abf84 Input: Plug memory leak in device free
Remember to also free the motion history, if we're using the DIX-managed
history.
2007-04-10 23:58:20 +03:00
Daniel Stone
e92743bc98 getevents: Copy modifier state from extended to core devices
Make core events carry the same modifier state as the extended events, so
that holding down Ctrl on keyboard A and pressing Q on keyboard B won't
cause your app to quit.
2007-04-10 23:58:20 +03:00
Stefan Huehner
1f6741db19 Bug #10560: Code-Cleanup: function declarations () -> (void)
X.Org Bugzilla #10560: <https://bugs.freedesktop.org/show_bug.cgi?id=10560>
Patch #9511 <https://bugs.freedesktop.org/attachment.cgi?id=9511>
2007-04-09 14:33:15 -07:00
Peter Hutterer
f1f8b562aa Alloc sprite memory in devices' devPrivates, allow undisplaying cursors.
Improve memory usage by allocating the sprite's memory only to devices that
actually have a sprite and provide means to remove a device's cursor from the
screen (more hotplugging, yay!).
This commit breaks ScreenRec's ABI.
2007-04-09 19:31:59 +09:30
Peter Hutterer
7cef789fa1 Close down virtual core devices when closing all devices. 2007-04-09 18:37:48 +09:30
Peter Hutterer
6081b8c76f Don't explicitly init sprite for VCP, EnableDevice() will take care of that. 2007-04-09 18:35:47 +09:30
Peter Hutterer
00b1d52f41 Adding some comments to devices.c. 2007-04-09 18:32:00 +09:30
Peter Hutterer
aa77ffb510 Fix: pick new ClientPointer when device is closed. 2007-04-09 18:29:00 +09:30
Peter Hutterer
676188531b Unrealize cursor only once, not per device. 2007-04-04 17:35:06 +09:30
Peter Hutterer
207f710d16 Delete all grabs from all devices when deleting a window. 2007-04-03 19:02:14 +09:30
Peter Hutterer
5f382c9c7f Merge branch 'master' into mpx 2007-04-03 15:07:18 +09:30
Peter Hutterer
f09ee168e2 Revert "o fix minor error in comment for GetPointerEvents()"
This reverts commit 96ce17aa94.
2007-04-03 15:07:00 +09:30
Peter Hutterer
9b0b340668 Make GrabDevice differ between core grabs and device grabs. 2007-04-03 15:06:26 +09:30
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
96ce17aa94 o fix minor error in comment for GetPointerEvents() 2007-04-02 11:30:47 +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
20e4314b17 dix: Try to get closer to the correct refcnt for cursors.
This commit introduces a memory leak, as the refcnt never seems to get
        down to 0 and thus cursors will not be freed. Solves the problems with
        GNOME segfaulting every 30 seconds though.
2007-03-29 19:12:32 +09:30
Peter Hutterer
0c607f4b19 dix: Pick keyboard instead of using virtual keyboard in Grab/UngrabKey. 2007-03-29 14:43:50 +09:30
Eamon Walsh
f7c5aa0dc0 Remove dead NEED_DBE_BUF_BITS code. 2007-03-26 10:21:44 -04:00
Adam Jackson
4b5802ddbd General DIX static and dead code cleanup. 2007-03-25 17:57:54 -04:00
Adam Jackson
9a0f25de7c Static cleanups, dead code deletion. 2007-03-25 12:27:01 -04:00
Peter Hutterer
ac2356843e dix: Increase allocation size for core keyboard keymap to avoid buffer overrun when copying keymap from extension devices. 2007-03-25 15:24:47 +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
Peter Hutterer
e54311395e dix: Increase allocation size for core keyboard keymap to avoid buffer
overrun when copying keymap from extension devices.
2007-03-25 09:41:33 +09:30
Peter Hutterer
f8cd19bd16 Xi: add GetClientPointer and GetPointerPairing requests.
dix:    use PickKeyboard for ProcSetInputFocus and ProcGetInputFocus instead
        of the core keyboard.
2007-03-22 17:47:01 +10:30
Adam Jackson
021fc5cb2c Static markup and dead code cull over xkb/.
The former <X11/extensions/XKBsrv.h> has been pulled into the server now as
include/xkbsrv.h, and the world updated to look for it in the new place,
since it made no sense to define server API in an extension header.  Any
further work along this line will need to do similar things with XKBgeom.h
and friends.
2007-03-20 18:37:02 -04:00
Peter Hutterer
0acf993e28 dix: Move sprite initalization/pairing from ActivateDevice to
EnableDevice.
        zero out spriteTrace, otherwise GetCurrentRootWindow() may return
        invalid data.

        Evdev adds previously hotplugged devices on its own when rescanning,
        and ActivateDevice does not get called for those devices. Sprites need
        to be initialized or paired before the device gets started, so the
        safest place to do so is EnableDevice (which actually does get called
        by the evdev driver).
2007-03-19 16:11:01 +10:30
Peter Hutterer
015d728bcd Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	dix/events.c
	mi/misprite.c
2007-03-19 09:42:56 +10:30
Peter Hutterer
b167583fe2 o fix minor error in comment for GetPointerEvents() 2007-03-16 15:58:05 +10:30
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
456f429ad6 dix: fix: don't return when device is same as argument.
fix: set access default rule to 0 on init.
2007-03-15 21:48:19 +10:30
Peter Hutterer
c3eb248cf9 dix: fix: don't skip first item in list when seeking for a device cursor. 2007-03-14 13:21:33 +10:30
Peter Hutterer
ce9409aceb dix: Get the state from the paired device and the real device to fill the
state field in the event, rather than using the virtual devices.
        ProcessPointerEvent: name argument "device" instead of "other".
        Add GetPairedKeyboard().
2007-03-13 19:16:56 +10:30
Peter Hutterer
577464af43 dix: restore commit b3b2a6a0d4 that for some
reason got wiped.
        fix ProcGrabKeyboard to use PickKeyboard
        fix PickKeyboard to actually work.
2007-03-09 17:13:05 +10:30
Peter Hutterer
07806f4081 Xi: Add SetClientPointer request handling. 2007-03-09 15:45:25 +10:30
Peter Hutterer
b3b2a6a0d4 dix: Check if client has a grab on any other device before mouse/kbd
event is delivered to the client. Client's don't cope well with
        receiving core events from other devices when having a grab on a
        pointer or keyboard.
2007-03-08 22:16:17 +10:30
Peter Hutterer
63169ce52d dix: remove 'register' keyword for all variables. 2007-03-08 17:50:25 +10:30
Peter Hutterer
ceca5670fe dix: Each device needs to differ between a core grab and an XI grab,
otherwise a Xi grab may overwrite or release a core grab.
        Replace grab and associates with coreGrab and deviceGrab structures,
        adjust rest of dix/Xi/etc to compile.

xfree86: Don't check for core devices, we'll have the virtual ones anyway.
         If we check, the first mouse device is duplicated and sends
         double events.
2007-03-08 17:17:23 +10:30
Eamon Walsh
b5fde366e2 Properly free device devPrivates - memory leak fix. 2007-03-07 12:29:55 -05:00
Peter Hutterer
537bc2ead4 Xi: Don't deactivate core grabs from non-core button/key releases.
dix:    set coreGrab flag for grabs caused by GrabPointer and button presses.
        remove virtual core devices from device list, only real devices are in
        the list now.
        Auto-pair each keyboard with a real pointer if one is available,
          provides multiple keyboards automatically after startup if devices
          are configured.
        fix GuessFreePointerDevice() to do what it's supposed to do.

mi:     fix: call miPointerMove from miPointerWarpCursor.
        fix: remove unused id field from miCursorInfoRec
        don't update sprite for virtual core pointer.
2007-03-07 18:19:20 +10:30
Eamon Walsh
81526232bc remove PIXPRIV check as this flag is always set. 2007-03-06 17:19:11 -05:00
Eamon Walsh
a7cd53deb9 remove PIXPRIV checks as this flag is always set. 2007-03-06 17:05:03 -05:00
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
1f0075786f Merge branch 'master' into mpx
Conflicts:

	configure.ac
	dix/getevents.c
	hw/xfree86/ramdac/xf86Cursor.c
	mi/mipointer.c
	xkb/xkbUtils.c
2007-03-05 12:37:17 +10:30
Peter Hutterer
12175b668a o fix minor error in comment for GetPointerEvents() 2007-03-03 13:57:39 +10:30
Peter Hutterer
57aa5e908d dix, Xext, Xtrap, Xi: replace inputInfo.pointer with PickPointer where
possible. More replacements to come.
2007-03-02 17:14:37 +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
4b8b0e377a Xi: Add access control request handling.
dix:	New file access.c to handle all access control for devices.
2007-02-22 20:00:59 +10:30
Peter Hutterer
cd0af7a785 Xi, dix: Only one client at a time can change the pointer-keyboard pairing,
using xRegisterPairingClient request.
2007-02-21 10:08:41 +10:30
Ben Byer
81444486be autoconf goodness for XDarwin, courtesy of pogma 2007-02-17 02:23:11 -08:00
Ben Byer
cf4994b0db dix mods for Darwin 2007-02-17 01:21:43 -08:00
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
d570ff7c81 fix: WarpCursor needs to send MotionNotify. 2007-02-15 10:28:55 +10:30
Peter Hutterer
25104ed2e6 dix: fix typo in condition. 2007-02-14 11:26:53 +10:30
Peter Hutterer
33ef546b94 dix: Clean up GetPointerEvents. If pDev == inputInfo.pointer, assume that
we do not want Xi events.

mi:     Remove POINTER_CORE_ONLY flag.
2007-02-14 11:18:43 +10:30
Peter Hutterer
7cd73b00a2 dix: If POINTER_CORE_ONLY is set, GetPointerEvents() only creates a core event
mi:	fix: Create motion event in miPointerMoved
2007-02-05 14:48:48 +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
15a81b6325 Merge branch 'master' 2007-01-28 17:18:57 +10:30
Peter Hutterer
cc3d66d4a5 o fix minor error in comment for GetPointerEvents() 2007-01-28 17:08:17 +10:30
Peter Hutterer
3759254c09 Merge branch 'master' 2007-01-28 17:05:55 +10:30
Peter Hutterer
ba547d4f6a mi: Quick fix to stop segfault on non-core keyboards. 2007-01-12 14:42:02 +10:30
Peter Hutterer
5e2f8dee63 mi: remove core pointer special handling. No event has core pointer as
device now.

dix:    zero pSprite memory, stop segfaults on server restart.
2007-01-11 14:05:39 +10:30
Peter Hutterer
ea82333dc1 Xi: add missing call for SProcXChangeDeviceCursor
add DeviceEnterNotify and DeviceLeaveNotify
	fix: QueryDevicePointer crashed if called with keyboard device
2007-01-10 14:52:13 +10:30
Michel Dänzer
282a4dcaab Attempt to fix drawable type checks in dixLookupDrawable().
Not sure this is 100% correct either, but it fixes at least one reproducible
crasher where it returned a pixmap to dixLookupWindow().
2007-01-08 19:22:41 +01:00
Peter Hutterer
95e1a88050 Xi: Adding ChangeDeviceCursor request 2007-01-08 12:31:18 +10:30
Peter Hutterer
05f915050c dix/events: take screen number, not pointer, in PostSyntheticMotion
Since we were using PostSyntheticMotion incorrectly anyway, update the
declared API to match.
2006-12-27 16:38:06 +00:00
Eamon Walsh
d9e079d2a3 Zero out client devPrivates on allocation. 2006-12-22 13:07:09 -05:00
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
ca5ebe3971 Merge branch 'master' of git://anongit.freedesktop.org/git/xorg/xserver 2006-12-19 10:51:01 +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
03c554283e mi: removing MPX ifdefs
global sprite renaming in mipointer and misprite
	fixed: multiple remove cursor call in miSpriteInstallColormap
	fixed: wrong core pointer usage in miSpriteStoreColors

dix:    bugfix in CheckCursorConfinement
	removing MPX ifdefs
	removing MPX event generation (using Xi solely now)
	bugfix GrabDevice: uninitialized field in grab struct caused segfault

xfree86: removing MPX fdefs

Xi:     removing MPX protocol events
2006-12-18 15:33:54 +10:30
Eamon Walsh
0128073568 Add loud warnings to deprecated lookup functions.
Hopefully this will alert external driver maintainers.
2006-12-15 18:27:16 -05:00
Eamon Walsh
ab1d5b0c31 Convert callers of LookupClient() to dixLookupClient(). 2006-12-15 17:26:58 -05:00
Eamon Walsh
25d5e0a629 Convert callers of SecurityLookupWindow() to dixLookupWindow(). 2006-12-15 15:50:46 -05:00
Eamon Walsh
00f0705b3b Remove instances of macros SECURITY_VERIFY_GEOMETRABLE and SECURITY_VERIFY_GC. 2006-12-14 19:15:21 -05:00
Eamon Walsh
5e334f06a1 Remove instances of macros VERIFY_GEOMETRABLE and VERIFY_GC. 2006-12-14 18:27:09 -05:00
Eamon Walsh
51b69ff499 Remove instances of macro SECURITY_VERIFY_DRAWABLE. 2006-12-14 17:53:43 -05:00
Eamon Walsh
ab1886df73 Add new, combined dix lookup functions (tweak). 2006-12-14 15:42:19 -05:00
Eamon Walsh
60cdc592fe Add new, combined dix lookup functions. 2006-12-14 14:46:03 -05:00
Eamon Walsh
6c46645cfc Naming change: Security*Access -> Dix*Access 2006-12-14 14:45:42 -05:00
Peter Hutterer
a96788058e mi: removing MPX ifdefs
global sprite renaming in mipointer and misprite
	fixed: multiple remove cursor call in miSpriteInstallColormap
	fixed: wrong core pointer usage in miSpriteStoreColors

dix:    bugfix in CheckCursorConfinement
	removing MPX ifdefs
	removing MPX event generation (using Xi solely now)
2006-12-14 10:50:18 +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
0c5dab5c8e config: move config.h to hotplug.h
Also, move configInitialise to after OsInit, since the next commit will
make it use a timer.
2006-12-06 23:24:24 +02:00
Daniel Stone
72e7f2ac6c GetPointerEvents: always send valuator events for MotionNotify
Always chase a DeviceMotionNotify event with a DeviceValuator, which is
not required in the spec, but will silently break the lib if you don't
include.
2006-12-06 23:24:24 +02:00
Daniel Stone
c458a70d65 GetPointerEvents: fix typo
Fix typo that resulted in inverted axes when using an absolute positioning
device that didn't report y, and thus relied on the previous value.
2006-12-06 23:24:24 +02:00
Daniel Stone
2f0a800ffd config: move to block/wakeup handler 2006-12-06 23:24:24 +02:00
Daniel Stone
f2903c12bb SyntheticMotion: don't dereference sprite.screen when not using Xinerama
(cherry picked from aa052e43c6c293e14f78837e00c6b7581f9713bb commit)
2006-12-06 23:24:23 +02:00
Peter Hutterer
eb1d9f51af Ironing some glitches caused by the merge 2006-12-05 18:50:19 +10:30
Peter Hutterer
3c8f166022 Merge branch 'master' of git://anongit.freedesktop.org/git/xorg/xserver into mpx
Conflicts:

	dix/events.c
2006-12-05 18:28:33 +10:30
Eamon Walsh
ac90ce58ba Naming change: Security*Operation -> Xace*Operation 2006-12-01 21:15:41 -05:00
Eamon Walsh
f44f14fe56 Define calls away when not building XACE, allowing ifdef's to be removed. 2006-12-01 21:15:41 -05:00
Peter Hutterer
416f1bb99a mpx: SelectEvents and GetEventBase requests.
Some renaming and cleaning up in extinit.c
	MPXLastEvent added

Xi:	ShouldFreeInputMask() from XI is not static any more, used in mpx

dix:	GetPointerEvents() allocates MPX event for MPX devices.
	DeliverDeviceEvents() caters for MPX devices.
2006-12-01 15:56:52 +10:30
Alan Coopersmith
8956f63a94 Tell automake to STFU about the *.O files
automake will not stop whining about the *.O files not being in normal library
name format, so just tell automake they are PROGRAMS so it builds them without
bitching.
2006-11-30 19:53:29 -08:00
Peter Hutterer
bdf718907b dix: missing parameter to SetCursorPosition in CheckMotion ifndef MPX
mi:	missing include in misprite.c ifndef MPX
2006-11-28 18:06:34 +10:30
Peter Hutterer
e88bc0e55a mi: Bugfix: FreeCursor ignores negative refcounts.
mieq:   Bugfix: Motion notifies did overwrite DeviceMotionNotifies
2006-11-28 14:34:36 +10:30
Eric Anholt
b4b0d901d9 Merge branch 'randr-1.2'
Conflicts:

	dix/events.c
	dix/getevents.c
	hw/xfree86/common/xf86Mode.c
	hw/xfree86/dri/Makefile.am
	hw/xfree86/os-support/drm/xf86drm.c
	hw/xfree86/os-support/xf86drm.h
2006-11-27 15:43:15 -08:00
Peter Hutterer
85ea408e38 mi: malloc checks for misprite and midispcur, code cleanup
removed IsMPDev()
2006-11-27 18:07:16 +10:30
Peter Hutterer
1c7568b8a1 mi: closing memory leak, miPointer is freed in miPointerCloseScreen
bugfix: uninitialized pPointer in miPointerGetPosition ifndef MPX
	adding DeviceIntPtr parameter to ScreenRec's cursor functions.
	cleanup of miPointer code to use same scheme in each function

dix:	MPHasCursor() function determines checking whether to invoke
	cursor rendering.

animcur: adding DeviceIntPtr parameter to cursor functions but animcur relies
	 on the core pointer right now.

xfixes: adding DeviceIntPtr parameter to cursor functions but xfixes relies on
	the core pointer right now.

rac:	adding DeviceIntPtr parameter to cursor functions but RAC relies on
	the core pointer right now.

ramdac:	adding DeviceIntPtr parameter to cursor functions but ramdac relies on
	the core pointer right now.
2006-11-23 17:15:14 +10:30
Peter Hutterer
f52d53e060 dix: DeliverEventsToWindow adjusted for MPX
mi:     sprite debugging disabled
2006-11-22 17:58:57 +10:30
Peter Hutterer
8c16f21d5d dix GetSpriteWindow() adjusted for MPX
added device dependency for MPX to DoEnterLeaveEvents,
	EnterLeaveEvents, EnterNotifies, LeaveNotifies and
	FixUpEventFromWindow.
2006-11-22 17:06:47 +10:30
Peter Hutterer
70383105de mi: added DevToSprite() conversion function
fixed miSpriteRealize to use passed pDev argument instead of looping.

dix:    changed sprite dependency and added MPX functionality to parts of
        events.c (XineramaChangeToCursor, XineramaCheckPhysLimits,
        XineramaConstrainCursor)

Xi:	fix: accessing other->buttons for keyboard segfaulted the server
2006-11-22 15:27:16 +10:30
Alan Hourihane
33ff4cec5f Issue CloseDownDevices() in os/log.c and remove from dix/main.c.
This ensures that all calls to FatalError() will shutdown the input devices.
2006-11-21 21:23:17 +00:00
Peter Hutterer
efd4f3c6ff dix: WindowsRestructured() calls CheckMotion() on all devices
mi:	core pointer was checked twice in miSpriteReportDamage,
	miSpriteInstallColormap, miSpriteStoreColors, miSpriteSaveDoomedAreas
	and miSpriteRealiseCursor
	using damage bug (see comment in file) to avoid artefacts
2006-11-21 20:31:30 +10:30
Peter Hutterer
9db851c22d dix: moved sprite from static to be pointer of type SpritePtr
added SpriteRecs for MPX devices
	changed sprite dependency and added MPX functionality to parts
	of events.c (ConfineToShape, PostNewCursor, XineramaCheckMotion,
	CheckMotion, XineramaChangeToCursor, ChangeToCursor, CheckPhysLimits,
	PointerConfinedToScreen)
	added DeviceIntRec param to GetSpritePosition(). This required some
	minor changes in ddx, xtest, xkb and xfixes.

mi:	changed miPointer to pointer instead of static struct.
2006-11-21 18:15:04 +10:30
Peter Hutterer
447efdc01d mi: constrain MPX cursors to screen 2006-11-21 14:46:00 +10:30
Peter Hutterer
b1bbdf464d mi: added MPX to miSprite functions.
NOTE: This version will render multiple cursors but with an artefact each time
when devices alternate.
2006-11-20 17:58:30 +10:30
Alan Hourihane
c9a5f9d391 Shutdown input devices if FatalError occurs during startup.
Fixes Xdmx problems when the input device has been initialized
and the keyboard map has been destroyed.
2006-11-18 19:55:42 +00:00
Peter Hutterer
90bea69dfd mi:
added miCursorInfoRec to contain info of the MPX cursors.
        calling miUpdatePointerSprite() from event queue for MPX devices.
        adding device-specific processing to miPointer*() functions.

dix:    Call to SetCursorPosition in CheckMotion() temporarily disabled.

xfree86/common: call to miPointerUpdateSprite() disabled, is done from the EQ

NOTE: This build will not display cursor images.
BUG: The second mouse does to take correct x coordinates.
2006-11-17 18:03:43 +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
4d07b50372 dix: cleaned up GetPointerEvents() to avoid code duplication. 2006-11-16 10:55:15 +10:30
Peter Hutterer
f737cd925e o fix minor error in comment for GetPointerEvents() 2006-11-15 17:50:02 +10:30
Jurij Smakov
acb5ff4c73 ffs: handle 0 argument (bug #8968)
Handle an argument of 0 in ffs(), instead of looping indefinitely.
Add an ffs prototype to dix.h, and add includes to ffs.c.
(cherry picked from 34164e551e4c3909322d50b09835ca4ac1d49d68 commit)
2006-11-11 14:13:56 +02:00
Daniel Stone
e7900d68c3 remove trailing whitespace
Whitespace police in full effect.
2006-11-08 15:36:47 +02:00
Daniel Stone
b5438f7fb2 Get*Events: massive reorganisation
Reorganise the code logically, and put more comments in.
Clip valuators in proximity calls.
2006-11-08 15:30:03 +02:00
Daniel Stone
b55007d8cc SyntheticMotion: don't dereference sprite.screen when not using Xinerama 2006-11-08 15:29:17 +02:00
Daniel Stone
f93d10ce9b dix: remove staggeringly broken vendor workarounds
Dear SGI,
No.

Scant regards,
Daniel
2006-11-08 15:29:16 +02:00
Daniel Stone
c3ea1f7db4 dix/mi: still more warning fixes
Fix up prototypes for PrintChildren and PrintWindowTree in the dix.
Make miPrintRegion be unconditionally defined, and move the prototype into
regionstr.h.
Change a bunch of ScreenPtr pScreen = foo; to
ScreenPtr pScreen; pScreen = foo; in window.c, so we avoid unused variable
references (as inline REGION_* doesn't reference pScreen).
2006-11-08 15:29:16 +02:00
Daniel Stone
3a9b964258 dix: add missing prototypes
Add missing prototype for ffs, and include headers from ffs.c.
Move PostSyntheticMotion prototype to input.h.
2006-11-08 15:29:16 +02:00
Daniel Stone
6716488fa2 dix: remove unused debug code 2006-11-08 15:29:16 +02:00
Daniel Stone
51813d77bf dix: remove unused variable 2006-11-08 15:29:15 +02:00
Laurence Withers
ae58d349c1 CreateColormap: fix return value (bug #7083)
Return BadMatch when an unsupported visual type is given, not BadValue --
this is correct according to the spec.
2006-11-08 15:29:15 +02:00
Adam Jackson
05f1c30246 Merge branch 'autoconfig-for-7.2' 2006-11-07 18:42:54 -05:00
Keith Packard
1dcda4f3c5 Avoid dereferencing sprite.screen when Xinerama is not running. (#8925)
With Xinerama support built into the X server but not in use,
sprite.screen is NULL and yet the SyntheticMotion
macro would dereference it. Avoid that by just passing sprite.screen
to PostSyntheticMotion which can then dereference it when Xinerama is
enabled.

Also, define PostSyntheticMotion in dixevents.h and include dixevents.h in
getevents.c
2006-11-07 01:29:51 -08:00
Eamon Walsh
3d39c02fe6 More work on Bug #8875: revert previous fix and try using client argument
instead of serverClient.  Also don't use totalClientSize as it is not
initialized until after the first call to InitClient.
2006-11-06 21:25:52 -05:00
Alan Coopersmith
49a26681b2 Add DTrace probe points for X server <-> client communications
See http://people.freedesktop.org/~alanc/dtrace/ for more details
2006-11-03 12:54:43 -08:00
Alan Coopersmith
58bf9a142d PostSyntheticMotion needs to be extern, not static, since it's in getevents.c 2006-11-02 14:43:02 -08:00
Daniel Stone
81728558a0 input: add non-keyboard bell ringing function
Add a generic 'ring the bell' function (console bell on Linux and BSD,
/dev/audio on Solaris), and add DDX functions for this.  Make this the
core keyboard's bell.
Port Xvfb and Xnest to this.
Port XFree86 to this, with OS-specific hooks for Linux, BSD, and Solaris
taken from foo_io.c in the old layer.
2006-11-01 23:10:26 +02:00
Daniel Stone
196c5836f4 CoreKeyboardProc: annotate with FIXME
Setting an empty keymap by default isn't wildly useful.
2006-10-27 01:27:31 +03:00
Daniel Stone
f9a1e456f8 CoreKeyboardProc: don't leak keymap and modmap
SetKeySymsMap does a copy here, so try not to leak them.
2006-10-27 01:25:39 +03:00
Daniel Stone
85212eb504 getValuatorEvents: make sure we put MORE_EVENTS in the right places
Make sure we put MORE_EVENTS in with the device id if there are, in fact,
more valuator events coming.
2006-10-27 01:23:58 +03:00
Daniel Stone
aabc087998 GetPointerEvents: always ensure correct number of events
Ensure correct number of valuator events are returned, and that we always
increment events correctly.
2006-10-25 02:21:39 +03:00
Daniel Stone
b9e180e632 port all users to the new DIX motion history API
Port KDrive, Xvfb, and Xnest, as well as the virtual core devices, to the
new motion history API.  Make GetPointerEvents also update the history.
2006-10-25 01:09:19 +03:00
Daniel Stone
5b38eb69cd dix: add motion history support
Add motion history support (sort of based on the XFree86 DDX's
implementation) to the DIX.
2006-10-25 01:08:29 +03:00
Daniel Stone
11fb58be77 miscellaneous warning fixes
Use the correct type for time, and fix the mi prototype of EnqueueEvent.
2006-10-25 01:07:36 +03:00
Daniel Stone
cccf7ae0ff GetProximityEvents: add (untested) function
Add untested first guess at what GetProximityEvents should look like.
2006-10-23 06:55:21 +03:00
Daniel Stone
35fa4ac12b GetPointerEvents: break into separate functions
Break out clipAxis, clipValuators, and getValuatorEvents, into
separate functions, to be used by the proximity event code.
2006-10-23 06:23:45 +03:00
Daniel Stone
eec1822591 dix/getevents: move SyntheticMotion to getevents.c
Mostly, this is just a cheesy hack to ensure that getevents.o gets
included when linking.  Sigh.
2006-10-23 02:48:30 +03:00
Daniel Stone
bc701a1429 dix/getevents: cosmetic cleanups, remove keymap copy from GKVE
Remove keymap copy from GetKeyboardValuatorEvents, as
SwitchCoreKeyboard now takes care of this for us.
Remove unused variable and function prototype.
Update comments to be as informative as possible.
2006-10-23 00:08:32 +03:00
Daniel Stone
be21630164 dix, Xi: make use of deviceid in DevicePresenceNotify
Use the deviceid and control fields in DevicePresenceNotify since
the last push to inputproto to send a DPN whenever a control changes
on a device.
2006-10-22 16:33:02 +03:00
Daniel Stone
77e724585f minor formatting fixes 2006-10-22 11:45:12 +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
Daniel Stone
a8d3dad9d9 xi: add DEVICE_ENABLE control
Add DEVICE_ENABLE control, which allows runtime enabling and disabling
of specific devices.
2006-10-20 00:43:11 +03:00
Daniel Stone
fc9b5f84b2 dix/devices: add devices in proper forward order
Add devices in forward order with the normal linked list convention.
Previously, AddInputDevice would add all the devices in reverse order to
off_devices, before they were added again in reverse order to devices with
EnableDevice.
This just makes both work in forward order, which provides the ordering as
you'd expect when hotplugging devices (i.e. adds them to the head, not the
tail).
2006-10-15 20:01:01 +03:00
Daniel Stone
4d8030076e dix: move GetKeyboardEvents/GetPointerEvents to a new file, export symbols
Move GKE and GPE to a separate file, to help stem the events.c explosion.
Mark GKE/GKVE/GPE as _X_EXPORT.
2006-10-14 22:14:07 +03:00
Daniel Stone
6afc7c2846 dix/devices: remove XACE merge debris 2006-10-14 15:54:35 +03:00
Daniel Stone
335b503c5e Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug 2006-10-13 18:10:45 +03:00
Daniel Stone
33406da096 GetKeyboardEvents: add first_valuator argument to GKVE 2006-10-08 23:20:56 +03:00
Daniel Stone
1546a39814 GetKeyboardValuatorEvents: also take first_valuator param
Take a first_valuator parameter, which specifies the first valuator.
2006-10-08 21:40:53 +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
be8dfafd1d warning cleanups
Fix still more warnings.
2006-10-08 20:32:16 +03:00
Daniel Stone
c2fab469b6 dix/devices: clean up debugging 2006-10-08 18:26:26 +03:00
Daniel Stone
b559cbb160 dix/CoreProcessKeyboardEvent: remove debugging for every key event
Also change #ifdef DEBUG/ErrorF/#endif to DebugF in FixKeyState.
2006-10-08 16:23:14 +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
84f5d2291c GetPointerEvents: fix relatively harmless typo
Change !(cp->button || !cp->valuator) to (!cp->button || !cp->valuator).
2006-10-08 15:30:24 +03:00
Daniel Stone
2cf1098436 dix/events, mi/eq: remove utterly ridiculous debugging
Remove debugging which can cause long-lived Xorg logs to grow well above 1GB
if built with --enable-debug.
2006-09-30 17:05:46 +03:00
Daniel Stone
5d99e05f05 Merge branch 'input-hotplug' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug 2006-09-29 00:35:07 +03:00
Daniel Stone
ad631afcf3 make core keyboard/pointer map functions act on all core-sending devices
Make Set{Keyboard,Modifier,Pointer}Mapping act on all devices which send core
events.
Change LegalModifier to accept a DeviceIntPtr.
2006-09-29 00:34:23 +03:00
Adam Jackson
d05e0a97bb Enable DPMS by default. 2006-09-14 18:49:12 -04:00
Zephaniah E. Hull
5893375786 Warning fix, and a syntax fix in a #if 0 section of code. 2006-09-10 15:50:51 -04:00
Eamon Walsh
9deb579dc9 Zero out newly created ExtensionEntry structures, but only after the
devPrivates have been initialized.
2006-09-08 15:25:17 -04:00
Eamon Walsh
cec392656c Zero out newly allocated ClientRec structures.
This is required to initialize the devPrivates to a known state.
2006-09-08 15:24:23 -04:00
Daniel Stone
5436fce090 [PATCH] GetKeyboardValutorEvents: be even more careful
Don't accept devices without a keyboard feedback class.
2006-08-29 15:18:06 +03:00
Eamon Walsh
13c6713c82 Add four new XACE hooks: auditing, key event notification, window init 2006-08-25 18:17:01 -04:00
Daniel Stone
2b06c69c8f GKVE: pass correct arguments to XkbCopyKeymap
Fix horrendous thinko.  Indicators now work perfectly.
2006-08-24 14:51:26 +03:00
Daniel Stone
6323a11d0d XkbCopyKeymap: optionally send NewKeyboardNotify/MapNotify events
Optionally send a NewKeyboardNotify or MapNotify event when copying the
keymap; modify GetKeyboardValuatorEvents to make use of this.
2006-08-23 18:53:04 +03:00
Daniel Stone
8f8487ff99 xkb/gkve: copy XKB map, not pointer-assign
Write a new function to copy an XKB map (does everything but geometry at
the moment), and use that instead of nasty pointer assignments.
2006-08-23 14:33:41 +03:00
Eamon Walsh
52ba722e4c Merge branch 'XACE-modular' into my-XACE-modular 2006-08-21 18:49:31 -04:00
Alan Coopersmith
05541259bd Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into XACE-modular 2006-08-21 13:07:41 -07:00
Daniel Stone
a56b98bb04 dix: enable null root cursor
Enable a blank root cursor, selectable with --enable-null-root-cursor at
configure time.
2006-08-18 18:10:09 +03:00
Daniel Stone
0704bb298c Merge branch 'master' into input-hotplug 2006-08-18 17:30:14 +03:00
Daniel Stone
a1ac0440bb dix: fix whiteroot thinko
Note to self: run git update-index _after_ testing, not just before.
2006-08-18 17:30:00 +03:00
Daniel Stone
cb0a565d2b dix: add whiteroot flag
Add a -wr option to use a white root window, and use a BackPixel rather
than BackPixmap for both white and black root windows.
2006-08-18 17:04:48 +03:00
Daniel Stone
633b6a69f5 Merge branch 'master' into input-hotplug 2006-08-17 21:25:14 +03:00
Daniel Stone
7da51447ea events.c: fix tiny XEvIE thinko
Make sure xeviehot gets updated after the ConfineToShape() call.
2006-08-17 21:24:07 +03:00
Daniel Stone
5d082f0563 events.c: make XEvIE a little less verbose
Change a lot of:
 #ifdef XEVIE
 xeviehot.x =
 #endif
 sprite.hot.x = ...
 #ifdef XEVIE
 xeviehot.y =
 #endif
 sprite.hot.y = ...
to one single
 #ifdef XEVIE
 xeviehot.x = sprite.hot.x;
 xeviehot.y = sprite.hot.y;
 #endif
at the end of the functions.
2006-08-17 21:20:58 +03:00
Daniel Stone
95dbfcf882 events.c: make XEvIE a little less verbose
Change a lot of:
 #ifdef XEVIE
 xeviehot.x =
 #endif
 sprite.hot.x = ...
 #ifdef XEVIE
 xeviehot.y =
 #endif
 sprite.hot.y = ...
to one single
 #ifdef XEVIE
 xeviehot.x = sprite.hot.x;
 xeviehot.y = sprite.hot.y;
 #endif
at the end of the functions.
2006-08-17 21:18:18 +03:00
Daniel Stone
c6c39afde3 dix/events.c: add YAFIXME
Add another FIXME to the cacaphony of XXX and FIXMEs in this file.
2006-08-17 21:13:09 +03:00
Daniel Stone
cd3f744b1f fix missing brace, trim unused variables 2006-08-15 15:54:13 +03:00
Daniel Stone
34228d8b28 GPE: fix absolute button events / GKVE: (non-XKB) don't repeat lock keys
Fix absolute button events in GPE, where we would previously send valuator
events without bumping numEvents accordingly, causing the core event to
go missing.
In the non-XKB path in GKVE, implement proper lock behaviour (one press to
enable, one press to disable, discard releases).
Fix debug_events prototype.
2006-08-15 15:23:53 +03:00
Daniel Stone
d6433be3cc Merge branch 'master' into input-hotplug 2006-08-12 21:50:52 +03:00