Merge lp:~chasedouglas/oif-qml/dispatch-continue into lp:oif-qml

Proposed by Chase Douglas
Status: Merged
Merged at revision: 114
Proposed branch: lp:~chasedouglas/oif-qml/dispatch-continue
Merge into: lp:oif-qml
Diff against target: 102 lines (+47/-45)
1 file modified
src/geissingleton.cpp (+47/-45)
To merge this branch: bzr merge lp:~chasedouglas/oif-qml/dispatch-continue
Reviewer Review Type Date Requested Status
Stephen M. Webb (community) Approve
Review via email: mp+103185@code.launchpad.net

Description of the change

Fix geis dispatch handling so all available events are handled and no warnings are emitted.

To post a comment you must log in.
Revision history for this message
Stephen M. Webb (bregma) wrote :

The Right Thing To Do.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/geissingleton.cpp'
2--- src/geissingleton.cpp 2011-10-14 17:22:30 +0000
3+++ src/geissingleton.cpp 2012-04-23 22:27:17 +0000
4@@ -66,51 +66,53 @@
5 void GeisSingleton::GeisEventSlot() {
6 GeisStatus status;
7
8- status = geis_dispatch_events(geis_);
9- if (status != GEIS_STATUS_SUCCESS) {
10- qWarning("Failed to dispatch geis events");
11- return;
12- }
13-
14- GeisEvent event;
15- for (status = geis_next_event(geis_, &event);
16- status == GEIS_STATUS_SUCCESS || status == GEIS_STATUS_CONTINUE;
17- status = geis_next_event(geis_, &event)) {
18- switch (geis_event_type(event)) {
19- case GEIS_EVENT_CLASS_AVAILABLE:
20- case GEIS_EVENT_CLASS_CHANGED:
21- case GEIS_EVENT_CLASS_UNAVAILABLE:
22- HandleClassEvent(event);
23- break;
24-
25- case GEIS_EVENT_DEVICE_AVAILABLE:
26- case GEIS_EVENT_DEVICE_UNAVAILABLE:
27- HandleDeviceEvent(event);
28- break;
29-
30- case GEIS_EVENT_INIT_COMPLETE:
31- initialized_ = true;
32- emit Initialized();
33- break;
34-
35- case GEIS_EVENT_GESTURE_BEGIN:
36- HandleGestureBeginEvent(event);
37- break;
38-
39- case GEIS_EVENT_GESTURE_UPDATE:
40- HandleGestureUpdateEvent(false, event);
41- break;
42-
43- case GEIS_EVENT_GESTURE_END:
44- HandleGestureUpdateEvent(true, event);
45- break;
46-
47- default:
48- break;
49- }
50-
51- geis_event_delete(event);
52- }
53+ do {
54+ status = geis_dispatch_events(geis_);
55+ if (status != GEIS_STATUS_SUCCESS && status != GEIS_STATUS_CONTINUE) {
56+ qWarning("Failed to dispatch geis events");
57+ return;
58+ }
59+
60+ GeisEvent event;
61+ for (status = geis_next_event(geis_, &event);
62+ status == GEIS_STATUS_SUCCESS || status == GEIS_STATUS_CONTINUE;
63+ status = geis_next_event(geis_, &event)) {
64+ switch (geis_event_type(event)) {
65+ case GEIS_EVENT_CLASS_AVAILABLE:
66+ case GEIS_EVENT_CLASS_CHANGED:
67+ case GEIS_EVENT_CLASS_UNAVAILABLE:
68+ HandleClassEvent(event);
69+ break;
70+
71+ case GEIS_EVENT_DEVICE_AVAILABLE:
72+ case GEIS_EVENT_DEVICE_UNAVAILABLE:
73+ HandleDeviceEvent(event);
74+ break;
75+
76+ case GEIS_EVENT_INIT_COMPLETE:
77+ initialized_ = true;
78+ emit Initialized();
79+ break;
80+
81+ case GEIS_EVENT_GESTURE_BEGIN:
82+ HandleGestureBeginEvent(event);
83+ break;
84+
85+ case GEIS_EVENT_GESTURE_UPDATE:
86+ HandleGestureUpdateEvent(false, event);
87+ break;
88+
89+ case GEIS_EVENT_GESTURE_END:
90+ HandleGestureUpdateEvent(true, event);
91+ break;
92+
93+ default:
94+ break;
95+ }
96+
97+ geis_event_delete(event);
98+ }
99+ } while (status == GEIS_STATUS_CONTINUE);
100 }
101
102 void GeisSingleton::HandleClassEvent(GeisEvent event) {

Subscribers

People subscribed via source and target branches