changeset 9831:0397b461f0fb

MINGW32 port and select()less fifocode by Arpi
author faust3
date Fri, 04 Apr 2003 20:02:53 +0000
parents e2134d2f18fb
children 298e261aecd7
files fifo.c mplayer.c
diffstat 2 files changed, 57 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
+
--- 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 <string.h>
 #include <unistd.h>
 
-#include <sys/ioctl.h>
 // #include <sys/mman.h>
 #include <sys/types.h>
+#ifndef __MINGW32__
+#include <sys/ioctl.h>
 #include <sys/wait.h>
+#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 <sys/time.h>
 #include <sys/stat.h>
 
@@ -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) {