]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsLoader.cpp
GuiTabular.cpp: don't hardcode decimal align combobox item
[lyx.git] / src / graphics / GraphicsLoader.cpp
index 63b1ac4f188521c62ea0e9f020d4b15eb93f8832..36f2839446bbd12f5e0e4cc4b9cf9860f217e438 100644 (file)
@@ -20,7 +20,7 @@
 #include "support/debug.h"
 #include "support/Timeout.h"
 
-#include <boost/bind.hpp>
+#include "support/bind.h"
 
 #include <set>
 #include <queue>
@@ -96,7 +96,7 @@ void LoaderQueue::loadNext()
                if (ptr->status() == WaitingToLoad)
                        ptr->startLoading();
        }
-       if (cache_queue_.size()) {
+       if (!cache_queue_.empty()) {
                startLoader();
        } else {
                stopLoader();
@@ -107,7 +107,7 @@ void LoaderQueue::loadNext()
 LoaderQueue::LoaderQueue() : timer(s_millisecs_, Timeout::ONETIME),
                             running_(false)
 {
-       timer.timeout.connect(boost::bind(&LoaderQueue::loadNext, this));
+       timer.timeout.connect(bind(&LoaderQueue::loadNext, this));
 }
 
 
@@ -159,7 +159,7 @@ void LoaderQueue::touch(Cache::ItemPtr const & item)
 //
 /////////////////////////////////////////////////////////////////////
 
-typedef boost::shared_ptr<Image> ImagePtr;
+typedef shared_ptr<Image> ImagePtr;
 
 class Loader::Impl : public boost::signals::trackable {
 public:
@@ -279,6 +279,12 @@ void Loader::startLoading() const
 }
 
 
+void Loader::reload() const 
+{
+       pimpl_->cached_item_->startLoading();
+}
+
+
 void Loader::startMonitoring() const
 {
        if (!pimpl_->cached_item_.get())
@@ -362,7 +368,11 @@ 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;
@@ -382,7 +392,7 @@ void Loader::Impl::resetFile(FileName const & file)
        if (continue_monitoring && !cached_item_->monitoring())
                cached_item_->startMonitoring();
 
-       sc_ = cached_item_->connect(boost::bind(&Impl::statusChanged, this));
+       sc_ = cached_item_->connect(bind(&Impl::statusChanged, this));
 }
 
 
@@ -407,9 +417,20 @@ void Loader::Impl::statusChanged()
 
 void Loader::Impl::createPixmap()
 {
-       if (!cached_item_.get() || !params_.display || status_ != Loaded)
+       if (!params_.display || status_ != Loaded)
                return;
 
+       if (!cached_item_.get()) {
+               LYXERR(Debug::GRAPHICS, "pixmap not cached yet");
+               return;
+       }
+
+       if (!cached_item_->image()) {
+               // There must have been a problem reading the file.
+               LYXERR(Debug::GRAPHICS, "Graphics file not loaded.");
+               return;
+       }
+
        image_.reset(cached_item_->image()->clone());
 
        bool const success = image_->setPixmap(params_);
@@ -427,8 +448,11 @@ void Loader::Impl::startLoading()
        if (status_ != WaitingToLoad)
                return;
 
-       if (cached_item_->tryDisplayFormat())
+       if (cached_item_->tryDisplayFormat()) {
+               status_ = Loaded;
+               createPixmap();
                return;
+       }
 
        LoaderQueue::get().touch(cached_item_);
 }