diff options
| author | Henrik Rydberg <rydberg@euromail.se> | 2008-11-06 16:00:08 +0100 |
|---|---|---|
| committer | Henrik Rydberg <rydberg@euromail.se> | 2008-11-06 16:00:08 +0100 |
| commit | 3734c2c5dc65f41aa727d9d69201d604eab6e77d (patch) | |
| tree | ea9fa82ccc2afef9183f01f77084a69d85756542 /src/hwdata.c | |
| parent | 826439bce844fdbc8d7e47c0964cb15fd8a8fe93 (diff) | |
event loop works, buffer works, now look at synched event
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/hwdata.c')
| -rw-r--r-- | src/hwdata.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/hwdata.c b/src/hwdata.c index 212e860..17b9a46 100644 --- a/src/hwdata.c +++ b/src/hwdata.c | |||
| @@ -1,17 +1,22 @@ | |||
| 1 | #include "hwdata.h" | 1 | #include "hwdata.h" |
| 2 | #include <errno.h> | ||
| 3 | 2 | ||
| 4 | /******************************************************/ | 3 | /******************************************************/ |
| 5 | 4 | ||
| 6 | static int parse_event(struct HWData *hw) | 5 | void init_hwdata(struct HWData *hw) |
| 6 | { | ||
| 7 | memset(hw, 0, sizeof(struct HWData)); | ||
| 8 | } | ||
| 9 | |||
| 10 | /******************************************************/ | ||
| 11 | |||
| 12 | bool read_hwdata(struct HWData *hw, const struct input_event* ev) | ||
| 7 | { | 13 | { |
| 8 | const struct input_event *ev = hw->event + hw->at++; | ||
| 9 | bool on = ev->value != 0; | 14 | bool on = ev->value != 0; |
| 10 | switch (ev->type) { | 15 | switch (ev->type) { |
| 11 | case EV_SYN: | 16 | case EV_SYN: |
| 12 | switch (ev->code) { | 17 | switch (ev->code) { |
| 13 | case SYN_REPORT: | 18 | case SYN_REPORT: |
| 14 | return 0; | 19 | return 1; |
| 15 | } | 20 | } |
| 16 | break; | 21 | break; |
| 17 | case EV_KEY: | 22 | case EV_KEY: |
| @@ -61,28 +66,11 @@ static int parse_event(struct HWData *hw) | |||
| 61 | } | 66 | } |
| 62 | break; | 67 | break; |
| 63 | } | 68 | } |
| 64 | return -EAGAIN; | 69 | return 0; |
| 65 | } | 70 | } |
| 66 | 71 | ||
| 67 | /******************************************************/ | 72 | /******************************************************/ |
| 68 | 73 | ||
| 69 | int read_hwdata(struct HWData *hw, int fd) | ||
| 70 | { | ||
| 71 | int n; | ||
| 72 | do { | ||
| 73 | while (hw->at < hw->nev) | ||
| 74 | if (!parse_event(hw)) | ||
| 75 | return 0; | ||
| 76 | n = read(fd, hw->event, sizeof(hw->event)); | ||
| 77 | hw->at = 0; | ||
| 78 | hw->nev = n / sizeof(struct input_event); | ||
| 79 | xf86Msg(X_INFO, "multitouch: read: %d %d\n", n, hw->nev); | ||
| 80 | } while (n > 0); | ||
| 81 | return -EIO; | ||
| 82 | }; | ||
| 83 | |||
| 84 | /******************************************************/ | ||
| 85 | |||
| 86 | void output_hwdata(const struct HWData *hw) | 74 | void output_hwdata(const struct HWData *hw) |
| 87 | { | 75 | { |
| 88 | } | 76 | } |
