Commit db04ac3f34fcd73fd7f68ea6bd11f9ac20a8aabb

Authored by Perry Werneck
1 parent 35db594a

Updating timer calls.

lib3270.cbp
... ... @@ -46,7 +46,6 @@
46 46 <Unit filename="src/include/ansic.h" />
47 47 <Unit filename="src/include/api.h" />
48 48 <Unit filename="src/include/aplc.h" />
49   - <Unit filename="src/include/appres.h" />
50 49 <Unit filename="src/include/arpa_telnet.h" />
51 50 <Unit filename="src/include/cg.h" />
52 51 <Unit filename="src/include/childc.h" />
... ...
src/include/appres.h
... ... @@ -1,243 +0,0 @@
1   -/*
2   - * Modifications Copyright 1993, 1994, 1995, 1996, 1999, 2000, 2001, 2002,
3   - * 2003, 2004, 2005, 2007 by Paul Mattes.
4   - * Copyright 1990 by Jeff Sparkes.
5   - * Permission to use, copy, modify, and distribute this software and its
6   - * documentation for any purpose and without fee is hereby granted,
7   - * provided that the above copyright notice appear in all copies and that
8   - * both that copyright notice and this permission notice appear in
9   - * supporting documentation.
10   - *
11   - * x3270, c3270, s3270 and tcl3270 are distributed in the hope that they will
12   - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE
14   - * for more details.
15   - */
16   -
17   -/*
18   - * appres.h
19   - * Application resource definitions for x3270, c3270, s3270 and
20   - * tcl3270.
21   - */
22   -
23   -#include "toggle.h"
24   -
25   -/* Toggles */
26   -
27   -/*
28   -struct toggle {
29   - char value; // toggle value
30   -// char changed; // has the value changed since init
31   -// Widget w[2]; // the menu item widgets
32   -// const char *label[2]; // labels
33   - void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); // change value
34   -// void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE);
35   -
36   -};
37   -
38   -// #define toggle_toggle(t) { (t)->value = !(t)->value; }
39   -*/
40   -
41   -#error Deprecated
42   -
43   -#define toggled(ix) lib3270_get_toggle(NULL,ix)
44   -
45   -/* Application resources */
46   -
47   -typedef struct {
48   - /* Basic colors */
49   -// #if defined(X3270_DISPLAY) /*[*/
50   -// Pixel foreground;
51   -// Pixel background;
52   -// #endif /*]*/
53   -
54   - /* Options (not toggles) */
55   -// char mono;
56   -// char extended;
57   -// char m3279;
58   -// char modified_sel;
59   -// char once;
60   -//#if defined(X3270_DISPLAY) /*[*/
61   -// char visual_bell;
62   -// char menubar;
63   -// char active_icon;
64   -// char label_icon;
65   -// char invert_kpshift;
66   -// char use_cursor_color;
67   -// char allow_resize;
68   -// char no_other;
69   -// char do_confirms;
70   -// #if !defined(G3270)
71   -// char reconnect;
72   -// #endif
73   -// char visual_select;
74   -// char suppress_host;
75   -// char suppress_font_menu;
76   -//# if defined(X3270_KEYPAD) /*[*/
77   -// char keypad_on;
78   -//# endif /*]*/
79   -//#endif /*]*/
80   -//#if defined(C3270) /*[*/
81   -// char all_bold_on;
82   -// char curses_keypad;
83   -// char cbreak_mode;
84   -//#endif /*]*/
85   -// char apl_mode;
86   -// char scripted;
87   -// char numeric_lock;
88   -// char secure;
89   -// char oerr_lock;
90   -// char typeahead;
91   -// char debug_tracing;
92   -// char disconnect_clear;
93   -// char highlight_bold;
94   -// char color8;
95   -// char bsd_tm;
96   -// char unlock_delay;
97   -// #if defined(X3270_SCRIPT) /*[*/
98   -// char socket;
99   -// #endif /*]*/
100   -// #if defined(C3270) && defined(_WIN32) /*[*/
101   -// char highlight_underline;
102   -//#endif /*]*/
103   -
104   - /* Named resources */
105   -/*
106   -#if defined(X3270_KEYPAD)
107   - char *keypad;
108   -#endif
109   -*/
110   -#if defined(X3270_DISPLAY) || defined(C3270)
111   -// char *key_map;
112   -// char *compose_map;
113   -// char *printer_lu;
114   -#endif
115   -/*
116   -#if defined(X3270_DISPLAY)
117   - char *efontname;
118   - char *fixed_size;
119   - char *debug_font;
120   - char *icon_font;
121   - char *icon_label_font;
122   - int save_lines;
123   - char *normal_name;
124   - char *select_name;
125   - char *bold_name;
126   - char *colorbg_name;
127   - char *keypadbg_name;
128   - char *selbg_name;
129   - char *cursor_color_name;
130   - char *color_scheme;
131   - int bell_volume;
132   - char *char_class;
133   - int modified_sel_color;
134   - int visual_select_color;
135   -#if defined(X3270_DBCS)
136   - char *input_method;
137   - char *preedit_type;
138   -#endif
139   -#endif
140   -*/
141   -//#if defined(X3270_DBCS)
142   -// char *local_encoding;
143   -//#endif
144   -
145   -#if defined(C3270) /*[*/
146   -// char *meta_escape;
147   -// char *all_bold;
148   -// char *altscreen;
149   -// char *defscreen;
150   -#endif /*]*/
151   -// char *conf_dir;
152   - char *model;
153   -// char *hostsfile;
154   -// char *port;
155   -// char *charset;
156   -// char *termname;
157   -// char *login_macro;
158   -// char *macros;
159   -#if defined(X3270_TRACE) /*[*/
160   -//#if !defined(_WIN32)
161   -// char *trace_dir;
162   -//#endif
163   -// char *trace_file;
164   -// char *screentrace_file;
165   -// char *trace_file_size;
166   -/*
167   -#if defined(X3270_DISPLAY) || defined(WC3270)
168   - char trace_monitor;
169   -#endif
170   -*/
171   -
172   -#endif /*]*/
173   -// char *oversize;
174   -#if defined(X3270_FT) /*[*/
175   -// char *ft_command;
176   -// int dft_buffer_size;
177   -#endif /*]*/
178   -// char *connectfile_name;
179   -// char *idle_command;
180   -// char idle_command_enabled;
181   -// char *idle_timeout;
182   -
183   -/*
184   -#if defined(X3270_SCRIPT)
185   - char *plugin_command;
186   -#endif
187   -*/
188   -
189   -//#if defined(HAVE_LIBSSL)
190   -// char *cert_file;
191   -//#endif
192   -// char *proxy;
193   -
194   - /* Toggles */
195   -// struct toggle toggle[N_TOGGLES];
196   -/*
197   -#if defined(X3270_DISPLAY)
198   - // Simple widget resources
199   - Cursor normal_mcursor;
200   - Cursor wait_mcursor;
201   - Cursor locked_mcursor;
202   -#endif
203   -*/
204   -
205   -/*
206   -#if defined(X3270_ANSI)
207   - // Line-mode TTY parameters
208   - char icrnl;
209   - char inlcr;
210   - char onlcr;
211   - char *erase;
212   - char *kill;
213   - char *werase;
214   - char *rprnt;
215   - char *lnext;
216   - char *intr;
217   - char *quit;
218   - char *eof;
219   -#endif
220   -*/
221   -
222   -// #if defined(WC3270) /*[*/
223   -// char *hostname;
224   -// #endif
225   -
226   -/*
227   -#if defined(WC3270)
228   - char *title;
229   -#endif
230   -*/
231   -
232   -/*
233   -#if defined(USE_APP_DEFAULTS)
234   - // App-defaults version
235   - char *ad_version;
236   -#endif
237   -*/
238   -
239   -} AppRes, *AppResptr;
240   -
241   -extern AppRes appres;
242   -
243   -void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt);
src/include/gluec.h
... ... @@ -1,33 +0,0 @@
1   -/*
2   - * Copyright 2000 by Paul Mattes.
3   - * Permission to use, copy, modify, and distribute this software and its
4   - * documentation for any purpose and without fee is hereby granted,
5   - * provided that the above copyright notice appear in all copies and that
6   - * both that copyright notice and this permission notice appear in
7   - * supporting documentation.
8   - *
9   - * c3270, s3270 and tcl3270 are distributed in the hope that they will
10   - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
11   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE
12   - * for more details.
13   - */
14   -
15   -/*
16   - * gluec.h
17   - * Declarations for glue.c and XtGlue.c
18   - */
19   -
20   -/* glue.c */
21   -// extern int parse_command_line(int argc, const char **argv, const char **cl_hostname);
22   -// extern int parse_program_parameters(int argc, const char **argv);
23   -// LIB3270_INTERNAL void parse_xrm(const char *arg, const char *where);
24   -// LIB3270_INTERNAL void notify_ssl_error(H3270 *session, const char *title, const char *msg, const char *state, const char *alert);
25   -
26   -/* XtGlue.c */
27   -// LIB3270_INTERNAL void (*Warning_redirect)(const char *);
28   -
29   -// #if !defined(_WIN32)
30   -// LIB3270_INTERNAL int select_setup(int *nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval **timeout, struct timeval *timebuf);
31   -// #endif
32   -
33   -#error Deprecated
src/include/lib3270.h
... ... @@ -833,8 +833,8 @@
833 833 {
834 834 unsigned short sz;
835 835  
836   - void * (*AddTimeOut)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session));
837   - void (*RemoveTimeOut)(H3270 *session, void *timer);
  836 + void * (*AddTimer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session));
  837 + void (*RemoveTimer)(H3270 *session, void *timer);
