Commit 5787185d38536adf4915d270b1deb5aeaabbbc5b

Authored by perry.werneck@gmail.com
1 parent c7743bf8

Android - Permitindo substituição do método de desenho da tela

@@ -388,7 +388,7 @@ @@ -388,7 +388,7 @@
388 /* Screen calls */ 388 /* Screen calls */
389 // LOCAL_EXTERN void screen_resume(H3270 *session); 389 // LOCAL_EXTERN void screen_resume(H3270 *session);
390 // LOCAL_EXTERN void screen_suspend(H3270 *session); 390 // LOCAL_EXTERN void screen_suspend(H3270 *session);
391 - LOCAL_EXTERN void screen_disp(H3270 *session); 391 +// LOCAL_EXTERN void screen_disp(H3270 *session);
392 392
393 #include <lib3270/actions.h> 393 #include <lib3270/actions.h>
394 394
@@ -459,7 +459,7 @@ void ctlr_erase(H3270 *session, int alt) @@ -459,7 +459,7 @@ void ctlr_erase(H3270 *session, int alt)
459 459
460 kybd_inhibit(False); 460 kybd_inhibit(False);
461 ctlr_clear(session,True); 461 ctlr_clear(session,True);
462 - screen_erase(session); 462 + session->erase(session);
463 463
464 if(alt == session->screen_alt) 464 if(alt == session->screen_alt)
465 return; 465 return;
@@ -467,7 +467,7 @@ void ctlr_erase(H3270 *session, int alt) @@ -467,7 +467,7 @@ void ctlr_erase(H3270 *session, int alt)
467 if (alt) 467 if (alt)
468 { 468 {
469 /* Going from 24x80 to maximum. */ 469 /* Going from 24x80 to maximum. */
470 - screen_disp(session); 470 + session->display(session);
471 set_viewsize(session,session->maxROWS,session->maxCOLS); 471 set_viewsize(session,session->maxROWS,session->maxCOLS);
472 } 472 }
473 else 473 else
@@ -478,7 +478,7 @@ void ctlr_erase(H3270 *session, int alt) @@ -478,7 +478,7 @@ void ctlr_erase(H3270 *session, int alt)
478 if(session->vcontrol) 478 if(session->vcontrol)
479 { 479 {
480 ctlr_blanks(); 480 ctlr_blanks();
481 - screen_disp(session); 481 + session->display(session);
482 } 482 }
483 set_viewsize(session,24,80); 483 set_viewsize(session,24,80);
484 } 484 }
@@ -2574,7 +2574,7 @@ void ctlr_scroll(void) @@ -2574,7 +2574,7 @@ void ctlr_scroll(void)
2574 /* Clear the last line. */ 2574 /* Clear the last line. */
2575 (void) memset((char *) &h3270.ea_buf[qty], 0, h3270.cols * sizeof(struct ea)); 2575 (void) memset((char *) &h3270.ea_buf[qty], 0, h3270.cols * sizeof(struct ea));
2576 2576
2577 - screen_disp(&h3270); 2577 + h3270.display(&h3270);
2578 2578
2579 } 2579 }
2580 #endif /*]*/ 2580 #endif /*]*/
@@ -2672,7 +2672,7 @@ ctlr_shrink(void) @@ -2672,7 +2672,7 @@ ctlr_shrink(void)
2672 h3270.ea_buf[baddr].cc = h3270.vcontrol ? EBC_space : EBC_null; 2672 h3270.ea_buf[baddr].cc = h3270.vcontrol ? EBC_space : EBC_null;
2673 } 2673 }
2674 ALL_CHANGED; 2674 ALL_CHANGED;
2675 - screen_disp(&h3270); 2675 + h3270.display(&h3270);
2676 } 2676 }
2677 2677
2678 #if defined(X3270_DBCS) /*[*/ 2678 #if defined(X3270_DBCS) /*[*/
@@ -1721,7 +1721,7 @@ LIB3270_ACTION( delete ) @@ -1721,7 +1721,7 @@ LIB3270_ACTION( delete )
1721 if (!hSession->ea_buf[baddr].fa) 1721 if (!hSession->ea_buf[baddr].fa)
1722 cursor_move(hSession,baddr); 1722 cursor_move(hSession,baddr);
1723 } 1723 }
1724 - screen_disp(hSession); 1724 + hSession->display(hSession);
1725 return 0; 1725 return 0;
1726 } 1726 }
1727 1727
@@ -1753,7 +1753,7 @@ LIB3270_ACTION( backspace ) @@ -1753,7 +1753,7 @@ LIB3270_ACTION( backspace )
1753 DEC_BA(baddr); 1753 DEC_BA(baddr);
1754 cursor_move(hSession,baddr); 1754 cursor_move(hSession,baddr);
1755 } 1755 }
1756 - screen_disp(hSession); 1756 + hSession->display(hSession);
1757 return 0; 1757 return 0;
1758 } 1758 }
1759 1759
@@ -1815,7 +1815,7 @@ do_erase(void) @@ -1815,7 +1815,7 @@ do_erase(void)
1815 cursor_move(&h3270,baddr); 1815 cursor_move(&h3270,baddr);
1816 (void) do_delete(); 1816 (void) do_delete();
1817 } 1817 }
1818 - screen_disp(&h3270); 1818 + h3270.display(&h3270);
1819 } 1819 }
1820 1820
1821 LIB3270_ACTION( erase ) 1821 LIB3270_ACTION( erase )
@@ -2261,7 +2261,7 @@ LIB3270_ACTION( dup ) @@ -2261,7 +2261,7 @@ LIB3270_ACTION( dup )
2261 #endif 2261 #endif
2262 if (key_Character(EBC_dup, False, False, NULL)) 2262 if (key_Character(EBC_dup, False, False, NULL))
2263 { 2263 {
2264 - screen_disp(hSession); 2264 + hSession->display(hSession);
2265 cursor_move(hSession,next_unprotected(hSession,hSession->cursor_addr)); 2265 cursor_move(hSession,next_unprotected(hSession,hSession->cursor_addr));
2266 } 2266 }
2267 } 2267 }
@@ -2527,7 +2527,7 @@ LIB3270_ACTION( eraseeol ) @@ -2527,7 +2527,7 @@ LIB3270_ACTION( eraseeol )
2527 h3270.ea_buf[h3270.cursor_addr].cc = EBC_si; 2527 h3270.ea_buf[h3270.cursor_addr].cc = EBC_si;
2528 } 2528 }
2529 (void) ctlr_dbcs_postprocess(); 2529 (void) ctlr_dbcs_postprocess();
2530 - screen_disp(&h3270); 2530 + h3270.display(&h3270);
2531 return 0; 2531 return 0;
2532 } 2532 }
2533 2533
@@ -2582,7 +2582,7 @@ LIB3270_ACTION( eraseeof ) @@ -2582,7 +2582,7 @@ LIB3270_ACTION( eraseeof )
2582 h3270.ea_buf[hSession->cursor_addr].cc = EBC_si; 2582 h3270.ea_buf[hSession->cursor_addr].cc = EBC_si;
2583 } 2583 }
2584 (void) ctlr_dbcs_postprocess(); 2584 (void) ctlr_dbcs_postprocess();
2585 - screen_disp(hSession); 2585 + hSession->display(hSession);
2586 return 0; 2586 return 0;
2587 } 2587 }
2588 2588
@@ -2637,7 +2637,7 @@ LIB3270_ACTION( eraseinput ) @@ -2637,7 +2637,7 @@ LIB3270_ACTION( eraseinput )
2637 ctlr_clear(hSession,True); 2637 ctlr_clear(hSession,True);
2638 cursor_move(hSession,0); 2638 cursor_move(hSession,0);
2639 } 2639 }
2640 - screen_disp(hSession); 2640 + hSession->display(hSession);
2641 return 0; 2641 return 0;
2642 } 2642 }
2643 2643
@@ -2704,7 +2704,7 @@ LIB3270_ACTION( deleteword ) @@ -2704,7 +2704,7 @@ LIB3270_ACTION( deleteword )
2704 else 2704 else
2705 do_erase(); 2705 do_erase();
2706 } 2706 }
2707 - screen_disp(hSession); 2707 + hSession->display(hSession);
2708 return 0; 2708 return 0;
2709 } 2709 }
2710 2710
@@ -2752,7 +2752,7 @@ LIB3270_ACTION( deletefield ) @@ -2752,7 +2752,7 @@ LIB3270_ACTION( deletefield )
2752 ctlr_add(baddr, EBC_null, 0); 2752 ctlr_add(baddr, EBC_null, 0);
2753 INC_BA(baddr); 2753 INC_BA(baddr);
2754 } 2754 }
2755 - screen_disp(hSession); 2755 + hSession->display(hSession);
2756 return 0; 2756 return 0;
2757 } 2757 }
2758 2758
@@ -3321,7 +3321,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p @@ -3321,7 +3321,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p
3321 break; 3321 break;
3322 } 3322 }
3323 3323
3324 - screen_disp(session); 3324 + session->display(session);
3325 return len; 3325 return len;
3326 } 3326 }
3327 3327
@@ -80,7 +80,6 @@ static int (*popup_handler)(H3270 *, void *, LIB3270_NOTIFY, const char *, const @@ -80,7 +80,6 @@ static int (*popup_handler)(H3270 *, void *, LIB3270_NOTIFY, const char *, const
80 80
81 enum ts { TS_AUTO, TS_ON, TS_OFF }; 81 enum ts { TS_AUTO, TS_ON, TS_OFF };
82 82
83 -static void screen_update(H3270 *session, int bstart, int bend);  
84 static void status_connect(H3270 *session, int ignored, void *dunno); 83 static void status_connect(H3270 *session, int ignored, void *dunno);
85 static void status_3270_mode(H3270 *session, int ignored, void *dunno); 84 static void status_3270_mode(H3270 *session, int ignored, void *dunno);
86 // static void status_printer(H3270 *session, int on, void *dunno); 85 // static void status_printer(H3270 *session, int on, void *dunno);
@@ -290,7 +289,7 @@ LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned @@ -290,7 +289,7 @@ LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned
290 } 289 }
291 290
292 /* Display what's in the buffer. */ 291 /* Display what's in the buffer. */
293 -static void screen_update(H3270 *session, int bstart, int bend) 292 +void screen_update(H3270 *session, int bstart, int bend)
294 { 293 {
295 int baddr; 294 int baddr;
296 unsigned short a; 295 unsigned short a;
@@ -368,12 +367,6 @@ static void screen_update(H3270 *session, int bstart, int bend) @@ -368,12 +367,6 @@ static void screen_update(H3270 *session, int bstart, int bend)
368 trace("%s ends",__FUNCTION__); 367 trace("%s ends",__FUNCTION__);
369 } 368 }
370 369
371 -void screen_disp(H3270 *session)  
372 -{  
373 - CHECK_SESSION_HANDLE(session);  
374 - screen_update(session,0,session->rows*session->cols);  
375 -}  
376 -  
377 LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h) 370 LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h)
378 { 371 {
379 CHECK_SESSION_HANDLE(h); 372 CHECK_SESSION_HANDLE(h);
@@ -476,7 +469,7 @@ void status_reset(H3270 *session) @@ -476,7 +469,7 @@ void status_reset(H3270 *session)
476 status_changed(session,LIB3270_STATUS_BLANK); 469 status_changed(session,LIB3270_STATUS_BLANK);
477 } 470 }
478 471
479 - screen_disp(session); 472 + session->display(session);
480 473
481 } 474 }
482 475
@@ -789,7 +782,7 @@ LIB3270_ACTION( testpattern ) @@ -789,7 +782,7 @@ LIB3270_ACTION( testpattern )
789 hSession->ea_buf[f].cc = pat[row].cc[pos++]; 782 hSession->ea_buf[f].cc = pat[row].cc[pos++];
790 } 783 }
791 784
792 - screen_disp(hSession); 785 + hSession->display(hSession);
793 786
794 return 0; 787 return 0;
795 } 788 }
@@ -16,10 +16,7 @@ @@ -16,10 +16,7 @@
16 16
17 // #define SELECTED(baddr) False 17 // #define SELECTED(baddr) False
18 LIB3270_INTERNAL int *char_width, *char_height; 18 LIB3270_INTERNAL int *char_width, *char_height;
19 -// LIB3270_INTERNAL Boolean screen_has_changes;  
20 -  
21 -// LIB3270_INTERNAL void screen_update(H3270 *session, int bstart, int bend);  
22 19
  20 +LIB3270_INTERNAL void screen_update(H3270 *session, int bstart, int bend);
