changeset 5154:f67115a72b7c

init/uninit libvo/ao/getch2/cache2 order fixed
author arpi
date Sun, 17 Mar 2002 02:28:32 +0000
parents 7091d4c46685
children ff8d788ecfde
files mplayer.c
diffstat 1 files changed, 43 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/mplayer.c	Sun Mar 17 02:13:18 2002 +0000
+++ b/mplayer.c	Sun Mar 17 02:28:32 2002 +0000
@@ -278,6 +278,24 @@
 
 void uninit_player(unsigned int mask){
   mask=inited_flags&mask;
+
+  mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n*** uninit(0x%X)\n",mask);
+
+  if(mask&INITED_STREAM){
+    inited_flags&=~INITED_STREAM;
+    current_module="uninit_stream";
+    if(stream) free_stream(stream);
+    stream=NULL;
+  }
+
+  if(mask&INITED_GETCH2){
+    inited_flags&=~INITED_GETCH2;
+    current_module="uninit_getch2";
+    mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n[[[uninit getch2]]]\n");
+  // restore terminal:
+    getch2_disable();
+  }
+
 #ifdef USE_DVDREAD
   if (mask&INITED_SPUDEC){
     inited_flags&=~INITED_SPUDEC;
@@ -288,20 +306,13 @@
   if(mask&INITED_VO){
     inited_flags&=~INITED_VO;
     current_module="uninit_vo";
-    video_out->uninit();
+    video_out->uninit(); video_out=NULL;
   }
 
   if(mask&INITED_AO){
     inited_flags&=~INITED_AO;
     current_module="uninit_ao";
-    audio_out->uninit();
-  }
-
-  if(mask&INITED_GETCH2){
-    inited_flags&=~INITED_GETCH2;
-    current_module="uninit_getch2";
-  // restore terminal:
-    getch2_disable();
+    audio_out->uninit(); audio_out=NULL;
   }
 
 #ifdef HAVE_NEW_GUI
@@ -312,13 +323,6 @@
   }
 #endif
 
-  if(mask&INITED_STREAM){
-    inited_flags&=~INITED_STREAM;
-    current_module="uninit_stream";
-    if(stream) free_stream(stream);
-    stream=NULL;
-  }
-
 #if defined(HAVE_LIRC) && ! defined(HAVE_NEW_INPUT)
   if(mask&INITED_LIRC){
     inited_flags&=~INITED_LIRC;
@@ -603,11 +607,7 @@
 if(!parse_codec_cfg(get_path("codecs.conf"))){
   if(!parse_codec_cfg(CONFDIR"/codecs.conf")){
     mp_msg(MSGT_CPLAYER,MSGL_HINT,MSGTR_CopyCodecsConf);
-//    printf("Exit.\n");
     exit(0);  // From unknown reason a hangup occurs here :((((((
-//    kill(getpid(),SIGTERM);
-//    usleep(20000);
-//    kill(getpid(),SIGKILL);
   }
 }
 
@@ -748,6 +748,7 @@
 if(!use_stdin && !slave_mode){
   getch2_enable();  // prepare stdin for hotkeys...
   inited_flags|=INITED_GETCH2;
+  mp_msg(MSGT_CPLAYER,MSGL_DBG2,"\n[[[init getch2]]]\n");
 }
 
 #ifdef HAVE_NEW_GUI
@@ -863,11 +864,6 @@
     mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_InvalidVOdriver,video_driver?video_driver:"?");
     exit_player(MSGTR_Exit_error);
   }
-  if((i=video_out->preinit(vo_subdevice))!=0)
-  {
-    mp_msg(MSGT_CPLAYER,MSGL_FATAL,"error on vo preinit = %u\n",i);
-    exit_player(MSGTR_Exit_error);
-  }
 // check audio_out driver name:
     if (audio_driver)
 	if ((i = strcspn(audio_driver, ":")) > 0)
@@ -1170,7 +1166,8 @@
 //================== Init VIDEO (codec & libvo) ==========================
 if(!sh_video)
    goto main;
-current_module="init_video_codec";
+
+current_module="select_video_codec";
 
 // Go through the codec.conf and find the best codec...
 sh_video->codec=NULL;
@@ -1222,7 +1219,16 @@
 mp_msg(MSGT_CPLAYER,MSGL_INFO,"%s video codec: [%s] drv:%d prio:%d (%s)\n",
     video_codec?mp_gettext("Forcing"):mp_gettext("Detected"),sh_video->codec->name,sh_video->codec->driver,sh_video->codec->priority!=-1?sh_video->codec->priority:0,sh_video->codec->info);
 
+current_module="preinit_libvo";
+
+if((i=video_out->preinit(vo_subdevice))!=0){
+    mp_msg(MSGT_CPLAYER,MSGL_FATAL,"error on vo preinit = %u\n",i);
+    goto goto_next_file; // exit_player(MSGTR_Exit_error);
+}
 sh_video->video_out=video_out;
