diff --git a/src/include/lib3270.h b/src/include/lib3270.h index a4e7e33..3902b0d 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -565,6 +565,25 @@ */ LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 *h, void *parm); + + /** + * Run main iteration. + * + * Run lib3270 internal iterations, check for network inputs, process signals. + * + * @param wait Wait for signal if not available. + * + */ + LIB3270_EXPORT void lib3270_main_iterate(int wait); + + /** + * Wait for "N" seconds keeping main loop active. + * + * @param seconds Number of seconds to wait. + * + */ + LIB3270_EXPORT int lib3270_wait(int seconds); + /** * Get the session's widget. * diff --git a/src/lib3270/XtGlue.c b/src/lib3270/XtGlue.c index 53413c6..5cd91c4 100644 --- a/src/lib3270/XtGlue.c +++ b/src/lib3270/XtGlue.c @@ -970,13 +970,13 @@ LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 * return rc; } -void RunPendingEvents(int wait) +LIB3270_EXPORT void lib3270_main_iterate(int wait) { if(callbacks->RunPendingEvents) callbacks->RunPendingEvents(wait); } -int Wait(int seconds) +LIB3270_EXPORT int lib3270_wait(seconds) { time_t end; @@ -988,7 +988,7 @@ int Wait(int seconds) while(time(0) < end) { - RunPendingEvents(1); + lib3270_main_iterate(1); } return 0; diff --git a/src/lib3270/api.h b/src/lib3270/api.h index 3b7912f..3b7fd74 100644 --- a/src/lib3270/api.h +++ b/src/lib3270/api.h @@ -431,11 +431,11 @@ #define Toggled(ix) lib3270_get_toggle(NULL,ix) #define CallAndWait(c,h,p) lib3270_call_thread(c,h,p) - LOCAL_EXTERN void RunPendingEvents(int wait); - LOCAL_EXTERN int Wait(int seconds); +// #define RunPendingEvents(x) lib3270_main_iterate(x) +// #define Wait(s) lib3270_wait(x) - LOCAL_EXTERN int ctlr_get_cols(void) __attribute__ ((deprecated)); - LOCAL_EXTERN int ctlr_get_rows(void) __attribute__ ((deprecated)); +// LOCAL_EXTERN int ctlr_get_cols(void) __attribute__ ((deprecated)); +// LOCAL_EXTERN int ctlr_get_rows(void) __attribute__ ((deprecated)); /* Screen calls */ LOCAL_EXTERN void screen_resume(H3270 *session); diff --git a/src/lib3270/host.c b/src/lib3270/host.c index e773f72..68b835d 100644 --- a/src/lib3270/host.c +++ b/src/lib3270/host.c @@ -618,7 +618,7 @@ int lib3270_connect(H3270 *h, const char *n, int wait) CHECK_SESSION_HANDLE(h); - RunPendingEvents(0); + lib3270_main_iterate(0); if(h->auto_reconnect_inprogress) return EAGAIN; @@ -634,7 +634,7 @@ int lib3270_connect(H3270 *h, const char *n, int wait) { while(!IN_ANSI && !IN_3270) { - RunPendingEvents(1); + lib3270_main_iterate(1); if(!PCONNECTED) { diff --git a/src/lib3270/lib3270.cbp b/src/lib3270/lib3270.cbp index 27fac0b..0f891c7 100644 --- a/src/lib3270/lib3270.cbp +++ b/src/lib3270/lib3270.cbp @@ -7,20 +7,22 @@