From ca127f3a61ebb5ee9b24567daeed98575f067436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=96=B0?= Date: Wed, 24 Jun 2020 10:25:10 +0800 Subject: [PATCH] =?UTF-8?q?internalFragmentRanges=20=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JPVideoPlayer/JPVideoPlayerCacheFile.m | 36 ++++++++++++++------------ 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/JPVideoPlayer/JPVideoPlayerCacheFile.m b/JPVideoPlayer/JPVideoPlayerCacheFile.m index d596511e..ca9745ec 100755 --- a/JPVideoPlayer/JPVideoPlayerCacheFile.m +++ b/JPVideoPlayer/JPVideoPlayerCacheFile.m @@ -127,26 +127,28 @@ - (BOOL)isEOF { - (void)mergeRangesIfNeed { JPMainThreadAssert; - BOOL isMerge = NO; - for (int i = 0; i < self.internalFragmentRanges.count; ++i) { - if ((i + 1) < self.internalFragmentRanges.count) { - NSRange currentRange = [self.internalFragmentRanges[i] rangeValue]; - NSRange nextRange = [self.internalFragmentRanges[i + 1] rangeValue]; - if (JPRangeCanMerge(currentRange, nextRange)) { - [self.internalFragmentRanges removeObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(i, 2)]]; - [self.internalFragmentRanges insertObject:[NSValue valueWithRange:NSUnionRange(currentRange, nextRange)] atIndex:i]; - i -= 1; - isMerge = YES; + @synchronized (self.internalFragmentRanges) { + BOOL isMerge = NO; + for (int i = 0; i < self.internalFragmentRanges.count; ++i) { + if ((i + 1) < self.internalFragmentRanges.count) { + NSRange currentRange = [self.internalFragmentRanges[i] rangeValue]; + NSRange nextRange = [self.internalFragmentRanges[i + 1] rangeValue]; + if (JPRangeCanMerge(currentRange, nextRange)) { + [self.internalFragmentRanges removeObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(i, 2)]]; + [self.internalFragmentRanges insertObject:[NSValue valueWithRange:NSUnionRange(currentRange, nextRange)] atIndex:i]; + i -= 1; + isMerge = YES; + } } } + if(isMerge){ + NSString *string = @""; + for(NSValue *rangeValue in self.internalFragmentRanges){ + NSRange range = [rangeValue rangeValue]; + string = [string stringByAppendingString:[NSString stringWithFormat:@"%@; ", NSStringFromRange(range)]]; + } + /// JPDebugLog(@"合并后已缓存区间: %@", string); } - if(isMerge){ - NSString *string = @""; - for(NSValue *rangeValue in self.internalFragmentRanges){ - NSRange range = [rangeValue rangeValue]; - string = [string stringByAppendingString:[NSString stringWithFormat:@"%@; ", NSStringFromRange(range)]]; - } - /// JPDebugLog(@"合并后已缓存区间: %@", string); } }