]> granicus.if.org Git - nethack/commitdiff
nttty topten output processing
authornhmall <nhmall@nethack.org>
Sat, 29 Dec 2018 17:26:33 +0000 (12:26 -0500)
committernhmall <nhmall@nethack.org>
Sat, 29 Dec 2018 17:26:33 +0000 (12:26 -0500)
switch back to using the safe routines
after tty port exits on Windows console
tty port.

Fixes H7758
1613

include/extern.h
sys/winnt/nttty.c
sys/winnt/windmain.c
win/tty/wintty.c

index 99107019455b57bfc6f4f40056b81d5c15b46239..dbef64c22795b6c5c8f15474ebf5e1bacef76001 100644 (file)
@@ -1639,6 +1639,7 @@ E int FDECL(ntposkey, (int *, int *, int *));
 E void FDECL(set_output_mode, (int));
 E void NDECL(synch_cursor);
 E void NDECL(nethack_enter_nttty);
+E void NDECL(nttty_exit);
 #endif
 
 /* ### o_init.c ### */
index b71133af21e6a4b77b48419536917211b04ce531..72354c9675d88ac56bfbcff10f91ac8cb8a1b516 100644 (file)
@@ -83,6 +83,7 @@ static void NDECL(check_and_set_font);
 static boolean NDECL(check_font_widths);
 static void NDECL(set_known_good_console_font);
 static void NDECL(restore_original_console_font);
+extern void NDECL(safe_routines);
 
 /* Win32 Screen buffer,coordinate,console I/O information */
 COORD ntcoord;
@@ -413,6 +414,13 @@ int mode; // unused
     really_move_cursor();
 }
 
+void
+nttty_exit()
+{
+    /* go back to using the safe routines */
+    safe_routines();
+}
+
 int
 process_keystroke(ir, valid, numberpad, portdebug)
 INPUT_RECORD *ir;
@@ -1701,6 +1709,7 @@ void set_cp_map()
     }
 }
 
+#if 0
 /* early_raw_print() is used during early game intialization prior to the
  * setting up of the windowing system.  This allows early errors and panics
  * to have there messages displayed.
@@ -1760,8 +1769,10 @@ void early_raw_print(const char *s)
     SetConsoleCursorPosition(console.hConOut, console.cursor);
 
 }
+#endif
 
-/* nethack_enter_nttty() is the first thing that is called from main.
+/* nethack_enter_nttty() is the first thing that is called from main
+ * once the tty port is confirmed.
  *
  * We initialize all console state to support rendering to the console
  * through out flipping support at this time.  This allows us to support
@@ -1787,9 +1798,10 @@ void early_raw_print(const char *s)
 
 void nethack_enter_nttty()
 {
+#if 0
     /* set up state needed by early_raw_print() */
     windowprocs.win_raw_print = early_raw_print;
-
+#endif
     console.hConOut = GetStdHandle(STD_OUTPUT_HANDLE);
     nhassert(console.hConOut != NULL); // NOTE: this assert will not print
 
index b70cd456d5102e3608897a8584cca0ca3e76ae18..2b3b4ddcd029969dd0a081fdc623cd820c91adcc 100644 (file)
@@ -47,6 +47,7 @@ void FDECL(windows_raw_print, (const char *));
 char FDECL(windows_yn_function, (const char *, const char *, CHAR_P));
 void FDECL(windows_getlin, (const char *, char *));
 extern int NDECL(windows_console_custom_nhgetch);
+void NDECL(safe_routines);
 
 char orgdir[PATHLEN];
 char *dir;
@@ -93,11 +94,7 @@ char *argv[];
      * Get a set of valid safe windowport function
      * pointers during early startup initialization.
      */
-    if (!WINDOWPORT("safe-startup"))
-        windowprocs = *get_safe_procs(1);
-    if (!GUILaunched)
-        windowprocs.win_nhgetch = windows_console_custom_nhgetch;
-
+    safe_routines();
     sys_early_init();
 #ifdef _MSC_VER
 # ifdef DEBUG
@@ -570,6 +567,19 @@ nhusage()
 #undef ADD_USAGE
 }
 
+void
+safe_routines(VOID_ARGS)
+{
+    /*
+     * Get a set of valid safe windowport function
+     * pointers during early startup initialization.
+     */
+    if (!WINDOWPORT("safe-startup"))
+        windowprocs = *get_safe_procs(1);
+    if (!GUILaunched)
+        windowprocs.win_nhgetch = windows_console_custom_nhgetch;
+}
+
 #ifdef PORT_HELP
 void
 port_help()
index 6116c467f9553e6c407f3f542aadc4968906ffe5..50e67c500b26583f3daefb46c941d70609a63304 100644 (file)
@@ -1355,6 +1355,9 @@ const char *str;
 
 #ifndef NO_TERMS    /*(until this gets added to the window interface)*/
     tty_shutdown(); /* cleanup termcap/terminfo/whatever */
+#endif
+#ifdef WIN32
+    nttty_exit();
 #endif
     iflags.window_inited = 0;
 }