Mercurial > mplayer.hg
view fifo.c @ 20658:ed20cbab07a4
Corrigendum 1
change chapter_id from v to s to allow negative chapter_id as required by the spec text
change was unanimously accepted (rich, oded, myself)
this change should not break any existing muxers or demuxers, with the exception of
assumtations about (non)overlapping chapters
author | michael |
---|---|
date | Sat, 04 Nov 2006 22:01:51 +0000 |
parents | 3d3f3cc8494a |
children | 32c3d5e3a682 |
line wrap: on
line source
#if 0 // keyboard: static int keyb_fifo_put=-1; static int keyb_fifo_get=-1; static void set_nonblock_flag(int fd) { int oldflags; oldflags = fcntl(fd, F_GETFL, 0); if (oldflags != -1) { if (fcntl(keyb_fifo_put, F_SETFL, oldflags | O_NONBLOCK) != -1) { return; } } mp_msg(MSGT_INPUT,MSGL_ERR,"Cannot set nonblocking mode for fd %d!\n", fd); } static void make_pipe(int* pr,int* pw){ int temp[2]; if(pipe(temp)!=0) mp_msg(MSGT_FIXME, MSGL_FIXME, MSGTR_CannotMakePipe); *pr=temp[0]; *pw=temp[1]; set_nonblock_flag(temp[1]); } void mplayer_put_key(int code){ if( write(keyb_fifo_put,&code,4) != 4 ){ mp_msg(MSGT_INPUT,MSGL_ERR,"*** key event dropped (FIFO is full) ***\n"); } } #else int key_fifo_size = 10; static int *key_fifo_data = NULL; 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_data == NULL) key_fifo_data = malloc(key_fifo_size * sizeof(int)); 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_data == NULL) return MP_INPUT_NOTHING; 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