summaryrefslogtreecommitdiff
path: root/src/hwdata.c
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-03-28 13:29:51 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-04-15 06:10:07 +0200
commit2dd36313731773cfd96e41ef6b086bf6a9e5dd20 (patch)
tree2423e2a15def0ca92dab67ba41e55a11af3b9044 /src/hwdata.c
parentc25354f13a345a374585688d7ca7a7791fea1d9e (diff)
Use the event source time instead of the arrival time
The SYN_REPORT event time is equal to the time when the collective event was produced in the kernel driver, and thus better represents the actual device timings than the current arrival time. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/hwdata.c')
-rw-r--r--src/hwdata.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/hwdata.c b/src/hwdata.c
index f204884..d696e07 100644
--- a/src/hwdata.c
+++ b/src/hwdata.c
@@ -26,14 +26,6 @@ void init_hwdata(struct HWData *hw)
26 memset(hw, 0, sizeof(struct HWData)); 26 memset(hw, 0, sizeof(struct HWData));
27} 27}
28 28
29static mstime_t get_mstime()
30{
31 static const mstime_t ms = 1000;
32 struct timeval now;
33 gettimeofday(&now, NULL);
34 return now.tv_usec / ms + now.tv_sec * ms;
35}
36
37static void set_value(struct HWData *hw, int code, int value) 29static void set_value(struct HWData *hw, int code, int value)
38{ 30{
39 if (hw->nread < DIM_FINGER) { 31 if (hw->nread < DIM_FINGER) {
@@ -54,11 +46,12 @@ static void accept_finger(struct HWData *hw)
54 hw->mread[hw->nread] = 0; 46 hw->mread[hw->nread] = 0;
55} 47}
56 48
57static void accept_packet(struct HWData *hw) 49static void accept_packet(struct HWData *hw, const struct timeval* tv)
58{ 50{
51 static const mstime_t ms = 1000;
59 hw->nread = 0; 52 hw->nread = 0;
60 hw->mread[hw->nread] = 0; 53 hw->mread[hw->nread] = 0;
61 hw->evtime = get_mstime(); 54 hw->evtime = tv->tv_usec / ms + tv->tv_sec * ms;
62} 55}
63 56
64int read_hwdata(struct HWData *hw, const struct input_event* ev) 57int read_hwdata(struct HWData *hw, const struct input_event* ev)
@@ -67,7 +60,7 @@ int read_hwdata(struct HWData *hw, const struct input_event* ev)
67 case EV_SYN: 60 case EV_SYN:
68 switch (ev->code) { 61 switch (ev->code) {
69 case SYN_REPORT: 62 case SYN_REPORT:
70 accept_packet(hw); 63 accept_packet(hw, &ev->time);
71 return 1; 64 return 1;
72 case SYN_MT_REPORT: 65 case SYN_MT_REPORT:
73 accept_finger(hw); 66 accept_finger(hw);