mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
Remove SIGIO support for input [v5]
This removes all of the SIGIO handling support used for input
throughout the X server, preparing the way for using threads for input
handling instead.
Places calling OsBlockSIGIO and OsReleaseSIGIO are marked with calls
to stub functions input_lock/input_unlock so that we don't lose this
information.
xfree86 SIGIO support is reworked to use internal versions of
OsBlockSIGIO and OsReleaseSIGIO.
v2: Don't change locking order (Peter Hutterer)
v3: Comment weird && FALSE in xf86Helper.c
Leave errno save/restore in xf86ReadInput
Squash with stub adding patch (Peter Hutterer)
v4: Leave UseSIGIO config parameter so that
existing config files don't break (Peter Hutterer)
v5: Split a couple of independent patch bits out
of kinput.c (Peter Hutterer)
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
@@ -493,14 +493,14 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent)
|
||||
|
||||
FreeSprite(dev);
|
||||
|
||||
/* now that the device is disabled, we can reset the signal handler's
|
||||
/* now that the device is disabled, we can reset the event reader's
|
||||
* last.slave */
|
||||
OsBlockSignals();
|
||||
input_lock();
|
||||
for (other = inputInfo.devices; other; other = other->next) {
|
||||
if (other->last.slave == dev)
|
||||
other->last.slave = NULL;
|
||||
}
|
||||
OsReleaseSignals();
|
||||
input_unlock();
|
||||
|
||||
LeaveWindow(dev);
|
||||
SetFocusOut(dev);
|
||||
@@ -1033,7 +1033,7 @@ CloseDownDevices(void)
|
||||
{
|
||||
DeviceIntPtr dev;
|
||||
|
||||
OsBlockSignals();
|
||||
input_lock();
|
||||
|
||||
/* Float all SDs before closing them. Note that at this point resources
|
||||
* (e.g. cursors) have been freed already, so we can't just call
|
||||
@@ -1060,7 +1060,7 @@ CloseDownDevices(void)
|
||||
XkbDeleteRulesDflts();
|
||||
XkbDeleteRulesUsed();
|
||||
|
||||
OsReleaseSignals();
|
||||
input_unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -165,7 +165,7 @@ AccelerationDefaultCleanup(DeviceIntPtr dev)
|
||||
* AccelSchemeProc(), but that seems impossible. Schemes don't get
|
||||
* switched often anyway.
|
||||
*/
|
||||
OsBlockSignals();
|
||||
input_lock();
|
||||
dev->valuator->accelScheme.AccelSchemeProc = NULL;
|
||||
FreeVelocityData(vel);
|
||||
free(vel);
|
||||
@@ -175,7 +175,7 @@ AccelerationDefaultCleanup(DeviceIntPtr dev)
|
||||
accelData);
|
||||
free(dev->valuator->accelScheme.accelData);
|
||||
dev->valuator->accelScheme.accelData = NULL;
|
||||
OsReleaseSignals();
|
||||
input_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ TouchResizeQueue(ClientPtr client, void *closure)
|
||||
{
|
||||
int i;
|
||||
|
||||
OsBlockSignals();
|
||||
input_lock();
|
||||
|
||||
/* first two ids are reserved */
|
||||
for (i = 2; i < MAXDEVICES; i++) {
|
||||
@@ -112,7 +112,7 @@ TouchResizeQueue(ClientPtr client, void *closure)
|
||||
}
|
||||
|
||||
}
|
||||
OsReleaseSignals();
|
||||
input_unlock();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1077,7 +1077,7 @@ TouchEndPhysicallyActiveTouches(DeviceIntPtr dev)
|
||||
InternalEvent *eventlist = InitEventList(GetMaximumEventsNum());
|
||||
int i;
|
||||
|
||||
OsBlockSignals();
|
||||
input_lock();
|
||||
mieqProcessInputEvents();
|
||||
for (i = 0; i < dev->last.num_touches; i++) {
|
||||
DDXTouchPointInfoPtr ddxti = dev->last.touches + i;
|
||||
@@ -1091,7 +1091,7 @@ TouchEndPhysicallyActiveTouches(DeviceIntPtr dev)
|
||||
mieqProcessDeviceEvent(dev, eventlist + j, NULL);
|
||||
}
|
||||
}
|
||||
OsReleaseSignals();
|
||||
input_unlock();
|
||||
|
||||
FreeEventList(eventlist, GetMaximumEventsNum());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user