summaryrefslogtreecommitdiffstats
path: root/fifo.c
diff options
context:
space:
mode:
authorfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-04-04 20:02:53 +0000
committerfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-04-04 20:02:53 +0000
commit21c079928068bd00ec8e55eeb268e36c9db8bc09 (patch)
tree93a8263f18f0054174a6fa1a5211d78173735f55 /fifo.c
parent3a6df1e21e164925f13ba6fdfc26e3add607a882 (diff)
downloadmpv-21c079928068bd00ec8e55eeb268e36c9db8bc09.tar.bz2
mpv-21c079928068bd00ec8e55eeb268e36c9db8bc09.tar.xz
MINGW32 port and select()less fifocode by Arpi
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9832 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'fifo.c')
-rw-r--r--fifo.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/fifo.c b/fifo.c
index c37a1d2783..ba803eb0e9 100644
--- a/fifo.c
+++ b/fifo.c
@@ -1,4 +1,6 @@
+#ifndef HAVE_NO_POSIX_SELECT
+
// keyboard:
static int keyb_fifo_put=-1;
static int keyb_fifo_get=-1;
@@ -28,3 +30,30 @@ void mplayer_put_key(int code){
// printf("*** key event dropped (FIFO is full) ***\n");
}
}
+
+#else
+
+#define KEY_FIFO_SIZE 1024
+static int key_fifo_data[KEY_FIFO_SIZE];
+static int key_fifo_read=0;
+static int key_fifo_write=0;
+
+void mplayer_put_key(int code){
+// printf("mplayer_put_key(%d)\n",code);
+ if(((key_fifo_write+1)%KEY_FIFO_SIZE)==key_fifo_read) return; // FIFO FULL!!
+ key_fifo_data[key_fifo_write]=code;
+ key_fifo_write=(key_fifo_write+1)%KEY_FIFO_SIZE;
+}
+
+int mplayer_get_key(int fd){
+ int key;
+// printf("mplayer_get_key(%d)\n",fd);
+ if(key_fifo_write==key_fifo_read) return MP_INPUT_NOTHING;
+ key=key_fifo_data[key_fifo_read];
+ key_fifo_read=(key_fifo_read+1)%KEY_FIFO_SIZE;
+// printf("mplayer_get_key => %d\n",key);
+ return key;
+}
+
+#endif
+