summaryrefslogtreecommitdiff
path: root/src/lib/subtitle_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-05-13 10:23:44 +0100
committerCarl Hetherington <cth@carlh.net>2015-05-13 10:23:44 +0100
commit4447fc2edd80d85c9779187e4f3a0405e6e4d443 (patch)
treed5fa3d1be4b1192c86b44c4ac3fac7cfe62a09d3 /src/lib/subtitle_decoder.cc
parentdadf038492a94311db672af33b74367e84773553 (diff)
Don't allow image subtitle store to get too big.
Diffstat (limited to 'src/lib/subtitle_decoder.cc')
-rw-r--r--src/lib/subtitle_decoder.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/lib/subtitle_decoder.cc b/src/lib/subtitle_decoder.cc
index edb291ab8..2efe9afb6 100644
--- a/src/lib/subtitle_decoder.cc
+++ b/src/lib/subtitle_decoder.cc
@@ -82,7 +82,22 @@ SubtitleDecoder::get (list<T> const & subs, list<ContentTimePeriod> const & sp,
}
}
- /* XXX: should clear out _decoded_* at some point */
+ /* Discard anything in _decoded_image_subtitles that is outside 5 seconds either side of period */
+
+ list<ContentImageSubtitle>::iterator i = _decoded_image_subtitles.begin();
+ while (i != _decoded_image_subtitles.end()) {
+ list<ContentImageSubtitle>::iterator tmp = i;
+ ++tmp;
+
+ if (
+ i->period().to < (period.from - ContentTime::from_seconds (5)) ||
+ i->period().from > (period.to + ContentTime::from_seconds (5))
+ ) {
+ _decoded_image_subtitles.erase (i);
+ }
+
+ i = tmp;
+ }
return out;
}