Commit 492a455996cd4e975ba16d8ecb8b37e94d7c63d3
1 parent
51027b5f
Exists in
master
and in
3 other branches
Adding userdata pointer on timer handle.
Showing
7 changed files
with
17 additions
and
66 deletions
Show diff stats
src/core/host.c
@@ -64,7 +64,7 @@ | @@ -64,7 +64,7 @@ | ||
64 | /** | 64 | /** |
65 | * @brief Called from timer to attempt an automatic reconnection. | 65 | * @brief Called from timer to attempt an automatic reconnection. |
66 | */ | 66 | */ |
67 | -static int check_for_auto_reconnect(H3270 *hSession) | 67 | +static int check_for_auto_reconnect(H3270 *hSession, void GNUC_UNUSED(*userdata)) |
68 | { | 68 | { |
69 | 69 | ||
70 | if(hSession->auto_reconnect_inprogress) | 70 | if(hSession->auto_reconnect_inprogress) |
@@ -94,7 +94,7 @@ int lib3270_activate_auto_reconnect(H3270 *hSession, unsigned long msec) | @@ -94,7 +94,7 @@ int lib3270_activate_auto_reconnect(H3270 *hSession, unsigned long msec) | ||
94 | return EBUSY; | 94 | return EBUSY; |
95 | 95 | ||
96 | hSession->auto_reconnect_inprogress = 1; | 96 | hSession->auto_reconnect_inprogress = 1; |
97 | - (void) AddTimer(msec, hSession, check_for_auto_reconnect); | 97 | + (void) AddTimer(msec, hSession, check_for_auto_reconnect, NULL); |
98 | 98 | ||
99 | return 0; | 99 | return 0; |
100 | } | 100 | } |
src/core/iocalls.c
@@ -63,7 +63,7 @@ | @@ -63,7 +63,7 @@ | ||
63 | 63 | ||
64 | // Timeout calls | 64 | // Timeout calls |
65 | static void internal_remove_timer(H3270 *session, void *timer); | 65 | static void internal_remove_timer(H3270 *session, void *timer); |
66 | - static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)); | 66 | + static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session, void *userdata), void *userdata); |
67 | 67 | ||
68 | static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); | 68 | static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); |
69 | static void internal_remove_poll(H3270 *session, void *id); | 69 | static void internal_remove_poll(H3270 *session, void *id); |
@@ -78,7 +78,7 @@ | @@ -78,7 +78,7 @@ | ||
78 | 78 | ||
79 | /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ | 79 | /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ |
80 | 80 | ||
81 | - static void * (*add_timer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)) | 81 | + static void * (*add_timer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session, void *userdata), void *userdata) |
82 | = internal_add_timer; | 82 | = internal_add_timer; |
83 | 83 | ||
84 | static void (*remove_timer)(H3270 *session, void *timer) | 84 | static void (*remove_timer)(H3270 *session, void *timer) |
@@ -128,7 +128,7 @@ static void ms_ts(unsigned long long *u) | @@ -128,7 +128,7 @@ static void ms_ts(unsigned long long *u) | ||
128 | } | 128 | } |
129 | #endif | 129 | #endif |
130 | 130 | ||
131 | -static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)) | 131 | +static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session, void *userdata), void *userdata) |
132 | { | 132 | { |
133 | timeout_t *t_new; | 133 | timeout_t *t_new; |
134 | timeout_t *t; | 134 | timeout_t *t; |
@@ -139,6 +139,7 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | @@ -139,6 +139,7 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | ||
139 | t_new = (timeout_t *) lib3270_malloc(sizeof(timeout_t)); | 139 | t_new = (timeout_t *) lib3270_malloc(sizeof(timeout_t)); |
140 | 140 | ||
141 | t_new->proc = proc; | 141 | t_new->proc = proc; |
142 | + t_new->userdata = userdata; | ||
142 | t_new->in_play = False; | 143 | t_new->in_play = False; |
143 | 144 | ||
144 | #if defined(_WIN32) | 145 | #if defined(_WIN32) |
@@ -207,28 +208,6 @@ static void internal_remove_timer(H3270 *session, void * timer) | @@ -207,28 +208,6 @@ static void internal_remove_timer(H3270 *session, void * timer) | ||
207 | if(!st->in_play) | 208 | if(!st->in_play) |
208 | lib3270_linked_list_delete_node(&session->timeouts,timer); | 209 | lib3270_linked_list_delete_node(&session->timeouts,timer); |
209 | 210 | ||
210 | - /* | ||
211 | - timeout_t *t; | ||
212 | - timeout_t *prev = TN; | ||
213 | - | ||
214 | - | ||
215 | - if (st->in_play) | ||
216 | - return; | ||
217 | - | ||
218 | - for (t = session->timeouts; t != TN; t = t->next) | ||
219 | - { | ||
220 | - if (t == st) | ||
221 | - { | ||
222 | - if (prev != TN) | ||
223 | - prev->next = t->next; | ||
224 | - else | ||
225 | - session->timeouts = t->next; | ||
226 | - lib3270_free(t); | ||
227 | - return; | ||
228 | - } | ||
229 | - prev = t; | ||
230 | - } | ||
231 | - */ | ||
232 | } | 211 | } |
233 | 212 | ||
234 | /* I/O events. */ | 213 | /* I/O events. */ |
@@ -250,35 +229,7 @@ static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, vo | @@ -250,35 +229,7 @@ static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, vo | ||
250 | static void internal_remove_poll(H3270 *session, void *id) | 229 | static void internal_remove_poll(H3270 *session, void *id) |
251 | { | 230 | { |
252 | lib3270_linked_list_delete_node(&session->input.list,id); | 231 | lib3270_linked_list_delete_node(&session->input.list,id); |
253 | - | ||
254 | session->input.changed = 1; | 232 | session->input.changed = 1; |
255 | - | ||
256 | - /* | ||
257 | - input_t *ip; | ||
258 | - input_t *prev = (input_t *)NULL; | ||
259 | - | ||
260 | - for (ip = session->inputs; ip != (input_t *) NULL; ip = (input_t *) ip->next) | ||
261 | - { | ||
262 | - if (ip == (input_t *)id) | ||
263 | - break; | ||
264 | - | ||
265 | - prev = ip; | ||
266 | - } | ||
267 | - | ||
268 | - if (ip == (input_t *)NULL) | ||
269 | - { | ||
270 | - lib3270_write_log(session,"lib3270","Invalid call to (%s): Input %p wasnt found in the list",__FUNCTION__,id); | ||
271 | - return; | ||
272 | - } | ||
273 | - | ||
274 | - if (prev != (input_t *)NULL) | ||
275 | - prev->next = ip->next; | ||
276 | - else | ||
277 | - session->inputs = (input_t *) ip->next; | ||
278 | - | ||
279 | - lib3270_free(ip); | ||
280 | - session->inputs_changed = 1; | ||
281 | - */ | ||
282 | } | 233 | } |
283 | 234 | ||
284 | static void internal_set_poll_state(H3270 *session, void *id, int enabled) | 235 | static void internal_set_poll_state(H3270 *session, void *id, int enabled) |
@@ -372,11 +323,11 @@ static void internal_ring_bell(H3270 GNUC_UNUSED(*session)) | @@ -372,11 +323,11 @@ static void internal_ring_bell(H3270 GNUC_UNUSED(*session)) | ||
372 | 323 | ||
373 | /* External entry points */ | 324 | /* External entry points */ |
374 | 325 | ||
375 | -void * AddTimer(unsigned long interval_ms, H3270 *session, int (*proc)(H3270 *session)) | 326 | +void * AddTimer(unsigned long interval_ms, H3270 *session, int (*proc)(H3270 *session, void *userdata), void *userdata) |
376 | { | 327 | { |
377 | void *timer; | 328 | void *timer; |
378 | CHECK_SESSION_HANDLE(session); | 329 | CHECK_SESSION_HANDLE(session); |
379 | - timer = add_timer(session,interval_ms,proc); | 330 | + timer = add_timer(session,interval_ms,proc,userdata); |
380 | trace("Timeout %p created with %ld ms",timer,interval_ms); | 331 | trace("Timeout %p created with %ld ms",timer,interval_ms); |
381 | return timer; | 332 | return timer; |
382 | } | 333 | } |
@@ -427,7 +378,7 @@ void remove_input_calls(H3270 *session) | @@ -427,7 +378,7 @@ void remove_input_calls(H3270 *session) | ||
427 | } | 378 | } |
428 | } | 379 | } |
429 | 380 | ||
430 | -LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)) | 381 | +LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session,void *userdata), void *userdata), void (*rm)(H3270 *session, void *timer)) |
431 | { | 382 | { |
432 | if(add) | 383 | if(add) |
433 | add_timer = add; | 384 | add_timer = add; |
src/core/keyboard/kybd.c
@@ -1009,7 +1009,7 @@ LIB3270_EXPORT int lib3270_clear_operator_error(H3270 *hSession) | @@ -1009,7 +1009,7 @@ LIB3270_EXPORT int lib3270_clear_operator_error(H3270 *hSession) | ||
1009 | /** | 1009 | /** |
1010 | * @brief Deferred keyboard unlock. | 1010 | * @brief Deferred keyboard unlock. |
1011 | */ | 1011 | */ |
1012 | -static int defer_unlock(H3270 *hSession) | 1012 | +static int defer_unlock(H3270 *hSession, void GNUC_UNUSED(*userdata)) |
1013 | { | 1013 | { |
1014 | lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK); | 1014 | lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK); |
1015 | status_reset(hSession); | 1015 | status_reset(hSession); |
@@ -1067,12 +1067,12 @@ void do_reset(H3270 *hSession, Boolean explicit) | @@ -1067,12 +1067,12 @@ void do_reset(H3270 *hSession, Boolean explicit) | ||
1067 | 1067 | ||
1068 | if(hSession->unlock_delay_ms) | 1068 | if(hSession->unlock_delay_ms) |
1069 | { | 1069 | { |
1070 | - hSession->unlock_id = AddTimer(hSession->unlock_delay_ms, hSession, defer_unlock); | 1070 | + hSession->unlock_id = AddTimer(hSession->unlock_delay_ms, hSession, defer_unlock, NULL); |
1071 | } | 1071 | } |
1072 | else | 1072 | else |
1073 | { | 1073 | { |
1074 | hSession->unlock_id = 0; | 1074 | hSession->unlock_id = 0; |
1075 | - defer_unlock(hSession); | 1075 | + defer_unlock(hSession, NULL); |
1076 | } | 1076 | } |
1077 | 1077 | ||
1078 | } | 1078 | } |
src/core/linux/event_dispatcher.c
@@ -188,7 +188,7 @@ retry: | @@ -188,7 +188,7 @@ retry: | ||
188 | if (t->tv.tv_sec < now.tv_sec ||(t->tv.tv_sec == now.tv_sec && t->tv.tv_usec < now.tv_usec)) | 188 | if (t->tv.tv_sec < now.tv_sec ||(t->tv.tv_sec == now.tv_sec && t->tv.tv_usec < now.tv_usec)) |
189 | { | 189 | { |
190 | t->in_play = True; | 190 | t->in_play = True; |
191 | - (*t->proc)(hSession); | 191 | + (*t->proc)(hSession,t->userdata); |
192 | processed_any = True; | 192 | processed_any = True; |
193 | 193 | ||
194 | lib3270_linked_list_delete_node(&hSession->timeouts,t); | 194 | lib3270_linked_list_delete_node(&hSession->timeouts,t); |
src/include/internals.h
@@ -274,7 +274,7 @@ typedef struct timeout | @@ -274,7 +274,7 @@ typedef struct timeout | ||
274 | struct timeval tv; | 274 | struct timeval tv; |
275 | #endif /*]*/ | 275 | #endif /*]*/ |
276 | 276 | ||
277 | - int (*proc)(H3270 *session); | 277 | + int (*proc)(H3270 *session, void *userdata); |
278 | 278 | ||
279 | } timeout_t; | 279 | } timeout_t; |
280 | 280 |
src/include/lib3270.h
@@ -970,7 +970,7 @@ | @@ -970,7 +970,7 @@ | ||
970 | { | 970 | { |
971 | unsigned short sz; | 971 | unsigned short sz; |
972 | 972 | ||
973 | - void * (*AddTimer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)); | 973 | + void * (*AddTimer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session, void *userdata), void *userdata); |
974 | void (*RemoveTimer)(H3270 *session, void *timer); | 974 | void (*RemoveTimer)(H3270 *session, void *timer); |
975 | 975 | ||
976 | void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); | 976 | void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); |
@@ -1001,7 +1001,7 @@ | @@ -1001,7 +1001,7 @@ | ||
1001 | * @param rm Callback for removing a timeout | 1001 | * @param rm Callback for removing a timeout |
1002 | * | 1002 | * |
1003 | */ | 1003 | */ |
1004 | - LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)); | 1004 | + LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session, void *userdata), void *userdata), void (*rm)(H3270 *session, void *timer)); |
1005 | 1005 | ||
1006 | LIB3270_EXPORT void lib3270_register_fd_handlers(void * (*add)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata), void (*rm)(H3270 *, void *id)); | 1006 | LIB3270_EXPORT void lib3270_register_fd_handlers(void * (*add)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata), void (*rm)(H3270 *, void *id)); |
1007 | 1007 |
src/include/utilc.h
@@ -39,7 +39,7 @@ LIB3270_INTERNAL void * AddOutput(int, H3270 *session, void (*fn)(H3270 *sessio | @@ -39,7 +39,7 @@ LIB3270_INTERNAL void * AddOutput(int, H3270 *session, void (*fn)(H3270 *sessio | ||
39 | LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session)); | 39 | LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session)); |
40 | 40 | ||
41 | LIB3270_INTERNAL void RemoveSource(H3270 *session, void *cookie); | 41 | LIB3270_INTERNAL void RemoveSource(H3270 *session, void *cookie); |
42 | -LIB3270_INTERNAL void * AddTimer(unsigned long msec, H3270 *session, int (*fn)(H3270 *session)); | 42 | +LIB3270_INTERNAL void * AddTimer(unsigned long msec, H3270 *session, int (*fn)(H3270 *session, void *userdata), void *userdata); |
43 | LIB3270_INTERNAL void RemoveTimer(H3270 *session, void *cookie); | 43 | LIB3270_INTERNAL void RemoveTimer(H3270 *session, void *cookie); |
44 | 44 | ||
45 | // LIB3270_INTERNAL const char * KeysymToString(KeySym k); | 45 | // LIB3270_INTERNAL const char * KeysymToString(KeySym k); |