Commit ca3277fb910b9a2b51a1d2c3c1847c6f2757a35a
Exists in
master
and in
3 other branches
Merge branch 'master'
Showing
1 changed file
with
26 additions
and
19 deletions
Show diff stats
src/core/windows/event_dispatcher.c
@@ -73,7 +73,7 @@ int lib3270_default_event_dispatcher(H3270 *hSession, int block) | @@ -73,7 +73,7 @@ int lib3270_default_event_dispatcher(H3270 *hSession, int block) | ||
73 | 73 | ||
74 | retry: | 74 | retry: |
75 | 75 | ||
76 | - hSession->inputs_changed = 0; | 76 | + hSession->input.changed = 0; |
77 | 77 | ||
78 | // If we've processed any input, then don't block again. | 78 | // If we've processed any input, then don't block again. |
79 | if(processed_any) | 79 | if(processed_any) |
@@ -85,7 +85,7 @@ retry: | @@ -85,7 +85,7 @@ retry: | ||
85 | FD_ZERO(&wfds); | 85 | FD_ZERO(&wfds); |
86 | FD_ZERO(&xfds); | 86 | FD_ZERO(&xfds); |
87 | 87 | ||
88 | - for (ip = hSession->inputs; ip != (input_t *)NULL; ip = ip->next) | 88 | + for (ip = (input_t *) hSession->input.list.first; ip != (input_t *)NULL; ip = (input_t *) ip->next) |
89 | { | 89 | { |
90 | if(!ip->enabled) | 90 | if(!ip->enabled) |
91 | { | 91 | { |
@@ -114,13 +114,13 @@ retry: | @@ -114,13 +114,13 @@ retry: | ||
114 | 114 | ||
115 | if (block) | 115 | if (block) |
116 | { | 116 | { |
117 | - if (hSession->timeouts != TN) | 117 | + if (hSession->timeouts.first) |
118 | { | 118 | { |
119 | ms_ts(&now); | 119 | ms_ts(&now); |
120 | - if (now > hSession->timeouts->ts) | 120 | + if (now > ((timeout_t *) hSession->timeouts.first)->ts) |
121 | tmo = 0; | 121 | tmo = 0; |
122 | else | 122 | else |
123 | - tmo = hSession->timeouts->ts - now; | 123 | + tmo = ((timeout_t *) hSession->timeouts.first)->ts - now; |
124 | } | 124 | } |
125 | else | 125 | else |
126 | { | 126 | { |
@@ -152,29 +152,29 @@ retry: | @@ -152,29 +152,29 @@ retry: | ||
152 | } | 152 | } |
153 | else | 153 | else |
154 | { | 154 | { |
155 | - for (ip = hSession->inputs; ip != (input_t *) NULL; ip = ip->next) | 155 | + for (ip = (input_t *) hSession->input.list.first; ip != (input_t *)NULL; ip = (input_t *) ip->next) |
156 | { | 156 | { |
157 | if((ip->flag & LIB3270_IO_FLAG_READ) && FD_ISSET(ip->fd, &rfds)) | 157 | if((ip->flag & LIB3270_IO_FLAG_READ) && FD_ISSET(ip->fd, &rfds)) |
158 | { | 158 | { |
159 | - (*ip->call)(ip->session,ip->fd,LIB3270_IO_FLAG_READ,ip->userdata); | 159 | + (*ip->call)(hSession,ip->fd,LIB3270_IO_FLAG_READ,ip->userdata); |
160 | processed_any = True; | 160 | processed_any = True; |
161 | - if (hSession->inputs_changed) | 161 | + if (hSession->input.changed) |
162 | goto retry; | 162 | goto retry; |
163 | } | 163 | } |
164 | 164 | ||
165 | if ((ip->flag & LIB3270_IO_FLAG_WRITE) && FD_ISSET(ip->fd, &wfds)) | 165 | if ((ip->flag & LIB3270_IO_FLAG_WRITE) && FD_ISSET(ip->fd, &wfds)) |
166 | { | 166 | { |
167 | - (*ip->call)(ip->session,ip->fd,LIB3270_IO_FLAG_WRITE,ip->userdata); | 167 | + (*ip->call)(hSession,ip->fd,LIB3270_IO_FLAG_WRITE,ip->userdata); |
168 | processed_any = True; | 168 | processed_any = True; |
169 | - if (hSession->inputs_changed) | 169 | + if (hSession->input.changed) |
170 | goto retry; | 170 | goto retry; |
171 | } | 171 | } |
172 | 172 | ||
173 | if ((ip->flag & LIB3270_IO_FLAG_EXCEPTION) && FD_ISSET(ip->fd, &xfds)) | 173 | if ((ip->flag & LIB3270_IO_FLAG_EXCEPTION) && FD_ISSET(ip->fd, &xfds)) |
174 | { | 174 | { |
175 | - (*ip->call)(ip->session,ip->fd,LIB3270_IO_FLAG_EXCEPTION,ip->userdata); | 175 | + (*ip->call)(hSession,ip->fd,LIB3270_IO_FLAG_EXCEPTION,ip->userdata); |
176 | processed_any = True; | 176 | processed_any = True; |
177 | - if (hSession->inputs_changed) | 177 | + if (hSession->input.changed) |
178 | goto retry; | 178 | goto retry; |
179 | } | 179 | } |
180 | } | 180 | } |
@@ -186,26 +186,33 @@ retry: | @@ -186,26 +186,33 @@ retry: | ||
186 | } | 186 | } |
187 | 187 | ||
188 | // See what's expired. | 188 | // See what's expired. |
189 | - if (hSession->timeouts != TN) | 189 | + if (hSession->timeouts.first) |
190 | { | 190 | { |
191 | struct timeout *t; | 191 | struct timeout *t; |
192 | ms_ts(&now); | 192 | ms_ts(&now); |
193 | 193 | ||
194 | - while ((t = hSession->timeouts) != TN) | 194 | + while(hSession->timeouts.first) |
195 | { | 195 | { |
196 | + t = (struct timeout *) hSession->timeouts.first; | ||
197 | + | ||
196 | if (t->ts <= now) | 198 | if (t->ts <= now) |
197 | { | 199 | { |
198 | - hSession->timeouts = t->next; | 200 | + |
199 | t->in_play = True; | 201 | t->in_play = True; |
200 | - (*t->proc)(t->session); | 202 | + (*t->proc)(hSession); |
201 | processed_any = True; | 203 | processed_any = True; |
202 | - lib3270_free(t); | ||
203 | - } else | 204 | + |
205 | + lib3270_linked_list_delete_node(&hSession->timeouts,t); | ||
206 | + | ||
207 | + } | ||
208 | + else | ||
209 | + { | ||
204 | break; | 210 | break; |
211 | + } | ||
205 | } | 212 | } |
206 | } | 213 | } |
207 | 214 | ||
208 | - if (hSession->inputs_changed) | 215 | + if (hSession->input.changed) |
209 | goto retry; | 216 | goto retry; |
210 | 217 | ||
211 | return processed_any; | 218 | return processed_any; |