diff --git a/src/syncterm/CHANGES b/src/syncterm/CHANGES index be9527d813c45b5208ccbb285ad94509024443ab..678245206b701dcea42b1e3aa5171ad2e3264cd6 100644 --- a/src/syncterm/CHANGES +++ b/src/syncterm/CHANGES @@ -11,6 +11,7 @@ Add support for DECSC/DECRC control codes Fix crash when first ANSI music note played is in background Fix binary mode tracking, which could cause issues after transfers Fix SDL and GDI issue with textmode() when font is changed +Fix manual upload screen when not in cp437+ANSI mode Version 1.6 ------------ diff --git a/src/syncterm/term.c b/src/syncterm/term.c index 93bc9729584e334a4406af627122fbdc72d7b5fd..df8edf6089cf3a9ea62825b3734ba7a16271101e 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -323,6 +323,20 @@ static struct vmem_cell *status_bar; size_t status_bar_sz; bool force_status_update = false; +struct ciolib_screen * +cp437_savescrn(void) +{ + struct ciolib_screen *ret = savescreen(); + set_modepalette(palettes[COLOUR_PALETTE]); + setfont(0, false, 1); + setfont(0, false, 2); + setfont(0, false, 3); + setfont(0, false, 4); + setvideoflags(getvideoflags() & (CIOLIB_VIDEO_NOBLINK | CIOLIB_VIDEO_BGBRIGHT)); + + return ret; +} + void update_status(struct bbslist *bbs, int speed, int ooii_mode, bool ata_inv) { @@ -938,16 +952,15 @@ begin_upload(struct bbslist *bbs, bool autozm, int lastch) }; struct text_info txtinfo; struct ciolib_screen *savscrn; + struct ciolib_screen *savscrn2; if (safe_mode) return; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + suspend_rip(true); + savscrn = cp437_savescrn(); + savscrn2 = savescreen(); init_uifc(false, false); if (!isdir(bbs->uldir)) { @@ -956,6 +969,7 @@ begin_upload(struct bbslist *bbs, bool autozm, int lastch) uifcbail(); restorescreen(savscrn); freescreen(savscrn); + freescreen(savscrn2); gotoxy(txtinfo.curx, txtinfo.cury); return; } @@ -967,12 +981,14 @@ begin_upload(struct bbslist *bbs, bool autozm, int lastch) uifcbail(); restorescreen(savscrn); freescreen(savscrn); + freescreen(savscrn2); gotoxy(txtinfo.curx, txtinfo.cury); return; } SAFECOPY(path, fpick.selected[0]); filepick_free(&fpick); - restorescreen(savscrn); + restorescreen(savscrn2); + freescreen(savscrn2); if ((fp = fopen(path, "rb")) == NULL) { SAFEPRINTF2(str, "Error %d opening %s for read", errno, path); @@ -985,7 +1001,6 @@ begin_upload(struct bbslist *bbs, bool autozm, int lastch) } setvbuf(fp, NULL, _IOFBF, 0x10000); - suspend_rip(true); if (autozm) { zmodem_upload(bbs, fp, path); } @@ -1042,11 +1057,7 @@ begin_download(struct bbslist *bbs) return; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); init_uifc(false, false); @@ -1253,11 +1264,7 @@ zmodem_duplicate_callback(void *cbdata, void *zm_void) int old_hold = hold_update; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); window(1, 1, txtinfo.screenwidth, txtinfo.screenheight); init_uifc(false, false); hold_update = false; @@ -1664,11 +1671,7 @@ xmodem_duplicate(xmodem_t *xm, struct bbslist *bbs, char *path, size_t pathsize, int old_hold = hold_update; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); window(1, 1, txtinfo.screenwidth, txtinfo.screenheight); init_uifc(false, false); @@ -2058,11 +2061,7 @@ music_control(struct bbslist *bbs) int i; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); init_uifc(false, false); i = cterm->music_enable; @@ -2086,11 +2085,7 @@ font_control(struct bbslist *bbs, struct cterminal *cterm) if (safe_mode) return; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); init_uifc(false, false); switch (cio_api.mode) { @@ -2148,11 +2143,7 @@ capture_control(struct bbslist *bbs) if (safe_mode) return; gettextinfo(&txtinfo); - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); cap = (char *)alloca(cterm->height * cterm->width * 2); gettext(cterm->x, cterm->y, cterm->x + cterm->width - 1, cterm->y + cterm->height - 1, cap); @@ -4344,22 +4335,16 @@ doterm(struct bbslist *bbs) /* Have full sequence (Assumes * zrinit and zrqinit are same * length */ - struct ciolib_screen *savscrn; WRITE_OUTBUF(); suspend_rip(true); - savscrn = savescreen(); - set_modepalette(palettes[COLOUR_PALETTE]); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); - setvideoflags(getvideoflags() & (CIOLIB_VIDEO_NOBLINK | CIOLIB_VIDEO_BGBRIGHT)); - if (!strcmp((char *)zrqbuf, (char *)zrqinit)) + if (!strcmp((char *)zrqbuf, (char *)zrqinit)) { + struct ciolib_screen *savscrn = cp437_savescrn(); zmodem_download(bbs); + restorescreen(savscrn); + freescreen(savscrn); + } else begin_upload(bbs, true, inch); - restorescreen(savscrn); - freescreen(savscrn); setup_mouse_events(&ms); suspend_rip(false); zrqbuf[0] = 0; @@ -4553,11 +4538,7 @@ doterm(struct bbslist *bbs) { char title[LIST_NAME_MAX + 13]; struct ciolib_screen *savscrn; - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); show_bbslist(bbs->name, true); sprintf(title, "SyncTERM - %s\n", bbs->name); settitle(title); @@ -4627,11 +4608,7 @@ doterm(struct bbslist *bbs) case 0x2300: /* Alt-H - Hangup */ { struct ciolib_screen *savscrn; - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); if (quitting || confirm("Disconnect... Are you sure?", "Selecting Yes closes the connection\n")) { @@ -4728,11 +4705,7 @@ doterm(struct bbslist *bbs) struct ciolib_screen *savscrn; char title[LIST_NAME_MAX + 13]; - savscrn = savescreen(); - setfont(0, false, 1); - setfont(0, false, 2); - setfont(0, false, 3); - setfont(0, false, 4); + savscrn = cp437_savescrn(); show_bbslist(bbs->name, true); sprintf(title, "SyncTERM - %s\n", bbs->name); settitle(title);