|
|
@ -128,11 +128,16 @@ void Replay::queueSegment() { |
|
|
|
// get the current segment window
|
|
|
|
// get the current segment window
|
|
|
|
SegmentMap::iterator begin, cur, end; |
|
|
|
SegmentMap::iterator begin, cur, end; |
|
|
|
begin = cur = end = segments_.lower_bound(current_segment_); |
|
|
|
begin = cur = end = segments_.lower_bound(current_segment_); |
|
|
|
for (int i = 0; i < BACKWARD_SEGS && begin != segments_.begin(); ++i) { |
|
|
|
if (cur != segments_.end() && cur->second == nullptr) { |
|
|
|
--begin; |
|
|
|
// just load one segment on starting replay or seeking
|
|
|
|
} |
|
|
|
end++; |
|
|
|
for (int i = 0; i <= FORWARD_SEGS && end != segments_.end(); ++i) { |
|
|
|
} else { |
|
|
|
++end; |
|
|
|
for (int i = 0; i < BACKWARD_SEGS && begin != segments_.begin(); ++i) { |
|
|
|
|
|
|
|
--begin; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i <= FORWARD_SEGS && end != segments_.end(); ++i) { |
|
|
|
|
|
|
|
++end; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// load & merge segments
|
|
|
|
// load & merge segments
|
|
|
|