summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--osdep/getch2-win.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/osdep/getch2-win.c b/osdep/getch2-win.c
index 45f68e8196..dd6268b06a 100644
--- a/osdep/getch2-win.c
+++ b/osdep/getch2-win.c
@@ -35,11 +35,16 @@
int mp_input_slave_cmd_func(int fd,char* dest,int size){
DWORD retval;
HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
- if(!PeekNamedPipe(in, NULL, size, &retval, NULL, NULL) || !retval){
+ if(PeekNamedPipe(in, NULL, size, &retval, NULL, NULL)){
+ if (size > retval) size = retval;
+ } else {
+ if (WaitForSingleObject(in, 0))
+ size = 0;
+ }
+ if(!size){
return MP_INPUT_NOTHING;
}
- if(retval>size)retval=size;
- ReadFile(in, dest, retval, &retval, NULL);
+ ReadFile(in, dest, size, &retval, NULL);
if(retval)return retval;
return MP_INPUT_NOTHING;
}