view fifo.c @ 9787:c3b63fb0e8db

Added a test for "s->fd == NULL" to the start of "stream_fill_buffer()". ("fd" is NULL if the session is defined by a SDP file, for example.) It turns out that this test is necessary only for Solaris, not Linux, because in Linux, "s->eof" got set after the prior (failing) call to "lseek()" in "stream_seek_long()". In Solaris, however, "lseek(NULL, ...)" returns 0 (go figure!) rather than -1, so "s->eof" doesn't get set in "stream_seek_long()".
author rsf
date Wed, 02 Apr 2003 01:46:47 +0000
parents 44198b2f42db
children 0397b461f0fb
line wrap: on
line source


// 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];
}

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)>0){
             write(keyb_fifo_put,&code,4);
//             printf("*** key event %d sent ***\n",code);
           } else {
//             printf("*** key event dropped (FIFO is full) ***\n");
           }
}