changeset 1709:a4e0211455d8

GUI integration, step 1
author arpi
date Mon, 27 Aug 2001 00:55:25 +0000
parents b2e842edc417
children 381ff166925c
files Gui/mplayer/mplayer.c Gui/wm/ws.c cfg-mplayer.h mplayer.c
diffstat 4 files changed, 61 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/mplayer/mplayer.c	Mon Aug 27 00:45:26 2001 +0000
+++ b/Gui/mplayer/mplayer.c	Mon Aug 27 00:55:25 2001 +0000
@@ -108,7 +108,11 @@
 // timerSetHandler( mplTimerHandler );  // various timer hacks
 // timerInit();
 
- wsMainLoop();  // X event handler (calls mplTimerHandler periodically!)
+// wsMainLoop();  // X event handler (calls mplTimerHandler periodically!)
+
+}
+
+void mplDone(){
 
  dbprintf( 1,"[mplayer] exit.\n" );
 
@@ -116,4 +120,6 @@
 // timerDone();
  gtkDone();  // kills the gtkThreadProc() process
  wsXDone();
+
 }
+
--- a/Gui/wm/ws.c	Mon Aug 27 00:45:26 2001 +0000
+++ b/Gui/wm/ws.c	Mon Aug 27 00:55:25 2001 +0000
@@ -631,6 +631,16 @@
 Bool wsDummyEvents( Display * display,XEvent * Event,XPointer arg )
 { return True; }
 
+// mplTimerHandler(0); // handle timer event
+void wsHandleEvents(){
+ // handle pending events
+ while ( XPending(wsDisplay) ){
+   XNextEvent( wsDisplay,&wsEvent );
+//   printf("### X event: %d  [%d]\n",wsEvent.type,delay);
+   wsEvents( wsDisplay,&wsEvent,NULL );
+ }
+}
+
 void wsMainLoop( void )
 {
  int delay=20;
--- a/cfg-mplayer.h	Mon Aug 27 00:45:26 2001 +0000
+++ b/cfg-mplayer.h	Mon Aug 27 00:55:25 2001 +0000
@@ -230,6 +230,8 @@
 	{"aa*",	vo_aa_parseoption,  CONF_TYPE_FUNC_FULL, 0, 0, 0 },
 #endif
 
+	{"gui", &use_gui, CONF_TYPE_FLAG, 0, 0, 1},
+	{"nogui", &use_gui, CONF_TYPE_FLAG, 0, 1, 0},
       
 	{"noidx", &index_mode, CONF_TYPE_FLAG, 0, -1, 0},
 	{"idx", &index_mode, CONF_TYPE_FLAG, 0, -1, 1},
--- a/mplayer.c	Mon Aug 27 00:45:26 2001 +0000
+++ b/mplayer.c	Mon Aug 27 00:55:25 2001 +0000
@@ -200,6 +200,8 @@
 static int auto_quality=0;
 static int output_quality=0;
 
+int use_gui=0;
+
 int osd_level=2;
 char *seek_to_sec=NULL;
 off_t seek_to_byte=0;
@@ -462,22 +464,25 @@
 
   mp_msg(MSGT_CPLAYER,MSGL_INFO,"%s",banner_text);
 
-#ifdef HAVE_NEW_GUI
 //  this one segfaults if running 'mplayer' (without path containing '/')
 //  if ( !strcmp( strrchr( argv[0],'/' ),"/gmplayer" ) ) appInit( argc,argv,envp );
-  if ( strstr( argv[0],"gmplayer" ) ) appInit( argc,argv,envp );
-
-#endif
-
-
-#ifdef HAVE_GUI
-  if ( nogui ) {
-#endif
+  if ( argv[0] )
+    if(!strcmp(argv[0],"gmplayer") ||
+      (strrchr(argv[0],'/') && !strcmp(strrchr(argv[0],'/'),"/gmplayer") ) )
+          use_gui=1;
 
     parse_cfgfiles();
     num_filenames=parse_command_line(conf, argc, argv, envp, &filenames);
     if(num_filenames<0) exit(1); // error parsing cmdline
 
+#ifndef HAVE_NEW_GUI
+    if(use_gui){
+      mp_msg(MSGT_CPLAYER,MSGL_WARN,"MPlayer was compiled WITHOUT GUI support!\n");
+      use_gui=0;
+    }
+#endif
+
+
 #ifndef USE_LIBVO2
     if(video_driver && strcmp(video_driver,"help")==0){
       printf("Available video output drivers:\n");
@@ -501,7 +506,7 @@
       exit(0);
     }
 
-    if(!num_filenames && !vcd_track && !dvd_title){
+    if(!num_filenames && !vcd_track && !dvd_title && !use_gui){
 	// no file/vcd/dvd -> show HELP:
 	printf("%s",help_text);
 	exit(0);
@@ -515,10 +520,6 @@
       printf("num_filenames: %d\n",num_filenames);
     }
 
-#ifdef HAVE_GUI
-   }
-#endif
-
     mp_msg_init(verbose+MSGL_STATUS);
 
 //------ load global data first ------
@@ -556,6 +557,12 @@
   }
 #endif
 
+  // It's time to init the GUI code: (and fork() the GTK process)
+#ifdef HAVE_NEW_GUI
+  if(use_gui){
+       appInit( argc,argv,envp );
+  }
+#endif
 
 #ifdef HAVE_LIRC
  #ifdef HAVE_GUI
@@ -1288,6 +1295,11 @@
 	  }
       }
       video_out->check_events(); // check events AST
+#ifdef HAVE_NEW_GUI
+      if(use_gui){
+        wsHandleEvents();mplTimerHandler(0); // handle GUI timer events
+      }
+#endif
     } else {
       // It's time to sleep...
       current_module="sleep";
@@ -1319,6 +1331,12 @@
 //      if(verbose>1)printf("sleep: %5.3f  a:%6.3f  v:%6.3f  \n",time_frame,sh_audio->timer,sh_video->timer);
 
       aq_sleep_time+=time_frame;
+
+#ifdef HAVE_NEW_GUI
+      if(use_gui){
+        wsHandleEvents();mplTimerHandler(0); // handle GUI timer events
+      }
+#endif
       
       while(time_frame>0.005){
           if(time_frame<=0.020)
@@ -1326,6 +1344,11 @@
              usec_sleep(0); // sleeps 1 clock tick (10ms)!
           else
              usec_sleep(1000000*(time_frame-0.002));
+#ifdef HAVE_NEW_GUI
+          if(use_gui){
+	    wsHandleEvents();mplTimerHandler(0); // handle GUI timer events
+          }
+#endif
           time_frame-=GetRelativeTime();
       }
 
@@ -1493,6 +1516,11 @@
 #ifndef USE_LIBVO2
 	     video_out->check_events();
 #endif
+#ifdef HAVE_NEW_GUI
+             if(use_gui){
+		wsHandleEvents();mplTimerHandler(0); // handle GUI timer events
+             }
+#endif
              if(use_stdin) usec_sleep(1000); // do not eat the CPU
          }
          osd_function=OSD_PLAY;