From 13aae5d8ff27886656ab7ea3ef1194987954bb3f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 13 Jun 2016 14:38:12 +0100 Subject: Remove caching of old ImageDecoder objects. This breaks things when there is a 3D ImageContent. When you change the video frame type on this content the view does not update because the re-used ImageDecoder recycles the same video without noticing that the frame type has changed. I guess this is sort of `because' the video frame type is used in VideoDecoder::give, which sets up the cache. Unfortunately I can't remember the case which the caching of ImageDecoders was meant to speed up. Maybe this will now become apparent. --- src/lib/decoder_factory.cc | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'src/lib/decoder_factory.cc') diff --git a/src/lib/decoder_factory.cc b/src/lib/decoder_factory.cc index 7f53c9a4b..dc01a043a 100644 --- a/src/lib/decoder_factory.cc +++ b/src/lib/decoder_factory.cc @@ -37,7 +37,7 @@ using boost::shared_ptr; using boost::dynamic_pointer_cast; shared_ptr -decoder_factory (shared_ptr content, list > old_image_decoders, shared_ptr log, bool fast) +decoder_factory (shared_ptr content, shared_ptr log, bool fast) { shared_ptr fc = dynamic_pointer_cast (content); if (fc) { @@ -51,20 +51,7 @@ decoder_factory (shared_ptr content, list ic = dynamic_pointer_cast (content); if (ic) { - shared_ptr decoder; - - /* See if we can re-use an old ImageDecoder */ - BOOST_FOREACH (shared_ptr i, old_image_decoders) { - if (i->content() == ic) { - decoder = i; - } - } - - if (!decoder) { - decoder.reset (new ImageDecoder (ic, log)); - } - - return decoder; + return shared_ptr (new ImageDecoder (ic, log)); } shared_ptr rc = dynamic_pointer_cast (content); -- cgit v1.2.3