diff options
| author | Dentomologist <dentomologist@gmail.com> | 2026-07-12 23:47:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-12 23:47:20 -0700 |
| commit | cdaf67c6ce4b5a23c3dd759a439d2bf434396791 (patch) | |
| tree | a0b58a15392f3dff27f90d73c97cc32c3181c040 /Source/Core/DolphinQt | |
| parent | d6d25b5302073dd4292a2286c753c4b344aec2da (diff) | |
| parent | 1a62cdca0e587a31eeae5494d22223976f7dbead (diff) | |
Merge pull request #14643 from Dentomologist/windows_git_bash_fix_command_line_output
Windows: Fix command line output not displaying when using Git Bash
Diffstat (limited to 'Source/Core/DolphinQt')
| -rw-r--r-- | Source/Core/DolphinQt/Main.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/Source/Core/DolphinQt/Main.cpp b/Source/Core/DolphinQt/Main.cpp index 6ebff53462..7f8f9b9d04 100644 --- a/Source/Core/DolphinQt/Main.cpp +++ b/Source/Core/DolphinQt/Main.cpp @@ -120,12 +120,27 @@ static bool QtMsgAlertHandler(const char* caption, const char* text, bool yes_no int main(int argc, char* argv[]) { #ifdef _WIN32 - const bool console_attached = AttachConsole(ATTACH_PARENT_PROCESS) != FALSE; - HANDLE stdout_handle = ::GetStdHandle(STD_OUTPUT_HANDLE); - if (console_attached && stdout_handle) + const HANDLE stdout_handle = ::GetStdHandle(STD_OUTPUT_HANDLE); + const HANDLE stderr_handle = ::GetStdHandle(STD_ERROR_HANDLE); + + const bool is_invalid_stdout_handle = + stdout_handle == nullptr || stdout_handle == INVALID_HANDLE_VALUE; + const bool is_invalid_stderr_handle = + stderr_handle == nullptr || stderr_handle == INVALID_HANDLE_VALUE; + + // If we already have a console don't try to use one from our parent. This happens when running + // Dolphin using `Git Bash`. + if (is_invalid_stdout_handle && is_invalid_stderr_handle) { - freopen("CONOUT$", "w", stdout); - freopen("CONOUT$", "w", stderr); + // See if the parent process has a console we can use (which happens when Dolphin is launched + // via `Command Prompt` or `PowerShell`). If this fails Dolphin was probably launched via the + // GUI, in which case we don't want a console anyway. + const bool attached_to_parent_console = AttachConsole(ATTACH_PARENT_PROCESS) != FALSE; + if (attached_to_parent_console) + { + static_cast<void>(freopen("CONOUT$", "w", stdout)); + static_cast<void>(freopen("CONOUT$", "w", stderr)); + } } #endif |
