summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--osdep/io.c22
-rw-r--r--osdep/io.h1
-rw-r--r--player/main.c1
-rw-r--r--waftools/detections/compiler.py2
4 files changed, 25 insertions, 1 deletions
diff --git a/osdep/io.c b/osdep/io.c
index 2e2603eb7f..b348890533 100644
--- a/osdep/io.c
+++ b/osdep/io.c
@@ -327,4 +327,26 @@ char *mp_getenv(const char *name)
return NULL;
}
+void mp_attach_console(void)
+{
+ if (AttachConsole(ATTACH_PARENT_PROCESS)) {
+ // We have been started by something with a console window.
+ // Redirect output streams to that console's low-level handles,
+ // so we can actually use WriteConsole later on.
+
+ int hConHandle;
+ intptr_t hStdio;
+
+ hStdio = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE);
+ hConHandle = _open_osfhandle(hStdio, _O_TEXT);
+ *stdout = *_fdopen(hConHandle, "w");
+ setvbuf(stdout, NULL, _IONBF, 0);
+
+ hStdio = (intptr_t)GetStdHandle(STD_ERROR_HANDLE);
+ hConHandle = _open_osfhandle(hStdio, _O_TEXT);
+ *stderr = *_fdopen(hConHandle, "w");
+ setvbuf(stderr, NULL, _IONBF, 0);
+ }
+}
+
#endif // __MINGW32__
diff --git a/osdep/io.h b/osdep/io.h
index 9f715d904e..7c20d262b0 100644
--- a/osdep/io.h
+++ b/osdep/io.h
@@ -77,6 +77,7 @@ struct dirent *mp_readdir(DIR *dir);
int mp_closedir(DIR *dir);
int mp_mkdir(const char *path, int mode);
char *mp_getenv(const char *name);
+void mp_attach_console(void);
// NOTE: stat is not overridden with mp_stat, because MinGW-w64 defines it as
// macro.
diff --git a/player/main.c b/player/main.c
index 40715d382e..afb3db46ea 100644
--- a/player/main.c
+++ b/player/main.c
@@ -249,6 +249,7 @@ static void osdep_preinit(int *p_argc, char ***p_argv)
talloc_enable_leak_report();
#ifdef __MINGW32__
+ mp_attach_console();
mp_get_converted_argv(p_argc, p_argv);
#endif
diff --git a/waftools/detections/compiler.py b/waftools/detections/compiler.py
index ab658b8ce3..a3ad2835d2 100644
--- a/waftools/detections/compiler.py
+++ b/waftools/detections/compiler.py
@@ -36,7 +36,7 @@ def __add_mingw_flags__(ctx):
ctx.env.CFLAGS += ['-DBYTE_ORDER=1234']
ctx.env.CFLAGS += ['-DLITLE_ENDIAN=1234']
ctx.env.CFLAGS += ['-DBIG_ENDIAN=4321']
- ctx.env.LAST_LINKFLAGS += ['-mconsole']
+ ctx.env.LAST_LINKFLAGS += ['-mwindows']
def __add_cygwin_flags__(ctx):
ctx.env.CFLAGS += ['-mwin32']