diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 1b2b73df1..3877a8506 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2002-08-30 Christopher January + Christopher Faylor + + * tty.cc (tty_list::allocate_tty): Use GetConsoleWindow, if available. + Call FindWindow in a loop. + 2002-08-30 Christopher Faylor * miscfuncs.cc (check_iovec_for_read): Don't check buffer when zero diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index e3d34f42c..0c0334f11 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -494,6 +494,7 @@ LoadDLLfunc (CoCreateInstance, 20, ole32) LoadDLLfuncEx (CancelIo, 4, kernel32, 1) LoadDLLfuncEx (CreateHardLinkA, 12, kernel32, 1) LoadDLLfuncEx (CreateToolhelp32Snapshot, 8, kernel32, 1) +LoadDLLfuncEx (GetConsoleWindow, 4, kernel32, 1) LoadDLLfuncEx2 (IsDebuggerPresent, 0, kernel32, 1, 1) LoadDLLfuncEx (Process32First, 8, kernel32, 1) LoadDLLfuncEx (Process32Next, 8, kernel32, 1) diff --git a/winsup/cygwin/tty.cc b/winsup/cygwin/tty.cc index bb9f8409f..360fa2ef5 100644 --- a/winsup/cygwin/tty.cc +++ b/winsup/cygwin/tty.cc @@ -196,7 +196,7 @@ tty_list::allocate_tty (int with_console) if (!with_console) console = NULL; - else + else if (!(console = GetConsoleWindow ())) { char *oldtitle = new char [TITLESIZE]; @@ -218,8 +218,12 @@ tty_list::allocate_tty (int with_console) __small_sprintf (buf, "cygwin.find.console.%d", myself->pid); SetConsoleTitle (buf); - Sleep (40); - console = FindWindow (NULL, buf); + for (int times = 0; times < 25; times++) + { + Sleep (10); + if ((console = FindWindow (NULL, buf))) + break; + } SetConsoleTitle (oldtitle); Sleep (40); ReleaseMutex (title_mutex);