--
Tiago Vignatti
C3SL - Centro de Computação Científica e Software Livre
www.c3sl.ufpr.br
>From ad5f1295fb2db4f978f44f54770c0e91cebc9fcd Mon Sep 17 00:00:00 2001
From: Tiago Vignatti <[EMAIL PROTECTED]>
Date: Wed, 1 Oct 2008 21:19:08 -0300
Subject: [PATCH] ddx (xfree86) implementation of the input-thread.
Signed-off-by: Tiago Vignatti <[EMAIL PROTECTED]>
---
hw/xfree86/common/xf86Events.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 15dce9f..50ed0f5 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -321,7 +321,19 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
if (xf86VTSwitchPending()) xf86VTSwitch();
}
+#ifdef INPUT_THREAD
+/*
+ * xf86ThreadReadInput --
+ * signal handler for the input thread.
+ */
+static void
+xf86ThreadReadInput(void *closure)
+{
+ InputInfoPtr pInfo = (InputInfoPtr) closure;
+ pInfo->read_input(pInfo);
+}
+#else
/*
* xf86SigioReadInput --
* signal handler for the SIGIO signal.
@@ -339,6 +351,7 @@ xf86SigioReadInput(int fd,
xf86UnblockSIGIO(sigstate);
errno = errno_save;
}
+#endif
/*
* xf86AddEnabledDevice --
@@ -347,9 +360,13 @@ xf86SigioReadInput(int fd,
_X_EXPORT void
xf86AddEnabledDevice(InputInfoPtr pInfo)
{
+#ifdef INPUT_THREAD
+ AddEnabledDeviceThreaded (pInfo->fd, xf86ThreadReadInput, pInfo);
+#else
if (!xf86InstallSIGIOHandler (pInfo->fd, xf86SigioReadInput, pInfo)) {
AddEnabledDevice(pInfo->fd);
}
+#endif
}
/*
@@ -359,9 +376,13 @@ xf86AddEnabledDevice(InputInfoPtr pInfo)
_X_EXPORT void
xf86RemoveEnabledDevice(InputInfoPtr pInfo)
{
+#ifdef INPUT_THREAD
+ RemoveEnabledDeviceThreaded(pInfo->fd);
+#else
if (!xf86RemoveSIGIOHandler (pInfo->fd)) {
RemoveEnabledDevice(pInfo->fd);
}
+#endif
}
static int *xf86SignalIntercept = NULL;
--
1.5.4.3
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg