[PATCH 2/2] kernelbase: Add support for CREATE_NO_WINDOW flag.

Eric Pouech eric.pouech at orange.fr
Wed Apr 6 01:34:33 CDT 2022


>
>> this 'next' - aka third - patch,  just creates a window less console 
>> in some cases for an initial process and should fix (or at least 
>> improve) a couple of open bugs
>>
>> (to make it short, in scenario like "wine foo >& log < /dev/null", it 
>> prevents foo and the subprocesses when in cui subsystem to create 
>> visible consoles)
>>
>> (just to share it here)
>>
>
> To recap our private conversation, there are nice things about that 
> solution: it makes such invocation more similar to a more common 
> situation on Windows and I like that aspect. My main concern is that 
> it will make invoking Wine in situations when there is no Unix console 
> available much more expensive, because we'd need to create an extra 
> conhost process that would be useless in majority of cases. I know 
> that we have some users using Wine as part of their Unix scripts, 
> likely ran in the background, for whom it's likely to provide worse 
> performance due to need to create twice as many Wine processes. It may 
> not be a deal breaker, but I think it's a concern that we should consider.
>
>
> One possible solution to that would be, for example, to have something 
> like CONSOLE_HANDLE_SHELL_NO_WINDOW, which would be inherited by 
> CreateProcess(0) and prevent from creating an actual new console. This 
> would achieve most of this patch's goals with lower runtime price.
>
>
> Other possible solution is more specific to Wine tests, which are 
> causing most of those problems. We could just build tests as GUI 
> applications and avoid the problem in the first place. It's not a 
> general solution, through. We could maybe have wineconsole --no-window 
> option that, instead of using AllocConsole, would use 
> CREATE_NO_WINDOW. This would essentially give user an opt-in option to 
> achieve the same outcome as your patch.
>
>
> Anyway, none of above is perfect. I just thrown more ideas to the 
> pool, hoping for your and/or other's opinions.
>
>
> I think that the root of the problem is that there is no single right 
> thing when Wine is invoked by Unix process with no Unix console 
> available (when Unix console is available, the choice to use it is 
> mostly uncontroversial). In some cases, creating a console window is 
> desired, while for others it's not. Currently user is able to force 
> console window creation by running explicitly wineconsole, but the 
> opposite is not possible under assumption that "default" is good for 
> other cases. This is an equivalent of creating the process with 
> DETACHED_PROCESS on Windows.
>

anyway it would be interesting to have a tool (say wineconsole) where we 
could launch a wine binary with a given console setup (=detached, 
=window, =no-window...); optinonaly, it should also take care of 
redirection of unix std handles (and pass them to subchild)... that 
would require another flag (like --std-inherit). this would allow to 
have an answer to any specific need

I'm all against moving wine tests to GUI subsystem... it doesn't solve 
the bottom line issue: windows "regular" behavior is that CUI processes 
are attached to a console...

yet to decide what's the best option

- for Wine's default for initial process not connected to a unix tty

- for testbot

I'll wait for this to be settled before zero:ing ConsoleHandle for GUI 
processes...




More information about the wine-devel mailing list