kernel: Use a magic ConsoleHandle value instead of create flag to pass
the CREATE_NEW_CONSOLE flag to the child.
This commit is contained in:
parent
645c0cc63c
commit
626669e1e3
|
@ -50,8 +50,6 @@
|
||||||
|
|
||||||
extern int __wine_set_signal_handler(unsigned, int (*)(unsigned));
|
extern int __wine_set_signal_handler(unsigned, int (*)(unsigned));
|
||||||
|
|
||||||
extern int main_create_flags;
|
|
||||||
|
|
||||||
static CRITICAL_SECTION ldt_section;
|
static CRITICAL_SECTION ldt_section;
|
||||||
static CRITICAL_SECTION_DEBUG critsect_debug =
|
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||||
{
|
{
|
||||||
|
@ -142,19 +140,17 @@ static BOOL process_attach(void)
|
||||||
/* finish the process initialisation for console bits, if needed */
|
/* finish the process initialisation for console bits, if needed */
|
||||||
__wine_set_signal_handler(SIGINT, CONSOLE_HandleCtrlC);
|
__wine_set_signal_handler(SIGINT, CONSOLE_HandleCtrlC);
|
||||||
|
|
||||||
if (main_create_flags & CREATE_NEW_CONSOLE)
|
if (NtCurrentTeb()->Peb->ProcessParameters->ConsoleHandle == (HANDLE)1) /* FIXME */
|
||||||
{
|
{
|
||||||
HMODULE mod = GetModuleHandleA(0);
|
HMODULE mod = GetModuleHandleA(0);
|
||||||
if (RtlImageNtHeader(mod)->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
if (RtlImageNtHeader(mod)->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI)
|
||||||
AllocConsole();
|
AllocConsole();
|
||||||
}
|
}
|
||||||
else if (!(main_create_flags & DETACHED_PROCESS))
|
/* else TODO for DETACHED_PROCESS:
|
||||||
{
|
* 1/ inherit console + handles
|
||||||
/* 1/ shall inherit console + handles
|
* 2/ create std handles, if handles are not inherited
|
||||||
* 2/ shall create std handles, if handles are not inherited
|
* TBD when not using wineserver handles for console handles
|
||||||
* TBD when not using wineserver handles for console handles
|
*/
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create 16-bit task */
|
/* Create 16-bit task */
|
||||||
LoadLibrary16( "krnl386.exe" );
|
LoadLibrary16( "krnl386.exe" );
|
||||||
|
|
|
@ -1426,6 +1426,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_user_params( LPCWSTR filename, LPCWST
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & CREATE_NEW_PROCESS_GROUP) params->ConsoleFlags = 1;
|
if (flags & CREATE_NEW_PROCESS_GROUP) params->ConsoleFlags = 1;
|
||||||
|
if (flags & CREATE_NEW_CONSOLE) params->ConsoleHandle = (HANDLE)1; /* FIXME: cf. kernel_main.c */
|
||||||
|
|
||||||
params->hStdInput = startup->hStdInput;
|
params->hStdInput = startup->hStdInput;
|
||||||
params->hStdOutput = startup->hStdOutput;
|
params->hStdOutput = startup->hStdOutput;
|
||||||
|
|
Loading…
Reference in New Issue