X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FGraphicsLoader.cpp;h=4ec5c9aed92f50a3443a82741f9429bfa0eab199;hb=f887efedf11c198d9b6cc19911fa0a32a93496f3;hp=559c3a7af9c353782933ca07bc5fa7a543c94b38;hpb=61b2bd5e7fd9399128342d9048aa814ae5f086fc;p=lyx.git diff --git a/src/graphics/GraphicsLoader.cpp b/src/graphics/GraphicsLoader.cpp index 559c3a7af9..4ec5c9aed9 100644 --- a/src/graphics/GraphicsLoader.cpp +++ b/src/graphics/GraphicsLoader.cpp @@ -74,6 +74,7 @@ private: //static int s_numimages_ = 5; //static int s_millisecs_ = 500; +// FIXME THREAD static int s_numimages_ = 10; static int s_millisecs_ = 500; @@ -89,18 +90,17 @@ void LoaderQueue::loadNext() LYXERR(Debug::GRAPHICS, "LoaderQueue: " << cache_queue_.size() << " items in the queue"); int counter = s_numimages_; - while (cache_queue_.size() && counter--) { + while (!cache_queue_.empty() && counter--) { Cache::ItemPtr ptr = cache_queue_.front(); cache_set_.erase(ptr); cache_queue_.pop_front(); if (ptr->status() == WaitingToLoad) ptr->startLoading(); } - if (cache_queue_.size()) { + if (!cache_queue_.empty()) startLoader(); - } else { + else stopLoader(); - } } @@ -159,7 +159,7 @@ void LoaderQueue::touch(Cache::ItemPtr const & item) // ///////////////////////////////////////////////////////////////////// -typedef boost::shared_ptr ImagePtr; +typedef shared_ptr ImagePtr; class Loader::Impl : public boost::signals::trackable { public: @@ -273,7 +273,7 @@ void Loader::reset(Params const & params) const void Loader::startLoading() const { - if (pimpl_->status_ != WaitingToLoad || !pimpl_->cached_item_.get()) + if (pimpl_->status_ != WaitingToLoad || !pimpl_->cached_item_) return; pimpl_->startLoading(); } @@ -287,7 +287,7 @@ void Loader::reload() const void Loader::startMonitoring() const { - if (!pimpl_->cached_item_.get()) + if (!pimpl_->cached_item_) return; pimpl_->cached_item_->startMonitoring(); @@ -296,7 +296,7 @@ void Loader::startMonitoring() const bool Loader::monitoring() const { - if (!pimpl_->cached_item_.get()) + if (!pimpl_->cached_item_) return false; return pimpl_->cached_item_->monitoring(); @@ -305,7 +305,7 @@ bool Loader::monitoring() const unsigned long Loader::checksum() const { - if (!pimpl_->cached_item_.get()) + if (!pimpl_->cached_item_) return 0; return pimpl_->cached_item_->checksum(); @@ -315,7 +315,7 @@ unsigned long Loader::checksum() const FileName const & Loader::filename() const { static FileName const empty; - return pimpl_->cached_item_.get() ? + return pimpl_->cached_item_ ? pimpl_->cached_item_->filename() : empty; } @@ -352,7 +352,7 @@ Loader::Impl::~Impl() void Loader::Impl::resetFile(FileName const & file) { - FileName const old_file = cached_item_.get() ? + FileName const old_file = cached_item_ ? cached_item_->filename() : FileName(); if (file == old_file) @@ -368,13 +368,17 @@ void Loader::Impl::resetFile(FileName const & file) // signal needs to be disconnected. sc_.disconnect(); cached_item_.reset(); - Cache::get().remove(old_file); + if (status_ != Converting) { + Cache::get().remove(old_file); + } else { + //TODO remove cache item when it is not busy any more, see #7163 + } } - status_ = cached_item_.get() ? cached_item_->status() : WaitingToLoad; + status_ = cached_item_ ? cached_item_->status() : WaitingToLoad; image_.reset(); - if (cached_item_.get() || file.empty()) + if (cached_item_ || file.empty()) return; Cache & gc = Cache::get(); @@ -398,14 +402,14 @@ void Loader::Impl::resetParams(Params const & params) return; params_ = params; - status_ = cached_item_.get() ? cached_item_->status() : WaitingToLoad; + status_ = cached_item_ ? cached_item_->status() : WaitingToLoad; image_.reset(); } void Loader::Impl::statusChanged() { - status_ = cached_item_.get() ? cached_item_->status() : WaitingToLoad; + status_ = cached_item_ ? cached_item_->status() : WaitingToLoad; createPixmap(); signal_(); } @@ -416,7 +420,7 @@ void Loader::Impl::createPixmap() if (!params_.display || status_ != Loaded) return; - if (!cached_item_.get()) { + if (!cached_item_) { LYXERR(Debug::GRAPHICS, "pixmap not cached yet"); return; }