23 LIB3270_INTERNAL void status_connecting(H3270 *session, Boolean on); 21 LIB3270_INTERNAL void status_connecting(H3270 *session, Boolean on);
24 -// LIB3270_INTERNAL void status_resolving(H3270 *session, Boolean on);  
25 22
@@ -22,17 +22,17 @@ @@ -22,17 +22,17 @@
22 #define display_widthMM() 100 22 #define display_widthMM() 100
23 #define display_width() 1 23 #define display_width() 1
24 // #define screen_obscured() False 24 // #define screen_obscured() False
25 -#define screen_scroll() screen_disp() 25 +// #define screen_scroll() screen_disp()
26 #define screen_132() /* */ 26 #define screen_132() /* */
27 #define screen_80() /* */ 27 #define screen_80() /* */
28 28
29 -#define screen_erase(x) x->erase(x) 29 +// #define screen_erase(x) x->erase(x)
30 // LIB3270_INTERNAL void screen_erase(H3270 *session); 30 // LIB3270_INTERNAL void screen_erase(H3270 *session);
31 31
32 -LIB3270_INTERNAL void screen_changed(H3270 *session, int bstart, int bend); 32 +// LIB3270_INTERNAL void screen_changed(H3270 *session, int bstart, int bend);
33 LIB3270_INTERNAL int screen_init(H3270 *session); 33 LIB3270_INTERNAL int screen_init(H3270 *session);
34 // LIB3270_INTERNAL void screen_flip(void); 34 // LIB3270_INTERNAL void screen_flip(void);
35 -LIB3270_INTERNAL FILE *start_pager(void); 35 +// LIB3270_INTERNAL FILE *start_pager(void);
36 LIB3270_INTERNAL Boolean screen_new_display_charsets(char *cslist, char *csname); 36 LIB3270_INTERNAL Boolean screen_new_display_charsets(char *cslist, char *csname);
37 37
38 LIB3270_INTERNAL void mcursor_set(H3270 *session,LIB3270_CURSOR m); 38 LIB3270_INTERNAL void mcursor_set(H3270 *session,LIB3270_CURSOR m);
@@ -139,6 +139,12 @@ static void update_ssl(H3270 *session, LIB3270_SSL_STATE state) @@ -139,6 +139,12 @@ static void update_ssl(H3270 *session, LIB3270_SSL_STATE state)
139 { 139 {
140 } 140 }
141 141
  142 +static void screen_disp(H3270 *session)
  143 +{
  144 + CHECK_SESSION_HANDLE(session);
  145 + screen_update(session,0,session->rows*session->cols);
  146 +}
  147 +
