From 750adb4c687bafb6dc3b542393749712063e2c04 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 25 Jan 2012 10:29:11 +0000 Subject: [PATCH] Implementando callbacks baseados em sessao --- latest/src/include/lib3270/api.h | 10 +++++++--- latest/src/lib/screen.c | 6 ++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/latest/src/include/lib3270/api.h b/latest/src/include/lib3270/api.h index 0c188dd..46a5f14 100644 --- a/latest/src/include/lib3270/api.h +++ b/latest/src/include/lib3270/api.h @@ -185,7 +185,9 @@ struct lib3270_state_callback; - typedef struct _h3270 + typedef struct _h3270 H3270; + + struct _h3270 { unsigned short sz; /**< Struct size */ @@ -257,14 +259,16 @@ struct lib3270_state_callback *st_last[N_ST]; /* Session based callbacks */ + void (*configure)(H3270 *session, int rows, int cols); + void (*update)(H3270 *session, int baddr, unsigned char c, unsigned short attr); - } H3270; + }; struct lib3270_state_callback { struct lib3270_state_callback * next; /**< Next callback in chain */ void * data; /**< User data */ - void (*func)(struct _h3270 *, int, void *); /**< Function to call */ + void (*func)(H3270 *, int, void *); /**< Function to call */ }; diff --git a/latest/src/lib/screen.c b/latest/src/lib/screen.c index 334c7d3..536bf42 100644 --- a/latest/src/lib/screen.c +++ b/latest/src/lib/screen.c @@ -110,6 +110,9 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att if(callbacks && callbacks->addch) callbacks->addch(baddr/session->cols, baddr%session->cols, c, attr); + + if(session->update) + session->update(session,baddr,c,attr); } /** @@ -571,6 +574,9 @@ void set_viewsize(H3270 *session, int rows, int cols) if(callbacks && callbacks->set_viewsize) callbacks->set_viewsize(session,rows,cols); + if(session->configure) + session->configure(session,rows,cols); + } void status_lu(H3270 *session, const char *lu) -- libgit2 0.21.2