# HG changeset patch # User pontscho # Date 1008547640 0 # Node ID 5a11cbf8791ffb352ff8279649cf9a0264008dd2 # Parent 465329581ad8487ba5a4882b1e334eae5fe6ca0e some small sub bug fix diff -r 465329581ad8 -r 5a11cbf8791f find_sub.c --- a/find_sub.c Mon Dec 17 00:03:50 2001 +0000 +++ b/find_sub.c Mon Dec 17 00:07:20 2001 +0000 @@ -25,6 +25,9 @@ void find_sub(subtitle* subtitles,int key){ int i,j; + + if ( !subtitles ) return; + if(vo_sub){ if(key>=vo_sub->start && key<=vo_sub->end) return; // OK! } else { diff -r 465329581ad8 -r 5a11cbf8791f mplayer.c --- a/mplayer.c Mon Dec 17 00:03:50 2001 +0000 +++ b/mplayer.c Mon Dec 17 00:07:20 2001 +0000 @@ -663,13 +663,17 @@ usleep(20000); EventHandling(); } - if(mplShMem->FilenameChanged){ - filename=mplShMem->Filename; - } + #ifdef USE_SUB - sub_name=NULL; - if ( mplShMem->SubtitleChanged ) sub_name=mplShMem->Subtitlename; + if ( mplShMem->SubtitleChanged || !mplShMem->FilenameChanged ) + { sub_name=mplShMem->Subtitlename; mplShMem->SubtitleChanged=0; } #endif + + if ( mplShMem->FilenameChanged || !filename ) + { + filename=mplShMem->Filename; + mplShMem->FilenameChanged=0; + } } #endif @@ -2178,7 +2182,15 @@ current_module="free_stream"; if(stream) free_stream(stream); - + + current_module="sub_free"; + if ( subtitles ) + { + sub_free( subtitles ); + sub_name=NULL; + vo_sub=NULL; + } + video_out=NULL; audio_out=NULL; diff -r 465329581ad8 -r 5a11cbf8791f subreader.c --- a/subreader.c Mon Dec 17 00:03:50 2001 +0000 +++ b/subreader.c Mon Dec 17 00:07:20 2001 +0000 @@ -802,7 +802,18 @@ printf ("Subtitles dumped in \'dump.mpsub\'.\n"); } - +void sub_free( subtitle * subs ) +{ + int i; + + if ( !subs ) return; + + sub_num=0; + sub_errs=0; + for ( i=0;ilines;i++ ) free( subs->text[i] ); + free( subs ); + subs=NULL; +} #ifdef DUMPSUBS int main(int argc, char **argv) { // for testing diff -r 465329581ad8 -r 5a11cbf8791f subreader.h --- a/subreader.h Mon Dec 17 00:03:50 2001 +0000 +++ b/subreader.h Mon Dec 17 00:07:20 2001 +0000 @@ -37,5 +37,6 @@ subtitle* sub_read_file (char *filename); char * sub_filename(char *path, char * fname ); void list_sub_file(subtitle* subs); +void sub_free( subtitle * subs ); #endif