Mercurial > hg > orthanc-stone
diff Applications/BasicApplicationContext.h @ 53:c2dc924f1a63 wasm
removing threading out of the framework
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 27 Apr 2017 16:57:49 +0200 |
parents | b340879da9bd |
children | d20e25cfcf3a |
line wrap: on
line diff
--- a/Applications/BasicApplicationContext.h Thu Apr 27 14:50:40 2017 +0200 +++ b/Applications/BasicApplicationContext.h Thu Apr 27 16:57:49 2017 +0200 @@ -27,6 +27,7 @@ #include "../../Framework/Toolbox/DicomStructureSet.h" #include <list> +#include <boost/thread.hpp> namespace OrthancStone { @@ -37,25 +38,46 @@ typedef std::list<IWorldSceneInteractor*> Interactors; typedef std::list<DicomStructureSet*> StructureSets; + static void UpdateThread(BasicApplicationContext* that); + OrthancPlugins::IOrthancConnection& orthanc_; + boost::mutex viewportMutex_; WidgetViewport viewport_; Volumes volumes_; Interactors interactors_; StructureSets structureSets_; + boost::thread updateThread_; + bool stopped_; + unsigned int updateDelay_; public: + class ViewportLocker : public boost::noncopyable + { + private: + boost::mutex::scoped_lock lock_; + IViewport& viewport_; + + public: + ViewportLocker(BasicApplicationContext& that) : + lock_(that.viewportMutex_), + viewport_(that.viewport_) + { + } + + IViewport& GetViewport() const + { + return viewport_; + } + }; + + BasicApplicationContext(OrthancPlugins::IOrthancConnection& orthanc); ~BasicApplicationContext(); IWidget& SetCentralWidget(IWidget* widget); // Takes ownership - IViewport& GetViewport() - { - return viewport_; - } - OrthancPlugins::IOrthancConnection& GetOrthancConnection() { return orthanc_; @@ -72,5 +94,10 @@ void Start(); void Stop(); + + void SetUpdateDelay(unsigned int delay) // In milliseconds + { + updateDelay_ = delay; + } }; }