+inited_flags|=INITED_VO;
+
+current_module="init_video_codec";
 
 // init codec:
 //if(!init_video(sh_video,&vtune.pitch[0])){
@@ -1242,28 +1248,6 @@
 
 // ========== Init display (sh_video->disp_w*sh_video->disp_h/out_fmt) ============
 
-current_module="init_libvo";
-
-#if 0
-
-   { const vo_info_t *info = video_out->get_info();
-     mp_msg(MSGT_CPLAYER,MSGL_INFO,"VO: [%s] %dx%d => %dx%d %s %s%s%s%s\n",info->short_name,
-         sh_video->disp_w,sh_video->disp_h,
-         screen_size_x,screen_size_y,
-	 vo_format_name(out_fmt),
-         fullscreen?"fs ":"",
-         vidmode?"vm ":"",
-         softzoom?"zoom ":"",
-         (flip==1)?"flip ":""
-//         fullscreen|(vidmode<<1)|(softzoom<<2)|(flip<<3)
-     );
-    mp_msg(MSGT_CPLAYER,MSGL_V,"VO: Description: %s\n",info->name);
-    mp_msg(MSGT_CPLAYER,MSGL_V,"VO: Author: %s\n", info->author);
-    if(strlen(info->comment) > 0)
-        mp_msg(MSGT_CPLAYER,MSGL_V,"VO: Comment: %s\n", info->comment);
-   }
-#endif
-
 #ifdef HAVE_NEW_GUI
    if ( use_gui )
     {
@@ -1294,8 +1278,8 @@
     }
 #endif
 
-   inited_flags|=INITED_VO;
-   mp_msg(MSGT_CPLAYER,MSGL_V,"INFO: Video OUT driver init OK!\n");
+current_module="init_vo_vaa";
+
    if(video_out->control(VOCTRL_QUERY_VAA, &vo_vaa)==VO_NOTIMPL)
      memset(&vo_vaa,0,sizeof(vo_vaa_t));
    /*
@@ -1318,13 +1302,12 @@
 	    */
 	}
    }
-   init_video_vaa(sh_video->disp_w);
-   fflush(stdout);
 
 //================== MAIN: ==========================
    main:
 if(!sh_video) osd_level = 0;
 
+fflush(stdout);
 
 {
 //int frame_corr_num=0;   //
@@ -1383,14 +1366,14 @@
   if(verbose) mp_msg(MSGT_CPLAYER,MSGL_V,"Freeing %d unused audio chunks\n",d_audio->packs);
   ds_free_packs(d_audio); // free buffered chunks
   d_audio->id=-2;         // do not read audio chunks
-  if(audio_out) uninit_player(INITED_AO); // close device
+  uninit_player(INITED_AO); // close device
 }
 if(!sh_video){
    mp_msg(MSGT_CPLAYER,MSGL_INFO,"Video: no video!!!\n");
    if(verbose) mp_msg(MSGT_CPLAYER,MSGL_V,"Freeing %d unused video chunks\n",d_video->packs);
    ds_free_packs(d_video);
    d_video->id=-2;
-   if(video_out) uninit_player(INITED_VO);
+   uninit_player(INITED_VO);
 }
 
 if(demuxer->file_format!=DEMUXER_TYPE_AVI) pts_from_bps=0; // it must be 0 for mpeg/asf!
@@ -2729,10 +2712,12 @@
   }	
 #endif
 
+uninit_player(INITED_VO|INITED_AO);
+
 if(eof == PT_NEXT_ENTRY || eof == PT_PREV_ENTRY) {
   eof = eof == PT_NEXT_ENTRY ? 1 : -1;
   if(play_tree_iter_step(playtree_iter,eof,0) == PLAY_TREE_ITER_ENTRY) {
-    uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT+INITED_VO));
+    uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT));
     eof = 1;
   } else {
     play_tree_iter_free(playtree_iter);
@@ -2741,19 +2726,17 @@
 } else if (eof == PT_UP_NEXT || eof == PT_UP_PREV) {
   eof = eof == PT_UP_NEXT ? 1 : -1;
   if(play_tree_iter_up_step(playtree_iter,eof,0) == PLAY_TREE_ITER_ENTRY) {
-    uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT+INITED_VO));
+    uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT));
     eof = 1;
   } else {
     play_tree_iter_free(playtree_iter);
     playtree_iter = NULL;
   }
-}else { // NEXT PREV SRC
-     uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT+INITED_VO));
+} else { // NEXT PREV SRC
+     uninit_player(INITED_ALL-(INITED_GUI+INITED_LIRC+INITED_INPUT));
      eof = eof == PT_PREV_SRC ? -1 : 1;
 }
 
-uninit_player(INITED_VO);
-
 if(eof == 0) eof = 1;
 
 while(playtree_iter != NULL) {
@@ -2791,8 +2774,6 @@
     subtitles=NULL;
    }
 
-  video_out=NULL;
-  audio_out=NULL;
   eof = 0;
   goto play_next_file;
 }