# HG changeset patch # User faust3 # Date 1049486573 0 # Node ID 0397b461f0fbb8e5c5eefe3468267b7410ce925b # Parent e2134d2f18fb6c8f2ffeb5728e59cf5b43f9050e MINGW32 port and select()less fifocode by Arpi diff -r e2134d2f18fb -r 0397b461f0fb fifo.c --- a/fifo.c Fri Apr 04 19:33:18 2003 +0000 +++ b/fifo.c Fri Apr 04 20:02:53 2003 +0000 @@ -1,3 +1,5 @@ + +#ifndef HAVE_NO_POSIX_SELECT // keyboard: static int keyb_fifo_put=-1; @@ -28,3 +30,30 @@ // 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 + diff -r e2134d2f18fb -r 0397b461f0fb mplayer.c --- a/mplayer.c Fri Apr 04 19:33:18 2003 +0000 +++ b/mplayer.c Fri Apr 04 20:02:53 2003 +0000 @@ -5,10 +5,18 @@ #include #include -#include // #include #include +#ifndef __MINGW32__ +#include #include +#else +#define SIGHUP 1 /* hangup */ +#define SIGQUIT 3 /* quit */ +#define SIGKILL 9 /* kill (cannot be caught or ignored) */ +#define SIGBUS 10 /* bus error */ +#endif + #include #include @@ -465,7 +473,9 @@ if(sig_count==5 || (inited_flags==0 && sig_count>1)) exit(1); if(sig_count>5){ // can't stop :( +#ifndef __MINGW32__ kill(getpid(),SIGKILL); +#endif } mp_msg(MSGT_CPLAYER,MSGL_FATAL,"\n" MSGTR_IntBySignal,x, current_module?current_module:mp_gettext("unknown") @@ -508,7 +518,11 @@ if ((conffile = get_path("")) == NULL) { mp_msg(MSGT_CPLAYER,MSGL_WARN,MSGTR_NoHomeDir); } else { +#ifdef __MINGW32__ + mkdir(conffile); +#else mkdir(conffile, 0777); +#endif free(conffile); if ((conffile = get_path("config")) == NULL) { mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_GetpathProblem); @@ -1005,17 +1019,27 @@ #endif // ========== Init keyboard FIFO (connection to libvo) ============ -make_pipe(&keyb_fifo_get,&keyb_fifo_put); // Init input system current_module = "init_input"; mp_input_init(); +#ifndef HAVE_NO_POSIX_SELECT +make_pipe(&keyb_fifo_get,&keyb_fifo_put); + if(keyb_fifo_get > 0) mp_input_add_key_fd(keyb_fifo_get,1,NULL,NULL); +#else + mp_input_add_key_fd(-1,0,mplayer_get_key,NULL); +#endif if(slave_mode) mp_input_add_cmd_fd(0,1,NULL,NULL); else if(!use_stdin) +#ifndef HAVE_NO_POSIX_SELECT mp_input_add_key_fd(0,1,NULL,NULL); +#else + mp_input_add_key_fd(0,0,NULL,NULL); +#endif + inited_flags|=INITED_INPUT; current_module = NULL; @@ -3238,11 +3262,13 @@ } #endif +#ifdef HAVE_X11 if (stop_xscreensaver && sh_video) { current_module="stop_xscreensaver"; xscreensaver_heartbeat(sh_video->pts); current_module=NULL; } +#endif // DVD sub: if(vo_config_count && vo_spudec) {