838 838  
839 839 void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata);
840 840 void (*remove_poll)(H3270 *session, void *id);
... ... @@ -864,7 +864,7 @@
864 864 * @param rm Callback for removing a timeout
865 865 *
866 866 */
867   - LIB3270_EXPORT void lib3270_register_time_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer));
  867 + 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));
868 868  
869 869 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));
870 870  
... ...
src/include/utilc.h
... ... @@ -41,8 +41,8 @@ LIB3270_INTERNAL void * AddOutput(int, H3270 *session, void (*fn)(H3270 *sessio
41 41 LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session));
42 42  
43 43 LIB3270_INTERNAL void RemoveSource(H3270 *session, void *cookie);
44   -LIB3270_INTERNAL void * AddTimeOut(unsigned long msec, H3270 *session, void (*fn)(H3270 *session));
45   -LIB3270_INTERNAL void RemoveTimeOut(H3270 *session, void *cookie);
  44 +LIB3270_INTERNAL void * AddTimer(unsigned long msec, H3270 *session, int (*fn)(H3270 *session));
  45 +LIB3270_INTERNAL void RemoveTimer(H3270 *session, void *cookie);
46 46  
47 47 LIB3270_INTERNAL const char * KeysymToString(KeySym k);
48 48  
... ...
src/lib3270/ctlr.c
... ... @@ -2809,7 +2809,7 @@ delta_msec(struct timeval *t1, struct timeval *t0)
2809 2809 (t1->tv_usec - t0->tv_usec + 500) / 1000;
2810 2810 }
2811 2811  
2812   -static void keep_ticking(H3270 *hSession)
  2812 +static int keep_ticking(H3270 *hSession)
