diff options
author | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-03-16 00:06:50 +0000 |
---|---|---|
committer | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-03-16 00:06:50 +0000 |
commit | 2ea08493f50c3f0731802c24507b8644bde0c5d2 (patch) | |
tree | d5171449cecbc296594bcaa360fc80ebee37c72d /fifo.c | |
parent | e089d0cc74b83b6e99ae02a3080f2f879edc062f (diff) | |
download | mpv-2ea08493f50c3f0731802c24507b8644bde0c5d2.tar.bz2 mpv-2ea08493f50c3f0731802c24507b8644bde0c5d2.tar.xz |
common FIFO code moved to fifo.c
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@114 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'fifo.c')
-rw-r--r-- | fifo.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/fifo.c b/fifo.c new file mode 100644 index 0000000000..0c2b35048d --- /dev/null +++ b/fifo.c @@ -0,0 +1,80 @@ + +// keyboard: +static int keyb_fifo_put=-1; +static int keyb_fifo_get=-1; + +static void make_pipe(int* pr,int* pw){ + int temp[2]; + if(pipe(temp)!=0) printf("Cannot make PIPE!\n"); + *pr=temp[0]; + *pw=temp[1]; +} + +static inline int my_write(int fd,unsigned char* mem,int len){ + int total=0; + int len2; + while(len>0){ + len2=write(fd,mem+total,len); if(len2<=0) break; + total+=len2;len-=len2; +// printf("%d bytes received, %d left\n",len2,len); + } + return total; +} + +static inline int my_read(int fd,unsigned char* mem,int len){ + int total=0; + int len2; + while(len>0){ + len2=read(fd,mem+total,len); if(len2<=0) break; + total+=len2;len-=len2; +// printf("%d bytes received, %d left\n",len2,len); + } + return total; +} + + +void send_cmd(int fd,int cmd){ + int fifo_cmd=cmd; + write(fd,&fifo_cmd,4); +// fflush(control_fifo); +} + + +void mplayer_put_key(int code){ + fd_set rfds; + struct timeval tv; + + /* Watch stdin (fd 0) to see when it has input. */ + FD_ZERO(&rfds); + FD_SET(keyb_fifo_put, &rfds); + tv.tv_sec = 0; + tv.tv_usec = 0; + + //retval = select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv); + if(select(keyb_fifo_put+1, NULL, &rfds, NULL, &tv)){ + write(keyb_fifo_put,&code,4); +// printf("*** key event %d sent ***\n",code); + } else { +// printf("*** key event dropped (FIFO is full) ***\n"); + } +} + +int mplayer_get_key(){ + fd_set rfds; + struct timeval tv; + int code=-1; + + /* Watch stdin (fd 0) to see when it has input. */ + FD_ZERO(&rfds); + FD_SET(keyb_fifo_get, &rfds); + tv.tv_sec = 0; + tv.tv_usec = 0; + + //retval = select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv); + if(select(keyb_fifo_put+1, &rfds, NULL, NULL, &tv)){ + read(keyb_fifo_get,&code,4); +// printf("*** key event %d read ***\n",code); + } + return code; +} + |