diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-23 12:13:28 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-01-23 12:13:28 +0000 |
commit | 4e28b4bc9ed8e29daf3570596cc7a4c5325e8039 (patch) | |
tree | 7aa817a12cb9240d39470343c663f4cc61ed581a | |
parent | 0e86058912f8ad3af2d49e0eedf01b585bd5732c (diff) | |
download | mpv-4e28b4bc9ed8e29daf3570596cc7a4c5325e8039.tar.bz2 mpv-4e28b4bc9ed8e29daf3570596cc7a4c5325e8039.tar.xz |
Change code to allow playing a stream even if enabling the cache failed
while still handling it when the user aborts the cache fill.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30402 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | mplayer.c | 6 | ||||
-rw-r--r-- | stream/cache2.c | 7 |
2 files changed, 9 insertions, 4 deletions
@@ -3281,10 +3281,12 @@ if(mpctx->stream->type==STREAMTYPE_DVDNAV){ // CACHE2: initial prefill: 20% later: 5% (should be set by -cacheopts) goto_enable_cache: if(stream_cache_size>0){ + int res; current_module="enable_cache"; - if(!stream_enable_cache(mpctx->stream,stream_cache_size*1024, + res = stream_enable_cache(mpctx->stream,stream_cache_size*1024, stream_cache_size*1024*(stream_cache_min_percent / 100.0), - stream_cache_size*1024*(stream_cache_seek_min_percent / 100.0))) + stream_cache_size*1024*(stream_cache_seek_min_percent / 100.0)); + if(res == 0) if((mpctx->eof = libmpdemux_was_interrupted(PT_NEXT_ENTRY))) goto goto_next_file; } diff --git a/stream/cache2.c b/stream/cache2.c index 72a906b9a5..64f685e82c 100644 --- a/stream/cache2.c +++ b/stream/cache2.c @@ -313,6 +313,9 @@ static void exit_sighandler(int x){ exit(0); } +/** + * \return 1 on success, 0 if the function was interrupted and -1 on error + */ int stream_enable_cache(stream_t *stream,int size,int min,int seek_limit){ int ss = stream->sector_size ? stream->sector_size : STREAM_BUFFER_SIZE; cache_vars_t* s; @@ -323,7 +326,7 @@ int stream_enable_cache(stream_t *stream,int size,int min,int seek_limit){ } s=cache_init(size,ss); - if(s == NULL) return 0; + if(s == NULL) return -1; stream->cache_data=s; s->stream=stream; // callback s->seek_limit=seek_limit; @@ -362,7 +365,7 @@ int stream_enable_cache(stream_t *stream,int size,int min,int seek_limit){ if (!stream->cache_pid) { mp_msg(MSGT_CACHE, MSGL_ERR, "Starting cache process/thread failed: %s.\n", strerror(errno)); - return 0; + return -1; } // wait until cache is filled at least prefill_init % mp_msg(MSGT_CACHE,MSGL_V,"CACHE_PRE_INIT: %"PRId64" [%"PRId64"] %"PRId64" pre:%d eof:%d \n", |