From 1160b21781a5ecec5325e28661aed7f49faecd2f Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 19 May 2006 00:32:36 +0000 Subject: [PATCH] * fhandler_console.cc (fhandler_console::need_invisible): Allocate an invisible window station when ctty != TTY_CONSOLE. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/fhandler_console.cc | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 3ceaf4c94..941407f1e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2006-05-18 Christopher Faylor + + * fhandler_console.cc (fhandler_console::need_invisible): Allocate an + invisible window station when ctty != TTY_CONSOLE. + 2006-05-16 Christopher Faylor * cygtls.cc (_cygtls::remove): Don't test for initialization since diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 64a83ce66..91a5e1549 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -1848,7 +1848,7 @@ fhandler_console::need_invisible () station or, strangely, characters will not be displayed in any windows drawn on the current screen. We only do this if we have changed to a new windows station and if we had an existing windows station previously. - We also close the previously opened work station even though AllocConsole + We also close the previously opened workstation even though AllocConsole is now "using" it. This doesn't seem to cause any problems. Things to watch out for if you make changes in this code: @@ -1872,18 +1872,18 @@ fhandler_console::need_invisible () } else { - if (myself->ctty == -1) + if (myself->ctty != TTY_CONSOLE) { h = CreateWindowStation (NULL, 0, WINSTA_ACCESS, NULL); - termios_printf ("CreateWindowStation(NULL, %p), %E", h); + termios_printf ("%p = CreateWindowStation(NULL), %E", h); if (h) { b = SetProcessWindowStation (h); termios_printf ("SetProcessWindowStation %d, %E", b); } } - b = AllocConsole (); /* will cause flashing if CreateWorkstation - failed */ + b = AllocConsole (); /* will cause flashing if CreateWindowStation + failed */ debug_printf ("h %p, horig %p, flags %p", h, horig, oi.dwFlags); if (horig && h && h != horig && SetProcessWindowStation (horig)) CloseWindowStation (h);