From 853ed0a3261910b724514240929aac5f989a129b Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Thu, 1 Mar 2012 11:35:37 +0000 Subject: [PATCH] Implementando callback quando o modelo de terminal é alterado --- src/include/lib3270/api.h | 1 + src/lib/ctlr.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/include/lib3270/api.h b/src/include/lib3270/api.h index f819edd..bf5dcef 100644 --- a/src/include/lib3270/api.h +++ b/src/include/lib3270/api.h @@ -274,6 +274,7 @@ void (*update_luname)(H3270 *session, const char *name); void (*update_status)(H3270 *session, LIB3270_STATUS id); void (*update_connect)(H3270 *session, unsigned char connected); + void (*update_model)(H3270 *session, int model); void (*set_timer)(H3270 *session, unsigned char on); void (*erase)(H3270 *session); diff --git a/src/lib/ctlr.c b/src/lib/ctlr.c index 3678401..18fea23 100644 --- a/src/lib/ctlr.c +++ b/src/lib/ctlr.c @@ -193,15 +193,21 @@ int lib3270_get_model(H3270 *session) /** * Deal with the relationships between model numbers and rows/cols. * - * @param model New model (updates model name + * @param model New model (updates model name) */ int lib3270_set_model(H3270 *session, int model) { if(CONNECTED) return EBUSY; - ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); - ctlr_reinit(session,MODEL_CHANGE); + if(session->model_num != model) + { + ctlr_set_rows_cols(session,model,session->ov_cols,session->ov_rows); + ctlr_reinit(session,MODEL_CHANGE); + + if(session->update_model) + session->update_model(session,model); + } return 0; } -- libgit2 0.21.2