[PATCH 3/3] dix: ddx: Lift input handling duties from xf86 to dix
Peter Hutterer
peter.hutterer at who-t.net
Mon Sep 6 17:11:10 PDT 2010
On Tue, Aug 31, 2010 at 04:00:14PM -0300, Fernando Carrijo wrote:
> From: Fernando Carrijo <fcarrijo at freedesktop.org>
>
> Signed-off-by: Fernando Carrijo <fcarrijo at freedesktop.org>
> Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>
> ---
> dix/inputhandler.c | 109 ++++++++++++++++++++++++++++++++++--
> hw/xfree86/common/xf86Events.c | 122 +++-------------------------------------
> 2 files changed, 112 insertions(+), 119 deletions(-)
>
> diff --git a/dix/inputhandler.c b/dix/inputhandler.c
> index b6dd9e9..57fba05 100644
> --- a/dix/inputhandler.c
> +++ b/dix/inputhandler.c
> @@ -5,54 +5,153 @@ IHPtr InputHandlers = NULL;
> static pointer
> addInputHandler(int fd, InputHandlerProc proc, pointer data)
> {
> - return NULL;
> + IHPtr ih;
> +
> + if (fd < 0 || !proc)
> + return NULL;
> +
> + ih = calloc(sizeof(*ih), 1);
> + if (!ih)
> + return NULL;
> +
> + ih->fd = fd;
> + ih->ihproc = proc;
> + ih->data = data;
> + ih->enabled = TRUE;
> +
> + ih->next = InputHandlers;
> + InputHandlers = ih;
> +
> + return ih;
> }
>
> pointer
> AddInputHandler(int fd, InputHandlerProc proc, pointer data)
> {
> - return NULL;
> + IHPtr ih = addInputHandler(fd, proc, data);
> +
> + if (ih)
> + AddEnabledDevice(fd);
> + return ih;
> }
>
> pointer
> AddGeneralHandler(int fd, InputHandlerProc proc, pointer data)
> {
> - return NULL;
> + IHPtr ih = addInputHandler(fd, proc, data);
> +
> + if (ih)
> + AddGeneralSocket(fd);
> + return ih;
> }
>
> static void
> removeInputHandler(IHPtr ih)
> {
> + IHPtr p;
> +
> + if (ih == InputHandlers)
> + InputHandlers = ih->next;
> + else {
> + p = InputHandlers;
> + while (p && p->next != ih)
> + p = p->next;
> + if (ih)
> + p->next = ih->next;
> + }
> + free(ih);
> }
>
> int
> RemoveInputHandler(pointer handler)
> {
> - return 0;
> + IHPtr ih;
> + int fd;
> +
> + if (!handler)
> + return -1;
> +
> + ih = handler;
If we're assuming the handler is an IHPtr, why make it a pointer?
same goes for all others, we might as well have the compiler help us here.
this should probably be a follow-up patch though.
Cheers,
Peter
> + fd = ih->fd;
> +
> + if (ih->fd >= 0)
> + RemoveEnabledDevice(ih->fd);
> + removeInputHandler(ih);
> +
> + return fd;
> }
>
> int
> RemoveGeneralHandler(pointer handler)
> {
> - return 0;
> + IHPtr ih;
> + int fd;
> +
> + if (!handler)
> + return -1;
> +
> + ih = handler;
> + fd = ih->fd;
> +
> + if (ih->fd >= 0)
> + RemoveGeneralSocket(ih->fd);
> + removeInputHandler(ih);
> +
> + return fd;
> }
>
> void
> DisableInputHandler(pointer handler)
> {
> + IHPtr ih;
> +
> + if (!handler)
> + return;
> +
> + ih = handler;
> + ih->enabled = FALSE;
> + if (ih->fd >= 0)
> + RemoveEnabledDevice(ih->fd);
> }
>
> void
> DisableGeneralHandler(pointer handler)
> {
> + IHPtr ih;
> +
> + if (!handler)
> + return;
> +
> + ih = handler;
> + ih->enabled = FALSE;
> + if (ih->fd >= 0)
> + RemoveGeneralSocket(ih->fd);
> }
>
> void
> EnableInputHandler(pointer handler)
> {
> + IHPtr ih;
> +
> + if (!handler)
> + return;
> +
> + ih = handler;
> + ih->enabled = TRUE;
> + if (ih->fd >= 0)
> + AddEnabledDevice(ih->fd);
> }
>
> void
> EnableGeneralHandler(pointer handler)
> {
> + IHPtr ih;
> +
> + if (!handler)
> + return;
> +
> + ih = handler;
> + ih->enabled = TRUE;
> + if (ih->fd >= 0)
> + AddGeneralSocket(ih->fd);
> }
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> index c7d97cb..d939dcb 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -559,158 +559,52 @@ xf86VTSwitch(void)
>
> /* Input handler registration */
>
> -static pointer
> -addInputHandler(int fd, InputHandlerProc proc, pointer data)
> -{
> - IHPtr ih;
> -
> - if (fd < 0 || !proc)
> - return NULL;
> -
> - ih = calloc(sizeof(*ih), 1);
> - if (!ih)
> - return NULL;
> -
> - ih->fd = fd;
> - ih->ihproc = proc;
> - ih->data = data;
> - ih->enabled = TRUE;
> -
> - ih->next = InputHandlers;
> - InputHandlers = ih;
> -
> - return ih;
> -}
> -
> pointer
> xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
> {
> - IHPtr ih = addInputHandler(fd, proc, data);
> -
> - if (ih)
> - AddEnabledDevice(fd);
> - return ih;
> + return AddInputHandler(fd, proc, data);
> }
>
> pointer
> xf86AddGeneralHandler(int fd, InputHandlerProc proc, pointer data)
> {
> - IHPtr ih = addInputHandler(fd, proc, data);
> -
> - if (ih)
> - AddGeneralSocket(fd);
> - return ih;
> -}
> -
> -static void
> -removeInputHandler(IHPtr ih)
> -{
> - IHPtr p;
> -
> - if (ih == InputHandlers)
> - InputHandlers = ih->next;
> - else {
> - p = InputHandlers;
> - while (p && p->next != ih)
> - p = p->next;
> - if (ih)
> - p->next = ih->next;
> - }
> - free(ih);
> + return AddGeneralHandler(fd, proc, data);
> }
>
> int
> xf86RemoveInputHandler(pointer handler)
> {
> - IHPtr ih;
> - int fd;
> -
> - if (!handler)
> - return -1;
> -
> - ih = handler;
> - fd = ih->fd;
> -
> - if (ih->fd >= 0)
> - RemoveEnabledDevice(ih->fd);
> - removeInputHandler(ih);
> -
> - return fd;
> + return RemoveInputHandler(handler);
> }
>
> int
> xf86RemoveGeneralHandler(pointer handler)
> {
> - IHPtr ih;
> - int fd;
> -
> - if (!handler)
> - return -1;
> -
> - ih = handler;
> - fd = ih->fd;
> -
> - if (ih->fd >= 0)
> - RemoveGeneralSocket(ih->fd);
> - removeInputHandler(ih);
> -
> - return fd;
> + return RemoveGeneralHandler(handler);
> }
>
> void
> xf86DisableInputHandler(pointer handler)
> {
> - IHPtr ih;
> -
> - if (!handler)
> - return;
> -
> - ih = handler;
> - ih->enabled = FALSE;
> - if (ih->fd >= 0)
> - RemoveEnabledDevice(ih->fd);
> + return DisableInputHandler(handler);
> }
>
> void
> xf86DisableGeneralHandler(pointer handler)
> {
> - IHPtr ih;
> -
> - if (!handler)
> - return;
> -
> - ih = handler;
> - ih->enabled = FALSE;
> - if (ih->fd >= 0)
> - RemoveGeneralSocket(ih->fd);
> + return DisableGeneralHandler(handler);
> }
>
> void
> xf86EnableInputHandler(pointer handler)
> {
> - IHPtr ih;
> -
> - if (!handler)
> - return;
> -
> - ih = handler;
> - ih->enabled = TRUE;
> - if (ih->fd >= 0)
> - AddEnabledDevice(ih->fd);
> + return EnableInputHandler(handler);
> }
>
> void
> xf86EnableGeneralHandler(pointer handler)
> {
> - IHPtr ih;
> -
> - if (!handler)
> - return;
> -
> - ih = handler;
> - ih->enabled = TRUE;
> - if (ih->fd >= 0)
> - AddGeneralSocket(ih->fd);
> + return EnableGeneralHandler(handler);
> }
>
> /*
> --
> 1.7.0.4
More information about the xorg-devel
mailing list