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;
+    }
   };
 }