mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 00:07:36 +08:00
Cygwin: console: Add workaround for ConEmu cygwin connector.
- ConEmu cygwin connector conflicts with cons_master_thread since it does not use read() to read console input. With this patch, cons_master_thread is disabled in ConEmu cygwin connector.
This commit is contained in:
parent
d4aacd50e6
commit
f2e39d5230
@ -1604,6 +1604,8 @@ fhandler_console::dup (fhandler_base *child, int flags)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void hook_conemu_cygwin_connector();
|
||||
|
||||
int
|
||||
fhandler_console::open (int flags, mode_t)
|
||||
{
|
||||
@ -1691,6 +1693,8 @@ fhandler_console::open (int flags, mode_t)
|
||||
|
||||
if (myself->pid == con.owner)
|
||||
{
|
||||
if (GetModuleHandle ("ConEmuHk64.dll"))
|
||||
hook_conemu_cygwin_connector ();
|
||||
char name[MAX_PATH];
|
||||
shared_name (name, CONS_THREAD_SYNC, get_minor ());
|
||||
thread_sync_event = CreateEvent(NULL, FALSE, FALSE, name);
|
||||
@ -3982,6 +3986,7 @@ fhandler_console::set_console_mode_to_native ()
|
||||
DEF_HOOK (CreateProcessA);
|
||||
DEF_HOOK (CreateProcessW);
|
||||
DEF_HOOK (ContinueDebugEvent);
|
||||
DEF_HOOK (LoadLibraryA); /* Hooked for ConEmu cygwin connector */
|
||||
|
||||
static BOOL WINAPI
|
||||
CreateProcessA_Hooked
|
||||
@ -4023,6 +4028,20 @@ ContinueDebugEvent_Hooked
|
||||
return ContinueDebugEvent_Orig (p, t, s);
|
||||
}
|
||||
|
||||
/* Hooked for ConEmu cygwin connector */
|
||||
static HMODULE WINAPI
|
||||
LoadLibraryA_Hooked (LPCSTR m)
|
||||
{
|
||||
const char *p;
|
||||
if ((p = strrchr(m, '\\')))
|
||||
p++;
|
||||
else
|
||||
p = m;
|
||||
if (strcasecmp(p, "ConEmuHk64.dll") == 0)
|
||||
fhandler_console::set_disable_master_thread (true);
|
||||
return LoadLibraryA_Orig (m);
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_console::fixup_after_fork_exec (bool execing)
|
||||
{
|
||||
@ -4046,6 +4065,12 @@ fhandler_console::fixup_after_fork_exec (bool execing)
|
||||
DO_HOOK (NULL, ContinueDebugEvent);
|
||||
}
|
||||
|
||||
static void
|
||||
hook_conemu_cygwin_connector()
|
||||
{
|
||||
DO_HOOK (NULL, LoadLibraryA);
|
||||
}
|
||||
|
||||
/* Ugly workaround to create invisible console required since Windows 7.
|
||||
|
||||
First try to just attach to any console which may have started this
|
||||
|
Loading…
x
Reference in New Issue
Block a user