2813 2813 {
2814 2814 struct timeval t1;
2815 2815 long msec;
... ... @@ -2821,8 +2821,9 @@ static void keep_ticking(H3270 *hSession)
2821 2821 msec = delta_msec(&hSession->t_want, &t1);
2822 2822 } while (msec <= 0);
2823 2823  
2824   - hSession->tick_id = AddTimeOut(msec, hSession, keep_ticking);
2825 2824 status_timing(hSession,&hSession->t_start, &t1);
  2825 +
  2826 + return 1;
2826 2827 }
2827 2828  
2828 2829 void ticking_start(H3270 *hSession, Boolean anyway)
... ... @@ -2846,10 +2847,10 @@ void ticking_start(H3270 *hSession, Boolean anyway)
2846 2847 status_untiming(hSession);
2847 2848  
2848 2849 if (hSession->ticking)
2849   - RemoveTimeOut(hSession, hSession->tick_id);
  2850 + RemoveTimer(hSession, hSession->tick_id);
2850 2851  
2851 2852 hSession->ticking = 1;
2852   - hSession->tick_id = AddTimeOut(1000, hSession, keep_ticking);
  2853 + hSession->tick_id = AddTimer(1000, hSession, keep_ticking);
2853 2854 hSession->t_want = hSession->t_start;
2854 2855 }
2855 2856  
... ... @@ -2875,7 +2876,7 @@ static void ticking_stop(H3270 *hSession)
2875 2876  
2876 2877 if (!hSession->ticking)
2877 2878 return;
2878   - RemoveTimeOut(hSession, hSession->tick_id);
  2879 + RemoveTimer(hSession, hSession->tick_id);
