]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsLoader.C
Store an InsetBase & in MailInset.
[lyx.git] / src / graphics / GraphicsLoader.C
index b7c1d953a4acc02270c7026d51489e87e8dc281a..5da53f9b84f787e3dd576c2c1ebc0cb5c89a67a2 100644 (file)
 
 #include "GraphicsLoader.h"
 
-#include "BufferView.h"
-
 #include "GraphicsCache.h"
 #include "GraphicsCacheItem.h"
 #include "GraphicsImage.h"
 #include "GraphicsParams.h"
-#include "GraphicsSupport.h"
+#include "LoaderQueue.h"
 
 #include "frontends/LyXView.h"
-#include "frontends/Timeout.h"
 
-#include <boost/weak_ptr.hpp>
 #include <boost/bind.hpp>
 #include <boost/signals/trackable.hpp>
 
@@ -44,7 +40,7 @@ struct Loader::Impl : boost::signals::trackable {
        void createPixmap();
 
        ///
-       void startLoading(Inset const &, BufferView const &);
+       void startLoading();
 
        /// The loading status of the image.
        ImageStatus status_;
@@ -66,14 +62,6 @@ private:
        ///
        Params params_;
 
-       ///
-       Timeout timer;
-       // Multiple Insets can share the same image
-       typedef std::list<Inset const *> InsetList;
-       ///
-       InsetList insets;
-       ///
-       boost::weak_ptr<BufferView const> view;
 };
 
 
@@ -130,15 +118,7 @@ void Loader::startLoading() const
 {
        if (pimpl_->status_ != WaitingToLoad || !pimpl_->cached_item_.get())
                return;
-       pimpl_->cached_item_->startLoading();
-}
-
-
-void Loader::startLoading(Inset const & inset, BufferView const & bv) const
-{
-       if (pimpl_->status_ != WaitingToLoad || !pimpl_->cached_item_.get())
-               return;
-       pimpl_->startLoading(inset, bv);
+       pimpl_->startLoading();
 }
 
 
@@ -196,10 +176,8 @@ Image const * Loader::image() const
 
 
 Loader::Impl::Impl(Params const & params)
-       : status_(WaitingToLoad), params_(params),
-         timer(2000, Timeout::ONETIME)
+       : status_(WaitingToLoad), params_(params)
 {
-       timer.timeout.connect(boost::bind(&Impl::checkedLoading, this));
 }
 
 
@@ -291,58 +269,12 @@ void Loader::Impl::createPixmap()
 }
 
 
-void Loader::Impl::startLoading(Inset const & inset, BufferView const & bv)
-{
-       if (status_ != WaitingToLoad || timer.running())
-               return;
-
-       InsetList::const_iterator it  = insets.begin();
-       InsetList::const_iterator end = insets.end();
-       it = std::find(it, end, &inset);
-       if (it == end)
-               insets.push_back(&inset);
-       view = bv.owner()->view();
-
-       timer.start();
-}
-
-
-namespace {
-
-struct FindVisibleInset {
-
-       FindVisibleInset(std::list<VisibleParagraph> const & vps) : vps_(vps) {}
-
-       bool operator()(Inset const * inset_ptr)
-       {
-               if (!inset_ptr)
-                       return false;
-               return isInsetVisible(*inset_ptr, vps_);
-       }
-
-private:
-       std::list<VisibleParagraph> const & vps_;
-};
-
-} // namespace anon
-
-
-void Loader::Impl::checkedLoading()
+void Loader::Impl::startLoading()
 {
-       if (insets.empty() || !view.get())
+       if (status_ != WaitingToLoad)
                return;
 
-       std::list<VisibleParagraph> const vps =
-               getVisibleParagraphs(*view.get());
-
-       InsetList::const_iterator it  = insets.begin();
-       InsetList::const_iterator end = insets.end();
-
-       it = std::find_if(it, end, FindVisibleInset(vps));
-
-       // One of the insets is visible, so start loading the image.
-       if (it != end)
-               cached_item_->startLoading();
+       LoaderQueue::get().touch(cached_item_);
 }