fix(win): route shell-outs through a windowless helper (no cmd.exe flash)
_popen/_popen-style shell-outs flash a cmd.exe console window on Windows. Add
Platform::runHiddenCapture() — CreateProcess + CREATE_NO_WINDOW capturing stdout on
Windows, popen on POSIX — and route the remaining shell-outs through it:
- GPU-aware idle detection (getGpuUtilization: "where nvidia-smi" / "nvidia-smi --query-gpu")
- xmrig discovery + version (findXmrigBinary "where xmrig.exe"; "<bin> --version", stderr merged)
- wallet-rebuild helper (app_network) — keeps its exit-code check via the new exitCode out-param
None of these are on the launch path (that was the daemon spawn, fixed in a2f84be); each
would flash a console only when it ran (idle-GPU mining, mining tab, wallet recovery).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -179,6 +179,15 @@ public:
|
||||
* @return GPU busy percent, or -1 if unavailable.
|
||||
*/
|
||||
static int getGpuUtilization();
|
||||
|
||||
// Run a command line and capture its stdout WITHOUT ever popping a console window: Windows uses
|
||||
// CreateProcess + CREATE_NO_WINDOW (a plain popen()/_popen() flashes a cmd.exe console), POSIX uses
|
||||
// popen(). Use this instead of _popen for anything run while the GUI is up. `mergeStderr` folds the
|
||||
// child's stderr into the result (like "2>&1"); otherwise stderr is discarded. `exitCode`, if given,
|
||||
// receives the child's exit status (raw pclose() status on POSIX, GetExitCodeProcess on Windows; -1
|
||||
// if the process could not be launched).
|
||||
static std::string runHiddenCapture(const std::string& cmdLine, bool mergeStderr = false,
|
||||
int* exitCode = nullptr);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user