]> git.lyx.org Git - features.git/commitdiff
merge LoaderQueue into Loader
authorAndré Pönitz <poenitz@gmx.net>
Sat, 24 Nov 2007 00:02:58 +0000 (00:02 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Sat, 24 Nov 2007 00:02:58 +0000 (00:02 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21755 a592a061-630c-0410-9148-cb99ea01b6c8

src/Makefile.am
src/graphics/GraphicsLoader.cpp
src/graphics/LoaderQueue.cpp [deleted file]
src/graphics/LoaderQueue.h [deleted file]

index 278a4b5af76e74ee101dd0382f8125a0306408ad..31f813738c8a7aa24a536e7fd8ffa7d152d29bf2 100644 (file)
@@ -315,8 +315,6 @@ liblyxgraphics_la_SOURCES = \
        graphics/GraphicsLoader.cpp \
        graphics/GraphicsParams.cpp \
        graphics/GraphicsParams.h \
-       graphics/LoaderQueue.h \
-       graphics/LoaderQueue.cpp \
        graphics/GraphicsTypes.h \
        graphics/GraphicsTypes.cpp \
        graphics/PreviewImage.h \
index a7ac094cd2e69690deafb0c776e15504b89a1ab7..c5a6326d82460683c97e3541119e310cd151da3c 100644 (file)
 #include "GraphicsCacheItem.h"
 #include "GraphicsImage.h"
 #include "GraphicsParams.h"
-#include "LoaderQueue.h"
+#include "GraphicsCache.h"
+#include "debug.h"
+
+#include "support/Timeout.h"
 
 #include <boost/bind.hpp>
 
+#include <set>
+#include <queue>
 
 using std::string;
+using std::endl;
+using std::list;
 
 
 namespace lyx {
+namespace graphics {
 
 using support::FileName;
 
-namespace graphics {
+/////////////////////////////////////////////////////////////////////
+//
+// LoaderQueue
+//
+/////////////////////////////////////////////////////////////////////
+
+class LoaderQueue {
+public:
+       /// Use this to request that the item is loaded.
+       void touch(Cache::ItemPtr const & item);
+       /// Query whether the clock is ticking.
+       bool running() const;
+       ///get the and only instance of the class
+       static LoaderQueue & get();
+private:
+       /// This class is a singleton class... use LoaderQueue::get() instead
+       LoaderQueue();
+       /// The in-progress loading queue (elements are unique here).
+       std::list<Cache::ItemPtr> cache_queue_;
+       /// Used to make the insertion of new elements faster.
+       std::set<Cache::ItemPtr> cache_set_;
+       /// Newly touched elements go here. loadNext moves them to cache_queue_
+       std::queue<Cache::ItemPtr> bucket_;
+       ///
+       Timeout timer;
+       ///
+       bool running_;
+
+       /** This is the 'threaded' method, that does the loading in the
+        *  background.
+        */
+       void loadNext();
+       ///
+       void startLoader();
+       ///
+       void stopLoader();
+};
+
+
+//static int s_numimages_ = 5;
+//static int s_millisecs_ = 500;
+
+static int s_numimages_ = 10;
+static int s_millisecs_ = 500;
+
+LoaderQueue & LoaderQueue::get()
+{
+       static LoaderQueue singleton;
+       return singleton;
+}
+
+
+void LoaderQueue::loadNext()
+{
+       LYXERR(Debug::GRAPHICS, "LoaderQueue: "
+               << cache_queue_.size() << " items in the queue");
+       int counter = s_numimages_;
+       while (cache_queue_.size() && 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()) {
+               startLoader();
+       } else {
+               stopLoader();
+       }
+}
+
+
+LoaderQueue::LoaderQueue() : timer(s_millisecs_, Timeout::ONETIME),
+                            running_(false)
+{
+       timer.timeout.connect(boost::bind(&LoaderQueue::loadNext, this));
+}
+
+
+void LoaderQueue::startLoader()
+{
+       LYXERR(Debug::GRAPHICS, "LoaderQueue: waking up");
+       running_ = true ;
+       timer.setTimeout(s_millisecs_);
+       timer.start();
+}
+
+
+void LoaderQueue::stopLoader()
+{
+       timer.stop();
+       running_ = false ;
+       LYXERR(Debug::GRAPHICS, "LoaderQueue: I'm going to sleep");
+}
+
+
+bool LoaderQueue::running() const
+{
+       return running_ ;
+}
+
+
+void LoaderQueue::touch(Cache::ItemPtr const & item)
+{
+       if (! cache_set_.insert(item).second) {
+               list<Cache::ItemPtr>::iterator
+                       it = cache_queue_.begin();
+               list<Cache::ItemPtr>::iterator
+                       end = cache_queue_.end();
+
+               it = std::find(it, end, item);
+               if (it != end)
+                       cache_queue_.erase(it);
+       }
+       cache_queue_.push_front(item);
+       if (!running_)
+               startLoader();
+}
+
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// GraphicsLoader
+//
+/////////////////////////////////////////////////////////////////////
 
 typedef boost::shared_ptr<Image> ImagePtr;
 
diff --git a/src/graphics/LoaderQueue.cpp b/src/graphics/LoaderQueue.cpp
deleted file mode 100644 (file)
index e896419..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * \file LoaderQueue.cpp
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Alfredo Braunstein
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#include <config.h>
-
-#include "LoaderQueue.h"
-#include "GraphicsCacheItem.h"
-
-#include "debug.h"
-
-#include <boost/bind.hpp>
-
-using std::endl;
-using std::list;
-
-namespace lyx {
-namespace graphics {
-
-//static int s_numimages_ = 5;
-//static int s_millisecs_ = 500;
-
-static int s_numimages_ = 10;
-static int s_millisecs_ = 500;
-
-LoaderQueue & LoaderQueue::get()
-{
-       static LoaderQueue singleton;
-       return singleton;
-}
-
-
-void LoaderQueue::loadNext()
-{
-       LYXERR(Debug::GRAPHICS, "LoaderQueue: "
-               << cache_queue_.size() << " items in the queue");
-       int counter = s_numimages_;
-       while (cache_queue_.size() && 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()) {
-               startLoader();
-       } else {
-               stopLoader();
-       }
-}
-
-
-LoaderQueue::LoaderQueue() : timer(s_millisecs_, Timeout::ONETIME),
-                            running_(false)
-{
-       timer.timeout.connect(boost::bind(&LoaderQueue::loadNext, this));
-}
-
-
-void LoaderQueue::startLoader()
-{
-       LYXERR(Debug::GRAPHICS, "LoaderQueue: waking up");
-       running_ = true ;
-       timer.setTimeout(s_millisecs_);
-       timer.start();
-}
-
-
-void LoaderQueue::stopLoader()
-{
-       timer.stop();
-       running_ = false ;
-       LYXERR(Debug::GRAPHICS, "LoaderQueue: I'm going to sleep");
-}
-
-
-bool LoaderQueue::running() const
-{
-       return running_ ;
-}
-
-
-void LoaderQueue::touch(Cache::ItemPtr const & item)
-{
-       if (! cache_set_.insert(item).second) {
-               list<Cache::ItemPtr>::iterator
-                       it = cache_queue_.begin();
-               list<Cache::ItemPtr>::iterator
-                       end = cache_queue_.end();
-
-               it = std::find(it, end, item);
-               if (it != end)
-                       cache_queue_.erase(it);
-       }
-       cache_queue_.push_front(item);
-       if (!running_)
-               startLoader();
-}
-
-
-} // namespace graphics
-} // namespace lyx
diff --git a/src/graphics/LoaderQueue.h b/src/graphics/LoaderQueue.h
deleted file mode 100644 (file)
index 5a7940c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-// -*- C++ -*-
-/**
- * \file LoaderQueue.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Alfredo Braunstein
- *
- * Full author contact details are available in file CREDITS.
- *
- * This implements a threaded service queue which loads images on background.
- * In order to request an image loading you call touch() with the pointer to
- * the cached image. Then it will try to satisfy the request as soon as
- * posible (that's it: after finishing an eventual loading on progress)
- * touch() returns inmediately, in order not tu disrupt the flow of the main
- * thread.
- * The service thread is the method loadNext(). It's actually not a thread,
- * but implemented with a timer that comes back every x msec.
- */
-
-#ifndef LOADERQUEUE_H
-#define LOADERQUEUE_H
-
-#include "GraphicsCache.h"
-#include "support/Timeout.h"
-
-#include <set>
-#include <queue>
-
-namespace lyx {
-namespace graphics {
-
-class LoaderQueue {
-public:
-       /// Use this to request that the item is loaded.
-       void touch(Cache::ItemPtr const & item);
-       /// Query whether the clock is ticking.
-       bool running() const;
-       ///get the and only instance of the class
-       static LoaderQueue & get();
-private:
-       /// This class is a singleton class... use LoaderQueue::get() instead
-       LoaderQueue();
-       /// The in-progress loading queue (elements are unique here).
-       std::list<Cache::ItemPtr> cache_queue_;
-       /// Used to make the insertion of new elements faster.
-       std::set<Cache::ItemPtr> cache_set_;
-       /// Newly touched elements go here. loadNext moves them to cache_queue_
-       std::queue<Cache::ItemPtr> bucket_;
-       ///
-       Timeout timer;
-       ///
-       bool running_;
-
-       /** This is the 'threaded' method, that does the loading in the
-        *  background.
-        */
-       void loadNext();
-       ///
-       void startLoader();
-       ///
-       void stopLoader();
-};
-
-} // namespace graphics
-} // namespace lyx
-
-#endif // LOADERQUEUE_H