[Mplayerxp-cvslog] CVS: mplayerxp/mplayerxp mplayer.c,1.192,1.193 dec_ahead.c,1.91,1.92 dec_ahead.h,
Brought to you by:
olov
From: Olov G. <ol...@us...> - 2004-10-28 20:37:35
|
Update of /cvsroot/mplayerxp/mplayerxp/mplayerxp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22146 Modified Files: mplayer.c dec_ahead.c dec_ahead.h Log Message: Fix lock after rescale of window with vo_x11. Index: mplayer.c =================================================================== RCS file: /cvsroot/mplayerxp/mplayerxp/mplayerxp/mplayer.c,v retrieving revision 1.192 retrieving revision 1.193 diff -p -u -d -r1.192 -r1.193 --- mplayer.c 27 Oct 2004 18:56:57 -0000 1.192 +++ mplayer.c 28 Oct 2004 20:37:17 -0000 1.193 @@ -1739,10 +1739,10 @@ void mpxp_reset_vcache(void) { unsigned i; /* reset predecoded video when user changes parameters of screen on the fly */ -MSG_WARN("reset_vcache start\n"); +MSG_V("reset_vcache start\n"); if(enable_xp!=XP_None) { - dec_ahead_halt_threads(); + dec_ahead_halt_threads(1); LOCK_VREADING(); } @@ -1751,17 +1751,16 @@ MSG_WARN("reset_vcache start\n"); dec_ahead_seek_num_frames = sh_video->num_frames; dec_ahead_seek_num_frames_decoded = sh_video->num_frames_decoded; sh_video->chapter_change=-1; -MSG_WARN("reset_vcache middle\n"); +MSG_V("reset_vcache middle\n"); for(i=0;i<xp_threads;i++) if(pinfo[i].thread_name=="main") break; if(enable_xp!=XP_None) { - UNLOCK_VDECODING(); /* Release lock from vo_x11 */ dec_ahead_reset_sh_video(sh_video); UNLOCK_VREADING(); dec_ahead_restart_threads(i); } -MSG_WARN("reset_vcache end\n"); +MSG_V("reset_vcache end\n"); } void mpxp_seek( int xp_id, video_stat_t *vstat, int *osd_visible, float v_pts ) @@ -3274,7 +3273,7 @@ if(rel_seek_secs || abs_seek_pos){ if(enable_xp!=XP_None) { - dec_ahead_halt_threads(); + dec_ahead_halt_threads(0); LOCK_VREADING(); } Index: dec_ahead.c =================================================================== RCS file: /cvsroot/mplayerxp/mplayerxp/mplayerxp/dec_ahead.c,v retrieving revision 1.91 retrieving revision 1.92 diff -p -u -d -r1.91 -r1.92 --- dec_ahead.c 27 Oct 2004 18:56:58 -0000 1.91 +++ dec_ahead.c 28 Oct 2004 20:37:25 -0000 1.92 @@ -355,6 +355,10 @@ while(!xp_eof){ } if(dec_ahead_in_lseek!=NoSeek) continue; LOCK_VDECODING(); + if(dec_ahead_in_lseek!=NoSeek) { + UNLOCK_VDECODING(); + continue; + } #if 0 /* We can't seriously examine question of too slow machines @@ -693,7 +697,7 @@ int run_xp_players(void) /* Halt threads before seek */ -void dec_ahead_halt_threads() +void dec_ahead_halt_threads(int is_reset_vcache) { dec_ahead_in_lseek = PreSeek; @@ -711,6 +715,8 @@ void dec_ahead_halt_threads() UNLOCK_AUDIO_DECODE(); } + if (is_reset_vcache) + UNLOCK_VDECODING(); /* Release lock from vo_x11 */ if(pthread_is_living) { LOCK_VIDEO_DECODE(); pthread_cond_signal(&video_decode_cond); Index: dec_ahead.h =================================================================== RCS file: /cvsroot/mplayerxp/mplayerxp/mplayerxp/dec_ahead.h,v retrieving revision 1.31 retrieving revision 1.32 diff -p -u -d -r1.31 -r1.32 --- dec_ahead.h 27 Oct 2004 18:56:58 -0000 1.31 +++ dec_ahead.h 28 Oct 2004 20:37:25 -0000 1.32 @@ -103,6 +103,6 @@ int xp_thread_decode_audio(); extern void sig_audio_play( void ); extern void sig_audio_decode( void ); extern volatile float dec_ahead_audio_delay; -extern void dec_ahead_halt_threads(); +extern void dec_ahead_halt_threads(int is_reset_vcache); extern void dec_ahead_restart_threads(int xp_id); #endif |