diff --git a/curspriv.h b/curspriv.h index a0463171..e76cc8a7 100644 --- a/curspriv.h +++ b/curspriv.h @@ -15,7 +15,7 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -/* $Id: curspriv.h,v 1.109 2006/08/11 05:43:36 wmcbrine Exp $ */ +/* $Id: curspriv.h,v 1.110 2006/08/11 06:17:48 wmcbrine Exp $ */ /* CURSPRIV.H @@ -52,9 +52,9 @@ struct cttyset SCREEN saved; }; -extern struct cttyset c_sh_tty; /* tty modes for shell_mode */ -extern struct cttyset c_pr_tty; /* tty modes for prog_mode */ -extern struct cttyset c_save_tty; +extern struct cttyset ctty[3]; + +enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY }; /* tracing flag */ extern bool trace_on; @@ -104,6 +104,7 @@ void PDC_napms(int); void PDC_reset_prog_mode(void); void PDC_reset_shell_mode(void); int PDC_resize_screen(int, int); +void PDC_restore_screen_mode(int); int PDC_scr_close(void); int PDC_scr_open(int, char **); int PDC_set_ctrl_break(bool); @@ -118,8 +119,8 @@ int PDC_set_scrn_mode(VIOMODEINFO); bool PDC_scrn_modes_equal(VIOMODEINFO, VIOMODEINFO); int PDC_get_scrn_mode(VIOMODEINFO *); int PDC_query_adapter_type(VIOCONFIGINFO *); -int PDC_get_keyboard_info(KBDINFO *); -int PDC_set_keyboard_default(void); +void PDC_get_keyboard_info(void); +void PDC_set_keyboard_default(void); #else int PDC_set_scrn_mode(int); int PDC_get_scrn_mode(void); diff --git a/dos/pdcscrn.c b/dos/pdcscrn.c index d2a3ecdc..c8f3dadf 100644 --- a/dos/pdcscrn.c +++ b/dos/pdcscrn.c @@ -24,7 +24,7 @@ # include #endif -RCSID("$Id: pdcscrn.c,v 1.39 2006/08/11 05:43:37 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.40 2006/08/11 06:17:48 wmcbrine Exp $"); Regs regs; /* used in various other modules */ @@ -247,3 +247,12 @@ void PDC_reset_shell_mode(void) { PDC_LOG(("PDC_reset_shell_mode() - called.\n")); } + +void PDC_restore_screen_mode(int i) +{ + SP->font = PDC_get_font(); + PDC_set_font(ctty[i].saved.font); + + if (PDC_get_scrn_mode() != ctty[i].saved.scrnmode) + PDC_set_scrn_mode(ctty[i].saved.scrnmode); +} diff --git a/os2/pdcscrn.c b/os2/pdcscrn.c index 4098ddcc..f5ac5894 100644 --- a/os2/pdcscrn.c +++ b/os2/pdcscrn.c @@ -20,7 +20,7 @@ #include #include -RCSID("$Id: pdcscrn.c,v 1.34 2006/08/11 05:43:37 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.35 2006/08/11 06:17:48 wmcbrine Exp $"); #ifdef EMXVIDEO static unsigned char *saved_screen = NULL; @@ -156,13 +156,7 @@ int PDC_scr_open(int argc, char **argv) #ifndef EMXVIDEO PDC_query_adapter_type(&SP->adapter); PDC_get_scrn_mode(&SP->scrnmode); - PDC_get_keyboard_info(&SP->kbdinfo); - - PDC_LOG(("PDC_scr_open() - after PDC_get_keyboard_info(). cb: %x, " - "fsMask: %x, chTurnAround: %x, fsInterim: %x, fsState: %x\n", - SP->kbdinfo.cb, SP->kbdinfo.fsMask, - SP->kbdinfo.chTurnAround, SP->kbdinfo.fsInterim, - SP->kbdinfo.fsState)); + PDC_get_keyboard_info(); /* Now set the keyboard into binary mode */ @@ -293,3 +287,19 @@ void PDC_reset_shell_mode(void) PDC_set_keyboard_default(); #endif } + +void PDC_restore_screen_mode(int i) +{ +#ifndef EMXVIDEO + VIOMODEINFO modeInfo; +#endif + SP->font = PDC_get_font(); + PDC_set_font(ctty[i].saved.font); + +#ifndef EMXVIDEO + PDC_get_scrn_mode(&modeInfo); + + if (!PDC_scrn_modes_equal(modeInfo, ctty[i].saved.scrnmode)) + PDC_set_scrn_mode(ctty[i].saved.scrnmode); +#endif +} diff --git a/pdcurses/kernel.c b/pdcurses/kernel.c index 2173d743..8da86291 100644 --- a/pdcurses/kernel.c +++ b/pdcurses/kernel.c @@ -36,7 +36,7 @@ # undef wmove #endif -RCSID("$Id: kernel.c,v 1.56 2006/08/11 05:43:37 wmcbrine Exp $"); +RCSID("$Id: kernel.c,v 1.57 2006/08/11 06:17:48 wmcbrine Exp $"); RIPPEDOFFLINE linesripped[5]; char linesrippedoff = 0; @@ -139,56 +139,44 @@ char linesrippedoff = 0; **man-end****************************************************************/ -static void PDC_save_mode(struct cttyset *ctty) +static void PDC_save_mode(int i) { - ctty->been_set = TRUE; + ctty[i].been_set = TRUE; - memcpy(&(ctty->saved), SP, sizeof(SCREEN)); + memcpy(&(ctty[i].saved), SP, sizeof(SCREEN)); } -static int PDC_restore_mode(struct cttyset *ctty) +static int PDC_restore_mode(int i) { -#if defined(OS2) && !defined(EMXVIDEO) - VIOMODEINFO modeInfo; -#endif - if (ctty->been_set == TRUE) + if (ctty[i].been_set == TRUE) { - memcpy(SP, &(ctty->saved), sizeof(SCREEN)); + memcpy(SP, &(ctty[i].saved), sizeof(SCREEN)); - if (PDC_get_ctrl_break() != ctty->saved.orgcbr) - PDC_set_ctrl_break(ctty->saved.orgcbr); + if (PDC_get_ctrl_break() != ctty[i].saved.orgcbr) + PDC_set_ctrl_break(ctty[i].saved.orgcbr); - if (ctty->saved.raw_out) + if (ctty[i].saved.raw_out) raw(); - SP->font = PDC_get_font(); - PDC_set_font(ctty->saved.font); + PDC_restore_screen_mode(i); -#if defined(OS2) && !defined(EMXVIDEO) - PDC_get_scrn_mode(&modeInfo); + if ((LINES != ctty[i].saved.lines) || + (COLS != ctty[i].saved.cols)) + resize_term(ctty[i].saved.lines, ctty[i].saved.cols); - if (!PDC_scrn_modes_equal(modeInfo, ctty->saved.scrnmode)) - PDC_set_scrn_mode(ctty->saved.scrnmode); -#elif defined(DOS) - if (PDC_get_scrn_mode() != ctty->saved.scrnmode) - PDC_set_scrn_mode(ctty->saved.scrnmode); -#endif - if ((LINES != ctty->saved.lines) || (COLS != ctty->saved.cols)) - resize_term(ctty->saved.lines, ctty->saved.cols); + PDC_curs_set(ctty[i].saved.visibility); - PDC_curs_set(ctty->saved.visibility); - - PDC_gotoyx(ctty->saved.cursrow, ctty->saved.curscol); + PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol); } - return ctty->been_set ? OK : ERR; + return ctty[i].been_set ? OK : ERR; } int def_prog_mode(void) { PDC_LOG(("def_prog_mode() - called\n")); - PDC_save_mode(&c_pr_tty); + PDC_save_mode(PDC_PR_TTY); return OK; } @@ -197,7 +185,7 @@ int def_shell_mode(void) { PDC_LOG(("def_shell_mode() - called\n")); - PDC_save_mode(&c_sh_tty); + PDC_save_mode(PDC_SH_TTY); return OK; } @@ -206,7 +194,7 @@ int reset_prog_mode(void) { PDC_LOG(("reset_prog_mode() - called\n")); - PDC_restore_mode(&c_pr_tty); + PDC_restore_mode(PDC_PR_TTY); PDC_reset_prog_mode(); return OK; @@ -216,7 +204,7 @@ int reset_shell_mode(void) { PDC_LOG(("reset_shell_mode() - called\n")); - PDC_restore_mode(&c_sh_tty); + PDC_restore_mode(PDC_SH_TTY); PDC_reset_shell_mode(); return OK; @@ -226,14 +214,14 @@ int resetty(void) { PDC_LOG(("resetty() - called\n")); - return PDC_restore_mode(&c_save_tty); + return PDC_restore_mode(PDC_SAVE_TTY); } int savetty(void) { PDC_LOG(("savetty() - called\n")); - PDC_save_mode(&c_save_tty); + PDC_save_mode(PDC_SAVE_TTY); return OK; } diff --git a/win32/pdcscrn.c b/win32/pdcscrn.c index 9ee13e04..afeeedc6 100644 --- a/win32/pdcscrn.c +++ b/win32/pdcscrn.c @@ -24,7 +24,7 @@ #define CURSES_LIBRARY 1 #include -RCSID("$Id: pdcscrn.c,v 1.48 2006/08/11 05:43:37 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.49 2006/08/11 06:17:48 wmcbrine Exp $"); #define PDC_RESTORE_NONE 0 #define PDC_RESTORE_BUFFER 1 @@ -370,6 +370,10 @@ void PDC_reset_shell_mode(void) SetConsoleMode(hConIn, dwConsoleMode); } +void PDC_restore_screen_mode(int i) +{ +} + #ifdef PDC_DLL_BUILD BOOL WINAPI DllMain(HINSTANCE hDLL, DWORD dwReason, LPVOID pReserved) diff --git a/x11/pdcscrn.c b/x11/pdcscrn.c index da9bdbe1..78efd4b9 100644 --- a/x11/pdcscrn.c +++ b/x11/pdcscrn.c @@ -17,7 +17,7 @@ #include "pdcx11.h" -RCSID("$Id: pdcscrn.c,v 1.32 2006/08/11 05:43:37 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.33 2006/08/11 06:17:48 wmcbrine Exp $"); /*man-start************************************************************** @@ -151,3 +151,7 @@ void PDC_reset_shell_mode(void) { PDC_LOG(("PDC_reset_shell_mode() - called.\n")); } + +void PDC_restore_screen_mode(int i) +{ +}