142 static void lib3270_session_init(H3270 *hSession, const char *model) 148 static void lib3270_session_init(H3270 *hSession, const char *model)
143 { 149 {
144 int ovc, ovr; 150 int ovc, ovr;
@@ -148,6 +154,23 @@ static void lib3270_session_init(H3270 *hSession, const char *model) @@ -148,6 +154,23 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
148 memset(hSession,0,sizeof(H3270)); 154 memset(hSession,0,sizeof(H3270));
149 hSession->sz = sizeof(H3270); 155 hSession->sz = sizeof(H3270);
150 156
  157 + // Default calls
  158 + hSession->update = update_char;
  159 + hSession->update_model = update_model;
  160 + hSession->update_cursor = update_cursor;
  161 + hSession->set_selection = nop_char;
  162 + hSession->ctlr_done = nop;
  163 + hSession->changed = changed;
  164 + hSession->erase = screen_disp;
  165 + hSession->suspend = nop;
  166 + hSession->resume = screen_disp;
  167 + hSession->update_oia = update_oia;
  168 + hSession->update_selection = update_selection;
  169 + hSession->cursor = set_cursor;
  170 + hSession->message = message;
  171 + hSession->update_ssl = update_ssl;
  172 + hSession->display = screen_disp;
  173 +
151 // Set the defaults. 174 // Set the defaults.
152 hSession->extended = 1; 175 hSession->extended = 1;
153 hSession->typeahead = 1; 176 hSession->typeahead = 1;
@@ -156,6 +179,16 @@ static void lib3270_session_init(H3270 *hSession, const char *model) @@ -156,6 +179,16 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
156 hSession->icrnl = 1; 179 hSession->icrnl = 1;
157 hSession->onlcr = 1; 180 hSession->onlcr = 1;
158 hSession->host_charset = "bracket"; 181 hSession->host_charset = "bracket";
  182 + hSession->sock = -1;
  183 + hSession->model_num = -1;
  184 + hSession->cstate = LIB3270_NOT_CONNECTED;
  185 + hSession->oia_status = -1;
  186 +
  187 +
  188 +#ifdef _WIN32
  189 + hSession->sockEvent = NULL;
  190 +#endif // _WIN32
  191 +
159 192
160 /* 193 /*
161 #if !defined(_WIN32) 194 #if !defined(_WIN32)
@@ -173,31 +206,6 @@ static void lib3270_session_init(H3270 *hSession, const char *model) @@ -173,31 +206,6 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
173 // Initialize toggles 206 // Initialize toggles
174 initialize_toggles(hSession); 207 initialize_toggles(hSession);
175 208
176 - // Dummy calls to avoid "ifs"  
177 - hSession->update = update_char;  
178 - hSession->update_model = update_model;  
179 - hSession->update_cursor = update_cursor;  
180 - hSession->set_selection = nop_char;  
181 - hSession->ctlr_done = nop;  
182 - hSession->changed = changed;  
183 - hSession->erase = screen_disp;  
184 - hSession->suspend = nop;  
185 - hSession->resume = screen_disp;  
186 - hSession->update_oia = update_oia;  
187 - hSession->update_selection = update_selection;  
188 - hSession->cursor = set_cursor;  
189 - hSession->message = message;  
190 - hSession->update_ssl = update_ssl;  
191 - hSession->sock = -1;  
192 -  
193 -#ifdef _WIN32  
194 - hSession->sockEvent = NULL;  
195 -#endif // _WIN32  
196 -  
197 - hSession->model_num = -1;  
198 - hSession->cstate = NOT_CONNECTED;  
199 - hSession->oia_status = -1;  
200 -  
201 strncpy(hSession->full_model_name,"IBM-",LIB3270_FULL_MODEL_NAME_LENGTH); 209 strncpy(hSession->full_model_name,"IBM-",LIB3270_FULL_MODEL_NAME_LENGTH);
202 hSession->model_name = &hSession->full_model_name[4]; 210 hSession->model_name = &hSession->full_model_name[4];
203 211
@@ -140,7 +140,7 @@ LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE ix) @@ -140,7 +140,7 @@ LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE ix)
140 140
141 static void toggle_monocase(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt) 141 static void toggle_monocase(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt)
142 { 142 {
143 - screen_disp(session); 143 + session->display(session);
144 } 144 }
145 145
146 /* 146 /*