* cygthread.cc (cygthread::exit_thread): Define new method.
* cygthread.h (cygthread::exit_thread): Declare new method. * fhandler.h (fhandler_tty_master::hThread): Delete. (fhandler_tty_master::output_thread): Define. * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Adjust constructor. (fhandler_tty_master::init): Use cygthread rather than handle. (process_output): Use cygthread method to exit. (fhandler_tty_master::fixup_after_fork): Set output_thread to NULL after fork. (fhandler_tty_master::fixup_after_exec): Set output_thread to NULL after spawn/exec. * tty.cc (tty_list::terminate): Detach from output_thread using cygthread method.
This commit is contained in:
@@ -25,6 +25,7 @@ details. */
|
||||
#include "cygwin/cygserver_transport.h"
|
||||
#include "cygwin/cygserver.h"
|
||||
#include "shared_info.h"
|
||||
#include "cygthread.h"
|
||||
|
||||
extern fhandler_tty_master *tty_master;
|
||||
|
||||
@@ -144,8 +145,8 @@ tty_list::terminate (void)
|
||||
ForceCloseHandle1 (t->to_slave, to_pty);
|
||||
ForceCloseHandle1 (t->from_slave, from_pty);
|
||||
CloseHandle (tty_master->inuse);
|
||||
// FIXME This should be using a cygthread object
|
||||
WaitForSingleObject (tty_master->hThread, INFINITE);
|
||||
if (tty_master->output_thread)
|
||||
tty_master->output_thread->detach ();
|
||||
t->init ();
|
||||
|
||||
char buf[20];
|
||||
|
Reference in New Issue
Block a user