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:
authorChristopher Faylor <me@cgf.cx>2000-09-07 05:18:37 +0400
committerChristopher Faylor <me@cgf.cx>2000-09-07 05:18:37 +0400
commitc1644acb233ed749b28b4139604ab134cf1cd34c (patch)
tree3fd9f31c5c3d2f81996fd6ce65b627959e8fe015 /winsup/cygwin/fhandler_termios.cc
parent8dec7b03798a822337c86dbbea2f764d165cd61d (diff)
* exceptions.cc (signal_exit): Reset all mutos owned by the main thread.
* fhandler.h: Define *_output_mutex macros for serializing tty output. (fhandler_termios): Remove restart_output_event. Define dummy output mutex methods. (fhandler_pty_master): Remove unneeded fixup_after_fork method. * fhandler_termios.cc (fhandler_termios::line_edit): Acquire output_mutex when CTRL-S is hit. Release it on CTRL-Q. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Remove inappropriate OutputStopped test here. Just use the output mutex. (fhandler_pty_master::fhandler_pty_master): Remove obsolete reference to restart_output_event. (fhandler_tty_common::close): Ditto. (fhandler_pty_master::set_close_on_exec): Ditto. (fhandler_pty_master::fixup_after_fork): Delete. * tty.cc (tty::common_init): Ditto. * sync.cc (muto::reset): New method. * sync.h: Declare above method.
Diffstat (limited to 'winsup/cygwin/fhandler_termios.cc')
-rw-r--r--winsup/cygwin/fhandler_termios.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc
index 006da2474..486e47918 100644
--- a/winsup/cygwin/fhandler_termios.cc
+++ b/winsup/cygwin/fhandler_termios.cc
@@ -213,14 +213,18 @@ fhandler_termios::line_edit (const char *rptr, int nread, int always_accept)
{
if (c == tc->ti.c_cc[VSTOP])
{
- tc->OutputStopped++;
+ if (!tc->OutputStopped)
+ {
+ tc->OutputStopped = 1;
+ acquire_output_mutex (INFINITE);
+ }
continue;
}
else if (c == tc->ti.c_cc[VSTART])
{
restart_output:
tc->OutputStopped = 0;
- SetEvent (restart_output_event);
+ release_output_mutex ();
continue;
}
else if ((tc->ti.c_iflag & IXANY) && tc->OutputStopped)