Commit Graph

328 Commits

Author SHA1 Message Date
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