Background desktop is removed#4
Conversation
|
winpty uses a background window station because hiding the window wasn't sufficient. (At least on XP/Vista.) If you only care about Win7 and up, you should replace Details: winpty needs to "freeze" the console during a poll so it can correctly read from it even when output is scrolling. To do that, it needs to enable/disable console selection. To do that, it needs an HWND. On Windows XP, My recollection was that IntelliJ still worked on Windows XP, even though the newer JDK versions complain about a lack of support. I've been assuming that winpty needs to keep working on XP. On Windows 7, To hide the console properly on Win7 and up, use I'm guessing this issue is related to (identical to?) rprichard#58. My plan for rprichard#58 was to disable background desktop creation for Windows 7 and up, then use a special |
|
Regarding rprichard#58, I don't think IntelliJ is hitting a race condition; my guess is that |
|
Ryan, thanks for the detailed explanation. We don't want to brake winpty on Windows XP/Vista, but to avoid that we can just leave corresponding binaries unchanged, fixing the IDEA-143603(which seems to be quite a major problem) only for Windows 7+. Later(probably for Intellij 2016.2) we'd like to switch completely(making this fork deprecated) to the brand new refactored winpty(which already has a bunch of useful improvements) and if it contains rprichard#58 fixed also for Win XP then we could rebuild it (and we'll need to do that anyway as an API will change). |
Makes sense. I think XP has its own binaries already. Does Vista use the same binaries as Windows 7? That can be changed, of course.
At the moment, my version of winpty still doesn't have the ability to scrape a special stderr-only console buffer (i.e. "console mode"). I think that's the major thing that IntelliJ needs that's still missing. winpty has a newer API on the https://github.com/rprichard/winpty/tree/libwinpty-rewrite branch, but that branch is a bit of a mess currently:
My current project is to extract the non-API-changing bits of that branch, clean them up, and then rebase libwinpty-rewrite onto the result. I'm almost done with the extraction-and-cleanup part. I'd have been done sooner, but I had some kind of forearm injury that has limited my typing. :-/ Probably worth mentioning: the new versions of winpty use C++11 and exception handling and require MSVC 2013 or newer. (The API itself is still strictly a C API--no exception is thrown across an API boundary.) AFAICT, this shouldn't be an issue for targeting XP. I'd actually prefer to require MSVC 2015, but I'm not sure what compiler versions winpty users have. |
|
I would push the change only in traff/winpty trunk. We need to keep eye on changes we have made in our binaries. |
Background desktop is removed.
IDEA-143603 Operating systems clipboard is ignored under Windows.