Merge lp:~oif-team/evemu/trunk.realtime into lp:evemu

Proposed by Henrik Rydberg
Status: Merged
Merged at revision: 27
Proposed branch: lp:~oif-team/evemu/trunk.realtime
Merge into: lp:evemu
Diff against target: 69 lines (+30/-13)
2 files modified
include/evemu.h (+2/-0)
src/evemu.c (+28/-13)
To merge this branch: bzr merge lp:~oif-team/evemu/trunk.realtime
Reviewer Review Type Date Requested Status
Chase Douglas (community) Approve
Review via email: mp+53280@code.launchpad.net

Description of the change

Adding the useful evemu_read_event_realtime(), simplifying the implementation a bit, and helping further the frame, grail and python projects.

To post a comment you must log in.
Revision history for this message
Chase Douglas (chasedouglas) wrote :

Looks good to me.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/evemu.h'
2--- include/evemu.h 2011-02-03 02:29:13 +0000
3+++ include/evemu.h 2011-03-14 17:17:08 +0000
4@@ -76,6 +76,8 @@
5
6 int evemu_write_event(FILE *fp, const struct input_event *ev);
7 int evemu_read_event(FILE *fp, struct input_event *ev);
8+int evemu_read_event_realtime(FILE *fp, struct input_event *ev,
9+ struct timeval *evtime);
10
11 int evemu_record(FILE *fp, int fd, int ms);
12 int evemu_play(FILE *fp, int fd);
13
14=== modified file 'src/evemu.c'
15--- src/evemu.c 2011-02-03 02:29:13 +0000
16+++ src/evemu.c 2011-03-14 17:17:08 +0000
17@@ -361,24 +361,39 @@
18 return ret;
19 }
20
21+int evemu_read_event_realtime(FILE *fp, struct input_event *ev,
22+ struct timeval *evtime)
23+{
24+ unsigned long usec;
25+ int ret;
26+
27+ ret = evemu_read_event(fp, ev);
28+ if (ret <= 0)
29+ return ret;
30+
31+ if (evtime) {
32+ if (!evtime->tv_sec)
33+ *evtime = ev->time;
34+ usec = 1000000L * (ev->time.tv_sec - evtime->tv_sec);
35+ usec += ev->time.tv_usec - evtime->tv_usec;
36+ if (usec > 500) {
37+ usleep(usec);
38+ *evtime = ev->time;
39+ }
40+ }
41+
42+ return ret;
43+}
44+
45 int evemu_play(FILE *fp, int fd)
46 {
47- struct input_event prev, ev;
48- long check = 0, usec;
49+ struct input_event ev;
50+ struct timeval evtime;
51 int ret;
52
53- memset(&prev, 0, sizeof(prev));
54- while (evemu_read_event(fp, &ev) > 0) {
55- if (!prev.time.tv_sec)
56- prev = ev;
57- usec = 1000000L * (ev.time.tv_sec - prev.time.tv_sec);
58- usec += ev.time.tv_usec - prev.time.tv_usec;
59- if (usec - check > 500) {
60- usleep(usec - check);
61- check = usec;
62- }
63+ memset(&evtime, 0, sizeof(evtime));
64+ while (evemu_read_event_realtime(fp, &ev, &evtime) > 0)
65 SYSCALL(ret = write(fd, &ev, sizeof(ev)));
66- }
67
68 return 0;
69 }

Subscribers

People subscribed via source and target branches

to all changes: