Commit 750adb4c687bafb6dc3b542393749712063e2c04

Authored by perry.werneck@gmail.com
1 parent ae1ce6b4
Exists in master

Implementando callbacks baseados em sessao

latest/src/include/lib3270/api.h
@@ -185,7 +185,9 @@ @@ -185,7 +185,9 @@
185 185
186 struct lib3270_state_callback; 186 struct lib3270_state_callback;
187 187
188 - typedef struct _h3270 188 + typedef struct _h3270 H3270;
  189 +
  190 + struct _h3270
189 { 191 {
190 unsigned short sz; /**< Struct size */ 192 unsigned short sz; /**< Struct size */
191 193
@@ -257,14 +259,16 @@ @@ -257,14 +259,16 @@
257 struct lib3270_state_callback *st_last[N_ST]; 259 struct lib3270_state_callback *st_last[N_ST];
258 260
259 /* Session based callbacks */ 261 /* Session based callbacks */
  262 + void (*configure)(H3270 *session, int rows, int cols);
  263 + void (*update)(H3270 *session, int baddr, unsigned char c, unsigned short attr);
260 264
261 - } H3270; 265 + };
262 266
263 struct lib3270_state_callback 267 struct lib3270_state_callback
264 { 268 {
265 struct lib3270_state_callback * next; /**< Next callback in chain */ 269 struct lib3270_state_callback * next; /**< Next callback in chain */
266 void * data; /**< User data */ 270 void * data; /**< User data */
267 - void (*func)(struct _h3270 *, int, void *); /**< Function to call */ 271 + void (*func)(H3270 *, int, void *); /**< Function to call */
268 }; 272 };
269 273
270 274
latest/src/lib/screen.c
@@ -110,6 +110,9 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att @@ -110,6 +110,9 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att
110 110
111 if(callbacks && callbacks->addch) 111 if(callbacks && callbacks->addch)
112 callbacks->addch(baddr/session->cols, baddr%session->cols, c, attr); 112 callbacks->addch(baddr/session->cols, baddr%session->cols, c, attr);
  113 +
  114 + if(session->update)
  115 + session->update(session,baddr,c,attr);
113 } 116 }
114 117
115 /** 118 /**
@@ -571,6 +574,9 @@ void set_viewsize(H3270 *session, int rows, int cols) @@ -571,6 +574,9 @@ void set_viewsize(H3270 *session, int rows, int cols)
571 if(callbacks && callbacks->set_viewsize) 574 if(callbacks && callbacks->set_viewsize)
572 callbacks->set_viewsize(session,rows,cols); 575 callbacks->set_viewsize(session,rows,cols);
573 576
  577 + if(session->configure)
  578 + session->configure(session,rows,cols);
  579 +
574 } 580 }
575 581
576 void status_lu(H3270 *session, const char *lu) 582 void status_lu(H3270 *session, const char *lu)