diff options
author | Christopher Faylor <me@cgf.cx> | 2005-11-24 02:34:31 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-11-24 02:34:31 +0000 |
commit | 819dbaebd65f8d38cdb5eaf996b8c046e258ce5f (patch) | |
tree | 0c6308ca80081ec0f882734e7f27a8e57d0ce571 /winsup/cygwin/fhandler_tty.cc | |
parent | a39cfda7ba28acc3b3c8251c4b61582ed7bbaca6 (diff) | |
download | cygnal-819dbaebd65f8d38cdb5eaf996b8c046e258ce5f.tar.gz cygnal-819dbaebd65f8d38cdb5eaf996b8c046e258ce5f.tar.bz2 cygnal-819dbaebd65f8d38cdb5eaf996b8c046e258ce5f.zip |
* fhandler_tty.cc (fhandler_tty_slave::open): Reset the current windows station
whenever ctty == -1 regardles of whetehr there's a windows station already
assigned. Close the old windows station in this situation.
* pinfo.cc (_pinfo::set_ctty): Reinstate incrementing of console count when
recording ctty so that the current tty is always around.
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r-- | winsup/cygwin/fhandler_tty.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 559819fee..5b7e69ba5 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -580,7 +580,8 @@ fhandler_tty_slave::open (int flags, mode_t) && wincap.pty_needs_alloc_console ()) { BOOL b; - if (!GetProcessWindowStation ()) + HWINSTA horig = GetProcessWindowStation (); + if (myself->ctty == -1) { HWINSTA h = CreateWindowStation (NULL, 0, GENERIC_READ | GENERIC_WRITE, &sec_none_nih); termios_printf ("CreateWindowStation %p, %E", h); @@ -589,6 +590,8 @@ fhandler_tty_slave::open (int flags, mode_t) b = SetProcessWindowStation (h); termios_printf ("SetProcessWindowStation %d, %E", b); } + if (horig) + CloseWindowStation (horig); } b = AllocConsole (); // will cause flashing if workstation // stuff fails |