X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FGraphicsCacheItem.cpp;h=f54ce80ec3f0d790c1169745ace908d09eb1e888;hb=8be0ec0db5731b2089462ac81abb67c108cd7840;hp=0bd3779a4f0042a4ce052215dae962afb62e1531;hpb=50060053e36b3e9dfe03bc33ed3abac1eacc54b0;p=lyx.git diff --git a/src/graphics/GraphicsCacheItem.cpp b/src/graphics/GraphicsCacheItem.cpp index 0bd3779a4f..f54ce80ec3 100644 --- a/src/graphics/GraphicsCacheItem.cpp +++ b/src/graphics/GraphicsCacheItem.cpp @@ -29,7 +29,6 @@ #include "support/lassert.h" #include "support/unique_ptr.h" -#include "support/bind.h" #include "support/TempFile.h" using namespace std; @@ -39,7 +38,7 @@ namespace lyx { namespace graphics { -class CacheItem::Impl : public boost::signals2::trackable { +class CacheItem::Impl { public: /// @@ -50,7 +49,7 @@ public: /** * If no file conversion is needed, then tryDisplayFormat() calls * loadImage() directly. - * \return true if a conversion is necessary and no error occurred. + * \return true if a conversion is necessary and no error occurred. */ bool tryDisplayFormat(FileName & filename, string & from); @@ -97,9 +96,9 @@ public: /// The filename we refer too. FileName const filename_; /// The document filename this graphic item belongs to - FileName const & doc_file_; + FileName const doc_file_; /// - FileMonitorPtr monitor_; + ActiveFileMonitorPtr monitor_; /// Is the file compressed? bool zipped_; @@ -120,10 +119,7 @@ public: ImageStatus status_; /// This signal is emitted when the image loading status changes. - boost::signals2::signal statusChanged; - - /// The connection of the signal ConvProcess::finishedConversion, - boost::signals2::connection cc_; + signals2::signal statusChanged; /// unique_ptr converter_; @@ -179,6 +175,14 @@ bool CacheItem::monitoring() const } +void CacheItem::checkModifiedAsync() const +{ + if (!pimpl_->monitor_) + return; + pimpl_->monitor_->checkModifiedAsync(); +} + + Image const * CacheItem::image() const { return pimpl_->image_.get(); @@ -191,7 +195,7 @@ ImageStatus CacheItem::status() const } -boost::signals2::connection CacheItem::connect(slot_type const & slot) const +signals2::connection CacheItem::connect(slot_type const & slot) const { return pimpl_->statusChanged.connect(slot); } @@ -214,8 +218,9 @@ void CacheItem::Impl::startMonitor() { if (monitor_) return; - monitor_ = FileSystemWatcher::monitor(filename_); - monitor_->connect([=](){ startLoading(); }); + monitor_ = FileSystemWatcher::activeMonitor(filename_); + // Disconnected at the same time as this is destroyed. + monitor_->connect([=](bool /* exists */){ startLoading(); }); } @@ -246,9 +251,6 @@ void CacheItem::Impl::reset() status_ = WaitingToLoad; - if (cc_.connected()) - cc_.disconnect(); - if (converter_) converter_.reset(); } @@ -272,7 +274,6 @@ void CacheItem::Impl::imageConverted(bool success) file_to_load_ = converter_ ? FileName(converter_->convertedFile()) : FileName(); converter_.reset(); - cc_.disconnect(); success = !file_to_load_.empty() && file_to_load_.isReadableFile(); @@ -441,9 +442,13 @@ void CacheItem::Impl::convertToDisplayFormat() // Connect a signal to this->imageConverted and pass this signal to // the graphics converter so that we can load the modified file // on completion of the conversion process. - converter_ = make_unique(doc_file_, filename, to_file_base.absFileName(), + converter_ = make_unique(doc_file_, filename, + to_file_base.absFileName(), from, to_); - converter_->connect(bind(&Impl::imageConverted, this, _1)); + // Connection is closed at the same time as *this is destroyed. + converter_->connect([this](bool success){ + imageConverted(success); + }); converter_->startConversion(); }