From b13018e681ef852ac6238a1ad82442c618206519 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 8 Feb 2012 01:17:02 +0000 Subject: [PATCH] Implementando atualizacao das flags da OIA e temporizador atraves da estrutura de controle de sessao --- latest/src/include/lib3270/api.h | 2 +- latest/src/lib/XtGlue.c | 13 +++++++++++-- latest/src/lib/screen.c | 6 +++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/latest/src/include/lib3270/api.h b/latest/src/include/lib3270/api.h index e39dd65..1bf6d55 100644 --- a/latest/src/include/lib3270/api.h +++ b/latest/src/include/lib3270/api.h @@ -273,7 +273,7 @@ void (*configure)(H3270 *session, unsigned short rows, unsigned short cols); void (*update)(H3270 *session, int baddr, unsigned char c, unsigned short attr); void (*update_cursor)(H3270 *session, unsigned short row, unsigned short col); - void (*set_oia)(H3270 *session, OIA_FLAG id, unsigned char on); + void (*update_oia)(H3270 *session, OIA_FLAG id, unsigned char on); void (*set_timer)(H3270 *session, unsigned char on); void (*update_luname)(H3270 *session, const char *name); void (*update_status)(H3270 *session, LIB3270_STATUS id); diff --git a/latest/src/lib/XtGlue.c b/latest/src/lib/XtGlue.c index 50ac76c..8f5be19 100644 --- a/latest/src/lib/XtGlue.c +++ b/latest/src/lib/XtGlue.c @@ -959,12 +959,21 @@ LIB3270_EXPORT int lib3270_in_e(H3270 *h) LIB3270_EXPORT int lib3270_call_thread(int(*callback)(H3270 *h, void *), H3270 *h, void *parm) { + int rc; CHECK_SESSION_HANDLE(h); + if(h->set_timer) + h->set_timer(h,1); + if(callbacks->callthread) - return callbacks->callthread(callback,h,parm); + rc = callbacks->callthread(callback,h,parm); else - return callback(h,parm); + rc = callback(h,parm); + + if(h->set_timer) + h->set_timer(h,0); + + return rc; } void RunPendingEvents(int wait) diff --git a/latest/src/lib/screen.c b/latest/src/lib/screen.c index 26928a6..5b2b19d 100644 --- a/latest/src/lib/screen.c +++ b/latest/src/lib/screen.c @@ -133,7 +133,7 @@ int screen_init(H3270 *session) session->update_cursor = callbacks->move_cursor; if(callbacks->set_oia) - session->set_oia = callbacks->set_oia; + session->update_oia = callbacks->set_oia; if(callbacks->set_viewsize) session->configure = callbacks->set_viewsize; @@ -496,8 +496,8 @@ void set_status(H3270 *session, LIB3270_FLAG id, Boolean on) { session->oia_flag[id] = (on != 0); - if(session->set_oia) - session->set_oia(session,id,on); + if(session->update_oia) + session->update_oia(session,id,session->oia_flag[id]); } } -- libgit2 0.21.2