> The best solution actually is to store > the signal connection inside CacheItem actually. So neither your patch > nor mine is correct.
I have told you that the attached patch does not work (and ~Impl() is not called). Am I missing something? Bo
Index: src/graphics/GraphicsCacheItem.cpp =================================================================== --- src/graphics/GraphicsCacheItem.cpp (revision 19591) +++ src/graphics/GraphicsCacheItem.cpp (working copy) @@ -51,6 +51,12 @@ /// Impl(FileName const & file); + ~Impl() + { + if (sc_.connected()) + sc_.disconnect(); + } + /** Start the image conversion process, checking first that it is * necessary. If it is necessary, then a conversion task is started. * CacheItem asumes that the conversion is asynchronous and so @@ -131,6 +137,9 @@ /// The connection of the signal ConvProcess::finishedConversion, boost::signals::connection cc_; + + /// The connection of the signal StatusChanged + boost::signals::connection sc_; /// boost::scoped_ptr<Converter> converter_; @@ -191,7 +200,7 @@ boost::signals::connection CacheItem::connect(slot_type const & slot) const { - return pimpl_->statusChanged.connect(slot); + return pimpl_ -> sc_ = pimpl_->statusChanged.connect(slot); }