diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2010-12-19 02:11:35 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2010-12-19 02:11:35 +0000 |
commit | 6b1fcc67c221a021d073394566f4edd58103d661 (patch) | |
tree | f76c8e056d4677dd32a59ddf21878e2b56016e59 /apps/plugins | |
parent | b985b4c54bba1482e9517a0a384766f587d59a47 (diff) | |
download | rockbox-6b1fcc67c221a021d073394566f4edd58103d661.tar.gz rockbox-6b1fcc67c221a021d073394566f4edd58103d661.zip |
MPEGPlayer: Fix leakage of file decriptors if file wasn't accepted by playback engine-- code is now getting tested that couldn't be before. Also reset parser in stream init when it doesn't like the file.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28853 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/mpegplayer/mpeg_parser.c | 2 | ||||
-rw-r--r-- | apps/plugins/mpegplayer/stream_mgr.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_parser.c b/apps/plugins/mpegplayer/mpeg_parser.c index 5821bd57ab..1be11a467b 100644 --- a/apps/plugins/mpegplayer/mpeg_parser.c +++ b/apps/plugins/mpegplayer/mpeg_parser.c | |||
@@ -1144,6 +1144,7 @@ int parser_init_stream(void) | |||
1144 | if (!init_video_info()) | 1144 | if (!init_video_info()) |
1145 | { | 1145 | { |
1146 | /* Cannot determine video size, etc. */ | 1146 | /* Cannot determine video size, etc. */ |
1147 | parser_init_state(); | ||
1147 | return STREAM_UNSUPPORTED; | 1148 | return STREAM_UNSUPPORTED; |
1148 | } | 1149 | } |
1149 | 1150 | ||
@@ -1157,6 +1158,7 @@ int parser_init_stream(void) | |||
1157 | if (video_str.start_pts == INVALID_TIMESTAMP) | 1158 | if (video_str.start_pts == INVALID_TIMESTAMP) |
1158 | { | 1159 | { |
1159 | /* Must have video at least */ | 1160 | /* Must have video at least */ |
1161 | parser_init_state(); | ||
1160 | return STREAM_UNSUPPORTED; | 1162 | return STREAM_UNSUPPORTED; |
1161 | } | 1163 | } |
1162 | 1164 | ||
diff --git a/apps/plugins/mpegplayer/stream_mgr.c b/apps/plugins/mpegplayer/stream_mgr.c index 2eed3d355d..b88c6d70c7 100644 --- a/apps/plugins/mpegplayer/stream_mgr.c +++ b/apps/plugins/mpegplayer/stream_mgr.c | |||
@@ -592,7 +592,7 @@ static int stream_on_close(void) | |||
592 | 592 | ||
593 | stream_mgr_lock(); | 593 | stream_mgr_lock(); |
594 | 594 | ||
595 | /* Any open file? */ | 595 | /* Any open file that was accepted for playback? */ |
596 | if (stream_mgr.filename != NULL) | 596 | if (stream_mgr.filename != NULL) |
597 | { | 597 | { |
598 | /* Yes - hide video */ | 598 | /* Yes - hide video */ |
@@ -602,12 +602,13 @@ static int stream_on_close(void) | |||
602 | stream_on_stop(false); | 602 | stream_on_stop(false); |
603 | /* Tell parser file is finished */ | 603 | /* Tell parser file is finished */ |
604 | parser_close_stream(); | 604 | parser_close_stream(); |
605 | /* Close file */ | ||
606 | disk_buf_close(); | ||
607 | /* Reinitialize manager */ | 605 | /* Reinitialize manager */ |
608 | stream_mgr_init_state(); | 606 | stream_mgr_init_state(); |
609 | } | 607 | } |
610 | 608 | ||
609 | /* Let disk buffer reset itself - file might be open even if no good */ | ||
610 | disk_buf_close(); | ||
611 | |||
611 | stream_mgr_unlock(); | 612 | stream_mgr_unlock(); |
612 | 613 | ||
613 | return status; | 614 | return status; |