Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-11-17 19:17:17 +0300
committerCorinna Vinschen <corinna@vinschen.de>2005-11-17 19:17:17 +0300
commit0f46c31745740b8538ce30944182f425ef4f0142 (patch)
tree8ee34abf7a55241520f515a7302a94a58d62f4a4
parentd55950ba3a50f0db3f5ec12d1586a132b454ffc6 (diff)
* fhandler_tty.cc (fhandler_tty_slave::open): Don't expect that
service applications have no window station attached.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_tty.cc17
2 files changed, 15 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 38584e0c5..bf0643353 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_tty.cc (fhandler_tty_slave::open): Don't expect that
+ service applications have no window station attached.
+
2005-11-16 Christopher Faylor <cgf@timesys.com>
* times.cc (hires_ms::prime): Don't escalate the priority.
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index 3bf524e11..559819fee 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -577,15 +577,18 @@ fhandler_tty_slave::open (int flags, mode_t)
set_open_status ();
if (cygheap->manage_console_count ("fhandler_tty_slave::open", 1) == 1
&& !GetConsoleCP () && !output_done_event
- && wincap.pty_needs_alloc_console () && !GetProcessWindowStation ())
+ && wincap.pty_needs_alloc_console ())
{
BOOL b;
- HWINSTA h = CreateWindowStation (NULL, 0, GENERIC_READ | GENERIC_WRITE, &sec_none_nih);
- termios_printf ("CreateWindowStation %p, %E", h);
- if (h)
- {
- b = SetProcessWindowStation (h);
- termios_printf ("SetProcessWindowStation %d, %E", b);
+ if (!GetProcessWindowStation ())
+ {
+ HWINSTA h = CreateWindowStation (NULL, 0, GENERIC_READ | GENERIC_WRITE, &sec_none_nih);
+ termios_printf ("CreateWindowStation %p, %E", h);
+ if (h)
+ {
+ b = SetProcessWindowStation (h);
+ termios_printf ("SetProcessWindowStation %d, %E", b);
+ }
}
b = AllocConsole (); // will cause flashing if workstation
// stuff fails