diff Framework/StoneInitialization.cpp @ 1236:358461330978 broker

global function GetWebGLViewportsRegistry()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Dec 2019 20:45:47 +0100
parents 092ec2a225ad
children 0ca50d275b9a
line wrap: on
line diff
--- a/Framework/StoneInitialization.cpp	Mon Dec 09 20:25:22 2019 +0100
+++ b/Framework/StoneInitialization.cpp	Mon Dec 09 20:45:47 2019 +0100
@@ -60,6 +60,11 @@
 #  include <Core/DicomParsing/FromDcmtkBridge.h>
 #endif
 
+#if ORTHANC_ENABLE_WASM == 1
+static double viewportsTimeout_ = 1000;
+static std::auto_ptr<OrthancStone::WebGLViewportsRegistry>  viewportsRegistry_;
+#endif
+
 #include "Toolbox/LinearAlgebra.h"
 
 #include <Core/OrthancException.h>
@@ -170,6 +175,10 @@
 
   void StoneFinalize()
   {
+#if ORTHANC_ENABLE_WASM == 1
+    viewportsRegistry_.reset();
+#endif
+    
 #if ORTHANC_ENABLE_SDL == 1
     OrthancStone::SdlWindow::GlobalFinalize();
 #endif
@@ -188,4 +197,32 @@
 
     Orthanc::Logging::Finalize();
   }
+
+
+#if ORTHANC_ENABLE_WASM == 1
+  void SetWebGLViewportsRegistryTimeout(double timeout)
+  {
+    if (viewportsRegistry_.get())
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
+    }
+    else
+    {
+      viewportsTimeout_ = timeout;
+    }
+  }
+#endif
+
+
+#if ORTHANC_ENABLE_WASM == 1
+  WebGLViewportsRegistry& GetWebGLViewportsRegistry()
+  {
+    if (viewportsRegistry_.get() == NULL)
+    {
+      viewportsRegistry_.reset(new WebGLViewportsRegistry(viewportsTimeout_));
+    }
+
+    return *viewportsRegistry_;
+  }
+#endif
 }