2879 2880 hSession->ticking = 0;
2880 2881 status_timing(hSession,&hSession->t_start, &t1);
2881 2882 }
... ...
src/lib3270/host.c
... ... @@ -58,11 +58,12 @@
58 58 /**
59 59 * @brief Called from timer to attempt an automatic reconnection.
60 60 */
61   -void lib3270_reconnect(H3270 *hSession)
  61 +int lib3270_reconnect(H3270 *hSession)
62 62 {
63 63 lib3270_write_log(hSession,"3270","Starting auto-reconnect on %s",lib3270_get_url(hSession));
64 64 hSession->auto_reconnect_inprogress = 0;
65 65 lib3270_connect(hSession,0);
  66 + return 0;
66 67 }
67 68  
68 69 LIB3270_EXPORT int lib3270_disconnect(H3270 *h)
... ... @@ -85,7 +86,7 @@ int host_disconnect(H3270 *hSession, int failed)
85 86 {
86 87 /* Schedule an automatic reconnection. */
87 88 hSession->auto_reconnect_inprogress = 1;
88   - (void) AddTimeOut(failed ? RECONNECT_ERR_MS : RECONNECT_MS, hSession, lib3270_reconnect);
  89 + (void) AddTimer(failed ? RECONNECT_ERR_MS : RECONNECT_MS, hSession, lib3270_reconnect);
89 90 }
90 91  
91 92 /*
... ...
src/lib3270/iocalls.c
... ... @@ -58,8 +58,8 @@
58 58 /*---[ Standard calls ]-------------------------------------------------------------------------------------*/
59 59  
60 60 // Timeout calls
61   - static void internal_remove_timeout(H3270 *session, void *timer);
62   - static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session));
  61 + static void internal_remove_timer(H3270 *session, void *timer);
  62 + static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session));
63 63  
64 64 static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata );
65 65 static void internal_remove_poll(H3270 *session, void *id);
... ... @@ -74,11 +74,11 @@
74 74  
75 75 /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/
76 76  
77   - static void * (*add_timeout)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session))
78   - = internal_add_timeout;
  77 + static void * (*add_timer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session))
  78 + = internal_add_timer;
79 79  
80   - static void (*remove_timeout)(H3270 *session, void *timer)
81   - = internal_remove_timeout;
  80 + static void (*remove_timer)(H3270 *session, void *timer)
  81 + = internal_remove_timer;
82 82  
83 83 static void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata)
84 84 = internal_add_poll;
... ... @@ -124,7 +124,7 @@ static void ms_ts(unsigned long long *u)
124 124 }
125 125 #endif
126 126  
127   -static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session))
  127 +static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session))
128 128 {
129 129 timeout_t *t_new;
130 130 timeout_t *t;
... ... @@ -184,12 +184,12 @@ static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, vo
184 184 prev->next = t_new;
185 185 }
186 186  
187   - trace("Timeout %p added with value %ld",t_new,interval_ms);
  187 + trace("Timer %p added with value %ld",t_new,interval_ms);
188 188  
189 189 return t_new;
190 190 }
191 191  
192   -static void internal_remove_timeout(H3270 *session, void * timer)
  192 +static void internal_remove_timer(H3270 *session, void * timer)
