diff options
author | Keith Packard <keithp@keithp.com> | 2015-12-03 01:02:02 -0600 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2016-07-18 15:25:59 -0400 |
commit | 24e65bf0db57bf4ac70386c0a0e8275b73edd2fb (patch) | |
tree | b06e39fa06dd265a0ac6b10db6b8ba6f5c09cf2e | |
parent | c3fea428aed919826130ef8ebdb2cceb445a845b (diff) |
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>
-rw-r--r-- | hw/xfree86/common/xf86Events.c | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index 7b9c33aeb..7d3c35f9d 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -100,8 +100,6 @@ Bool VTSwitchEnabled = TRUE; /* Allows run-time disabling for switches when using the DRI automatic full screen mode.*/ -extern fd_set EnabledDevices; - #ifdef XF86PM extern void (*xf86OSPMClose) (void); #endif @@ -246,17 +244,6 @@ xf86ProcessActionEvent(ActionEvent action, void *arg) void 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()) xf86VTSwitch(); } @@ -601,6 +588,16 @@ xf86VTSwitch(void) /* 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 * addInputHandler(int fd, InputHandlerProc proc, void *data) { @@ -618,6 +615,11 @@ addInputHandler(int fd, InputHandlerProc proc, void *data) ih->data = data; ih->enabled = TRUE; + if (!SetNotifyFd(fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih)) { + free(ih); + return NULL; + } + ih->next = InputHandlers; InputHandlers = ih; @@ -629,10 +631,8 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, void *data) { IHPtr ih = addInputHandler(fd, proc, data); - if (ih) { - AddEnabledDevice(fd); + if (ih) ih->is_input = TRUE; - } return ih; } @@ -641,8 +641,6 @@ xf86AddGeneralHandler(int fd, InputHandlerProc proc, void *data) { IHPtr ih = addInputHandler(fd, proc, data); - if (ih) - AddGeneralSocket(fd); return ih; } @@ -672,6 +670,8 @@ removeInputHandler(IHPtr ih) { IHPtr p; + if (ih->fd >= 0) + RemoveNotifyFd(ih->fd); if (ih == InputHandlers) InputHandlers = ih->next; else { @@ -696,8 +696,6 @@ xf86RemoveInputHandler(void *handler) ih = handler; fd = ih->fd; - if (ih->fd >= 0) - RemoveEnabledDevice(ih->fd); removeInputHandler(ih); return fd; @@ -715,8 +713,6 @@ xf86RemoveGeneralHandler(void *handler) ih = handler; fd = ih->fd; - if (ih->fd >= 0) - RemoveGeneralSocket(ih->fd); removeInputHandler(ih); return fd; @@ -733,7 +729,7 @@ xf86DisableInputHandler(void *handler) ih = handler; ih->enabled = FALSE; if (ih->fd >= 0) - RemoveEnabledDevice(ih->fd); + RemoveNotifyFd(ih->fd); } void @@ -747,7 +743,7 @@ xf86DisableGeneralHandler(void *handler) ih = handler; ih->enabled = FALSE; if (ih->fd >= 0) - RemoveGeneralSocket(ih->fd); + RemoveNotifyFd(ih->fd); } void @@ -761,7 +757,7 @@ xf86EnableInputHandler(void *handler) ih = handler; ih->enabled = TRUE; if (ih->fd >= 0) - AddEnabledDevice(ih->fd); + SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih); } void @@ -775,7 +771,7 @@ xf86EnableGeneralHandler(void *handler) ih = handler; ih->enabled = TRUE; if (ih->fd >= 0) - AddGeneralSocket(ih->fd); + SetNotifyFd(ih->fd, xf86InputHandlerNotify, X_NOTIFY_READ, ih); } /* |