hw/xfree86: Use NotifyFd for other input fd wakeups
Remove code in xf86Wakeup for dealing with other input and switch to using the new NotifyFd interface. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
c3fea428ae
commit
24e65bf0db
|
@ -100,8 +100,6 @@ Bool VTSwitchEnabled = TRUE; /* Allows run-time disabling for
|
||||||
switches when using the DRI
|
switches when using the DRI
|
||||||
automatic full screen mode.*/
|
automatic full screen mode.*/
|
||||||
|
|
||||||
extern fd_set EnabledDevices;
|
|
||||||
|
|
||||||
#ifdef XF86PM
|
#ifdef XF86PM
|
||||||
extern void (*xf86OSPMClose) (void);
|
extern void (*xf86OSPMClose) (void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -246,17 +244,6 @@ xf86ProcessActionEvent(ActionEvent action, void *arg)
|
||||||
void
|
void
|
||||||
xf86Wakeup(void *blockData, int err, void *pReadmask)
|
xf86Wakeup(void *blockData, int err, void *pReadmask)
|
||||||
{
|
{
|
||||||
if (err >= 0) { /* we don't want the handlers called if select() */
|
|
||||||
IHPtr ih, ih_tmp; /* returned with an error condition, do we? */
|
|
||||||
|
|
||||||
nt_list_for_each_entry_safe(ih, ih_tmp, InputHandlers, next) {
|
|
||||||
if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
|
|
||||||
(FD_ISSET(ih->fd, ((fd_set *) pReadmask)) != 0)) {
|
|
||||||
ih->ihproc(ih->fd, ih->data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (xf86VTSwitchPending())
|
if (xf86VTSwitchPending())
|
||||||
xf86VTSwitch();
|
xf86VTSwitch();
|
||||||
}
|
}
|
||||||
|
@ -601,6 +588,16 @@ xf86VTSwitch(void)
|
||||||
|
|
||||||
/* Input handler registration */
|
/* Input handler registration */
|
||||||
|
|
||||||
|
static void
|
||||||
|
xf86InputHandlerNotify(int fd, int ready, void *data)
|
||||||
|
{
|
||||||
|
IHPtr ih = data;
|
||||||
|
|
||||||
|
if (ih->enabled && ih->fd >= 0 && ih->ihproc) {
|
||||||
|
ih->ihproc(ih->fd, ih->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
addInputHandler(int fd, InputHandlerProc proc, void *data)
|
addInputHandler(int fd, InputHandlerProc proc, void *data)
|
||||||
{
|
{
|
||||||
|
@ -618,6 +615,11 @@ addInputHandler(int fd, InputHandlerProc proc, void *data)
|
||||||
ih->data = data;
|
ih->data = data;
|
||||||
ih->enabled = TRUE;
|
ih->enabled = TRUE;
|
||||||
|
|
||||||
|
if (!SetNotifyFd(fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih)) {
|
||||||
|
free(ih);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ih->next = InputHandlers;
|
ih->next = InputHandlers;
|
||||||
InputHandlers = ih;
|
InputHandlers = ih;
|
||||||
|
|
||||||
|
@ -629,10 +631,8 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, void *data)
|
||||||
{
|
{
|
||||||
IHPtr ih = addInputHandler(fd, proc, data);
|
IHPtr ih = addInputHandler(fd, proc, data);
|
||||||
|
|
||||||
if (ih) {
|
if (ih)
|
||||||
AddEnabledDevice(fd);
|
|
||||||
ih->is_input = TRUE;
|
ih->is_input = TRUE;
|
||||||
}
|
|
||||||
return ih;
|
return ih;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,8 +641,6 @@ xf86AddGeneralHandler(int fd, InputHandlerProc proc, void *data)
|
||||||
{
|
{
|
||||||
IHPtr ih = addInputHandler(fd, proc, data);
|
IHPtr ih = addInputHandler(fd, proc, data);
|
||||||
|
|
||||||
if (ih)
|
|
||||||
AddGeneralSocket(fd);
|
|
||||||
return ih;
|
return ih;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -672,6 +670,8 @@ removeInputHandler(IHPtr ih)
|
||||||
{
|
{
|
||||||
IHPtr p;
|
IHPtr p;
|
||||||
|
|
||||||
|
if (ih->fd >= 0)
|
||||||
|
RemoveNotifyFd(ih->fd);
|
||||||
if (ih == InputHandlers)
|
if (ih == InputHandlers)
|
||||||
InputHandlers = ih->next;
|
InputHandlers = ih->next;
|
||||||
else {
|
else {
|
||||||
|
@ -696,8 +696,6 @@ xf86RemoveInputHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
fd = ih->fd;
|
fd = ih->fd;
|
||||||
|
|
||||||
if (ih->fd >= 0)
|
|
||||||
RemoveEnabledDevice(ih->fd);
|
|
||||||
removeInputHandler(ih);
|
removeInputHandler(ih);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
|
@ -715,8 +713,6 @@ xf86RemoveGeneralHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
fd = ih->fd;
|
fd = ih->fd;
|
||||||
|
|
||||||
if (ih->fd >= 0)
|
|
||||||
RemoveGeneralSocket(ih->fd);
|
|
||||||
removeInputHandler(ih);
|
removeInputHandler(ih);
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
|
@ -733,7 +729,7 @@ xf86DisableInputHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
ih->enabled = FALSE;
|
ih->enabled = FALSE;
|
||||||
if (ih->fd >= 0)
|
if (ih->fd >= 0)
|
||||||
RemoveEnabledDevice(ih->fd);
|
RemoveNotifyFd(ih->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -747,7 +743,7 @@ xf86DisableGeneralHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
ih->enabled = FALSE;
|
ih->enabled = FALSE;
|
||||||
if (ih->fd >= 0)
|
if (ih->fd >= 0)
|
||||||
RemoveGeneralSocket(ih->fd);
|
RemoveNotifyFd(ih->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -761,7 +757,7 @@ xf86EnableInputHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
ih->enabled = TRUE;
|
ih->enabled = TRUE;
|
||||||
if (ih->fd >= 0)
|
if (ih->fd >= 0)
|
||||||
AddEnabledDevice(ih->fd);
|
SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -775,7 +771,7 @@ xf86EnableGeneralHandler(void *handler)
|
||||||
ih = handler;
|
ih = handler;
|
||||||
ih->enabled = TRUE;
|
ih->enabled = TRUE;
|
||||||
if (ih->fd >= 0)
|
if (ih->fd >= 0)
|
||||||
AddGeneralSocket(ih->fd);
|
SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue