diff options
-rw-r--r-- | find_sub.c | 3 | ||||
-rw-r--r-- | mplayer.c | 24 | ||||
-rw-r--r-- | subreader.c | 13 | ||||
-rw-r--r-- | subreader.h | 1 |
4 files changed, 34 insertions, 7 deletions
diff --git a/find_sub.c b/find_sub.c index 1c022efc4c..06e396c6d0 100644 --- a/find_sub.c +++ b/find_sub.c @@ -25,6 +25,9 @@ static int nosub_range_end=-1; 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 { @@ -663,13 +663,17 @@ play_next_file: 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 @@ if(use_gui || ++curr_filename<num_filenames){ 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 --git a/subreader.c b/subreader.c index 05512a5397..857bf094f9 100644 --- a/subreader.c +++ b/subreader.c @@ -802,7 +802,18 @@ void dump_mpsub(subtitle* subs){ 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;i<subs->lines;i++ ) free( subs->text[i] ); + free( subs ); + subs=NULL; +} #ifdef DUMPSUBS int main(int argc, char **argv) { // for testing diff --git a/subreader.h b/subreader.h index f73ed3983f..b3c7fc8c0b 100644 --- a/subreader.h +++ b/subreader.h @@ -37,5 +37,6 @@ typedef struct { 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 |