Commit 750adb4c687bafb6dc3b542393749712063e2c04
1 parent
ae1ce6b4
Exists in
master
Implementando callbacks baseados em sessao
Showing
2 changed files
with
13 additions
and
3 deletions
Show diff stats
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) |