193 193 {
194 194 timeout_t *st = (timeout_t *)timer;
195 195 timeout_t *t;
... ... @@ -354,22 +354,21 @@ static void internal_ring_bell(H3270 *session unused)
354 354  
355 355 /* External entry points */
356 356  
357   -void * AddTimeOut(unsigned long interval_ms, H3270 *session, void (*proc)(H3270 *session))
  357 +void * AddTimer(unsigned long interval_ms, H3270 *session, int (*proc)(H3270 *session))
358 358 {
359 359 void *timer;
360 360 CHECK_SESSION_HANDLE(session);
361   - timer = add_timeout(session,interval_ms,proc);
  361 + timer = add_timer(session,interval_ms,proc);
362 362 trace("Timeout %p created with %ld ms",timer,interval_ms);
363 363 return timer;
364 364 }
365 365  
366   -void RemoveTimeOut(H3270 *session, void * timer)
  366 +void RemoveTimer(H3270 *session, void * timer)
367 367 {
368 368 if(!timer)
369 369 return;
370   -
371 370 trace("Removing timeout %p",timer);
372   - return remove_timeout(session, timer);
  371 + return remove_timer(session, timer);
373 372 }
374 373  
375 374 void x_except_on(H3270 *h)
... ... @@ -410,13 +409,13 @@ void remove_input_calls(H3270 *session)
410 409 }
411 410 }
412 411  
413   -LIB3270_EXPORT void lib3270_register_time_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer))
  412 +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))
414 413 {
415 414 if(add)
416   - add_timeout = add;
  415 + add_timer = add;
417 416  
418 417 if(rm)
419   - remove_timeout = rm;
  418 + remove_timer = rm;
420 419  
421 420 }
422 421  
... ... @@ -433,7 +432,7 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c
433 432 if(!cbk || cbk->sz != sizeof(LIB3270_IO_CONTROLLER))
434 433 return errno = EINVAL;
435 434  
436   - lib3270_register_time_handlers(cbk->AddTimeOut,cbk->RemoveTimeOut);
  435 + lib3270_register_timer_handlers(cbk->AddTimer,cbk->RemoveTimer);
437 436 lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll);
438 437  
439 438 if(cbk->Wait)
... ...
src/lib3270/kybd.c
... ... @@ -405,7 +405,7 @@ void kybd_inhibit(H3270 *session, Boolean inhibit)
405 405 void kybd_connect(H3270 *session, int connected, void *dunno unused)
406 406 {
407 407 if (session->kybdlock & KL_DEFERRED_UNLOCK)
408   - RemoveTimeOut(session, session->unlock_id);
  408 + RemoveTimer(session, session->unlock_id);
409 409  
410 410 lib3270_kybdlock_clear(session, -1);
411 411  
... ... @@ -427,7 +427,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno unused)
427 427 void kybd_in3270(H3270 *hSession, int in3270 unused, void *dunno unused)
428 428 {
429 429 if (hSession->kybdlock & KL_DEFERRED_UNLOCK)
430   - RemoveTimeOut(hSession, hSession->unlock_id);
  430 + RemoveTimer(hSession, hSession->unlock_id);
431 431  
432 432 lib3270_kybdlock_clear(hSession,~KL_AWAITING_FIRST);
433 433  
... ... @@ -1111,13 +1111,13 @@ LIB3270_EXPORT int lib3270_previousfield(H3270 *hSession)
1111 1111 * Deferred keyboard unlock.
1112 1112 */
1113 1113  
1114   -static void defer_unlock(H3270 *hSession)
  1114 +static int defer_unlock(H3270 *hSession)
1115 1115 {
1116   -// trace("%s",__FUNCTION__);
1117 1116 lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK);
1118 1117 status_reset(hSession);
1119 1118 if(CONNECTED)
1120 1119 ps_process(hSession);
  1120 + return 0;
1121 1121 }
1122 1122  
1123 1123 /**
... ... @@ -1152,7 +1152,7 @@ void do_reset(H3270 *hSession, Boolean explicit)
1152 1152 * keyboard now, or want to defer further into the future.
1153 1153 */
1154 1154 if (hSession->kybdlock & KL_DEFERRED_UNLOCK)
1155   - RemoveTimeOut(hSession, hSession->unlock_id);
  1155 + RemoveTimer(hSession, hSession->unlock_id);
1156 1156  
1157 1157 /*
1158 1158 * If explicit (from the keyboard), unlock the keyboard now.
... ... @@ -1169,7 +1169,7 @@ void do_reset(H3270 *hSession, Boolean explicit)
1169 1169  
1170 1170 if(hSession->unlock_delay_ms)
1171 1171 {
1172   - hSession->unlock_id = AddTimeOut(hSession->unlock_delay_ms, hSession, defer_unlock);
  1172 + hSession->unlock_id = AddTimer(hSession->unlock_delay_ms, hSession, defer_unlock);
1173 1173 }
1174 1174 else
1175 1175 {
... ...
src/lib3270/private.h
... ... @@ -265,7 +265,7 @@ typedef struct timeout
265 265 struct timeval tv;
266 266 #endif /*]*/
267 267  
268   - void (*proc)(H3270 *session);
  268 + int (*proc)(H3270 *session);
