diff options
author | methodus <methodus@web.de> | 2012-10-27 06:43:02 +0200 |
---|---|---|
committer | methodus <methodus@web.de> | 2012-10-27 06:43:02 +0200 |
commit | 1b5a8fd308b133924f59210509e2bc822f57c2e0 (patch) | |
tree | 5ea28162a5e2eca4945cd6588d3eff18aa80e26b /plugins/provider/recProvider | |
parent | f998c951d2a67fd6cdff53c0bd3eef90560331e4 (diff) | |
download | vdr-plugin-upnp-1b5a8fd308b133924f59210509e2bc822f57c2e0.tar.gz vdr-plugin-upnp-1b5a8fd308b133924f59210509e2bc822f57c2e0.tar.bz2 |
Fixed seeking in recordings with more than one file.
Diffstat (limited to 'plugins/provider/recProvider')
-rw-r--r-- | plugins/provider/recProvider/recProvider.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp index 4e331bf..22fc5eb 100644 --- a/plugins/provider/recProvider/recProvider.cpp +++ b/plugins/provider/recProvider/recProvider.cpp @@ -238,20 +238,17 @@ public: return false; } - if(!OpenFile(1)) return false; - size_t size = 0; - while(true){ - fseek(fileFD, 0, SEEK_END); - size = ftell(fileFD); - if(offset < size){ - return fseek(fileFD, offset, SEEK_SET) == 0; - } else { - offset -= size; - if(OpenNext()) return false; - } + unsigned int i = 0; + for(; i < offsets.size(); ++i){ + if(offset < offsets[i]) + break; + else + offset -= offsets[i]; } + if(i >= offsets.size()) return false; + if(!OpenFile(i+1)) return false; - return false; + return fseek(fileFD, offset, SEEK_SET) == 0; } |