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 185  
186 186 struct lib3270_state_callback;
187 187  
188   - typedef struct _h3270
  188 + typedef struct _h3270 H3270;
  189 +
  190 + struct _h3270
189 191 {
190 192 unsigned short sz; /**< Struct size */
191 193  
... ... @@ -257,14 +259,16 @@
257 259 struct lib3270_state_callback *st_last[N_ST];
258 260  
259 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 267 struct lib3270_state_callback
264 268 {
265 269 struct lib3270_state_callback * next; /**< Next callback in chain */
266 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 110  
111 111 if(callbacks && callbacks->addch)
112 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 574 if(callbacks && callbacks->set_viewsize)
572 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 582 void status_lu(H3270 *session, const char *lu)
... ...