269 269  
270 270 H3270 *session;
271 271  
... ... @@ -301,8 +301,6 @@ struct _h3270
301 301 {
302 302 struct lib3270_session_callbacks cbk; // Callback table - Always the first one.
303 303  
304   -// unsigned short sz; /**< Struct size */
305   -
306 304 // Session info
307 305 char id; ///< @brief Session Identifier.
308 306  
... ... @@ -601,6 +599,8 @@ struct _h3270
601 599 void * except;
602 600 } xio;
603 601  
  602 + size_t popups; ///< @brief Count open popups.
  603 +
604 604 #ifdef HAVE_LIBSSL
605 605 /// @brief SSL Data.
606 606 struct
... ... @@ -647,7 +647,7 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block
647 647 /**
648 648 * @brief Called from timer to attempt an automatic reconnection.
649 649 */
650   -LIB3270_INTERNAL void lib3270_reconnect(H3270 *hSession);
  650 +LIB3270_INTERNAL int lib3270_reconnect(H3270 *hSession);
651 651  
652 652 #if defined(DEBUG)
653 653 #define CHECK_SESSION_HANDLE(x) check_session_handle(&x,__FUNCTION__);
... ...
src/lib3270/screen.c
... ... @@ -759,7 +759,9 @@ void Error(H3270 *session, const char *fmt, ...)
759 759  
760 760 va_start(arg_ptr, fmt);
761 761  
  762 + session->popups++;
762 763 session->cbk.popup(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr);
  764 + session->popups--;
763 765  
764 766 va_end(arg_ptr);
765 767  
... ... @@ -774,7 +776,11 @@ void Warning(H3270 *session, const char *fmt, ...)
774 776 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt);
775 777  
776 778 va_start(arg_ptr, fmt);
  779 +
  780 + session->popups++;
777 781 session->cbk.popup(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr);
  782 + session->popups--;
  783 +
778 784 va_end(arg_ptr);
779 785  
780 786 }
... ... @@ -789,7 +795,11 @@ void popup_an_error(H3270 *session, const char *fmt, ...)
789 795 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt);
790 796  
791 797 va_start(args, fmt);
  798 +
  799 + session->popups++;
792 800 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args);
  801 + session->popups--;
  802 +
793 803 va_end(args);
794 804  
795 805 }
... ... @@ -803,7 +813,11 @@ void popup_system_error(H3270 *session, const char *title, const char *message,
803 813 trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message);
804 814  
805 815 va_start(args, fmt);
  816 +
  817 + session->popups++;
806 818 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args);
  819 + session->popups--;
  820 +
807 821 va_end(args);
808 822 }
809 823  
... ... @@ -924,7 +938,11 @@ LIB3270_EXPORT void lib3270_popup_dialog(H3270 *session, LIB3270_NOTIFY id , con
924 938 LIB3270_EXPORT void lib3270_popup_va(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, va_list args)
925 939 {
926 940 CHECK_SESSION_HANDLE(session);
  941 +
  942 + session->popups++;
927 943 session->cbk.popup(session,id,title ? title : _( "3270 Error" ), message,fmt,args);
  944 + session->popups--;
  945 +
928 946 }
929 947  
930 948 LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr)
... ...
src/lib3270/toggles.c
... ... @@ -352,7 +352,7 @@ static void toggle_reconnect(H3270 *hSession, struct lib3270_toggle *t unused, L
352 352 /* Schedule an automatic reconnection. */
353 353 lib3270_write_log(hSession,"toggle","Auto-reconnect toggle was activated when offline, reconnecting");
354 354 hSession->auto_reconnect_inprogress = 1;
355   - (void) AddTimeOut(RECONNECT_MS, hSession, lib3270_reconnect);
  355 + (void) AddTimer(RECONNECT_MS, hSession, lib3270_reconnect);
356 356 }
357 357  
358 358 }
... ...