From 7d1c017c047e0102714c2d4190783b8f21fc1505 Mon Sep 17 00:00:00 2001
From: Thomas Galland <thomas.galland@kitware.com>
Date: Thu, 29 Feb 2024 17:39:42 +0100
Subject: [PATCH] Add warnings when zSpaceSDKCoreCompatibilityManager is not
 initialized

---
 .../vtkZSpaceCoreCompatibilitySDKManager.cxx  | 83 +++++++------------
 1 file changed, 31 insertions(+), 52 deletions(-)

diff --git a/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx b/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx
index 0dc7eb94b73..7097eca63ac 100644
--- a/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx
+++ b/Rendering/ZSpace/vtkZSpaceCoreCompatibilitySDKManager.cxx
@@ -15,6 +15,22 @@ VTK_ABI_NAMESPACE_BEGIN
 
 vtkStandardNewMacro(vtkZSpaceCoreCompatibilitySDKManager);
 
+// Macros used to check if initialisation has been done before
+// using function entry points.
+#define ZSPACE_RETURN_IF_NOT_INIT()                                                                \
+  if (!this->Initialized)                                                                          \
+  {                                                                                                \
+    vtkErrorMacro("zSpace manager not initialized.");                                              \
+    return;                                                                                        \
+  }
+
+#define ZSPACE_RETURN_VAL_IF_NOT_INIT(value)                                                       \
+  if (!this->Initialized)                                                                          \
+  {                                                                                                \
+    vtkErrorMacro("zSpace manager not initialized.");                                              \
+    return value;                                                                                  \
+  }
+
 #define ZSPACE_CHECK_ERROR(fn, error)                                                              \
   if (error != ZC_COMPAT_ERROR_OK)                                                                 \
   {                                                                                                \
@@ -43,10 +59,8 @@ vtkZSpaceCoreCompatibilitySDKManager::vtkZSpaceCoreCompatibilitySDKManager()
 //------------------------------------------------------------------------------
 vtkZSpaceCoreCompatibilitySDKManager::~vtkZSpaceCoreCompatibilitySDKManager()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
+
   ZCCompatError error;
 
   error = this->EntryPts.zccompatShutDown(this->ZSpaceContext);
@@ -224,10 +238,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::InitializeZSpace()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::UpdateViewport()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   if (!this->RenderWindow)
   {
@@ -263,10 +274,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::UpdateViewport()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::UpdateTrackers()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error;
 
@@ -306,10 +314,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::UpdateTrackers()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::UpdateViewAndProjectionMatrix()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error;
 
@@ -354,10 +359,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::UpdateViewAndProjectionMatrix()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::UpdateButtonState()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZSBool isButtonPressed;
 
@@ -379,10 +381,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::UpdateButtonState()
 void vtkZSpaceCoreCompatibilitySDKManager::CalculateFrustumFit(
   const double bounds[6], double position[3], double viewUp[3])
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error;
 
@@ -471,10 +470,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::CalculateFrustumFit(
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::BeginFrame()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error = this->EntryPts.zccompatBeginFrame(this->ZSpaceContext);
   ZSPACE_CHECK_ERROR(zccompatBeginFrame, error);
@@ -483,10 +479,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::BeginFrame()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::EndFrame()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error = this->EntryPts.zccompatEndFrame(this->ZSpaceContext);
   ZSPACE_CHECK_ERROR(zccompatEndFrame, error);
@@ -495,10 +488,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::EndFrame()
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::EnableGraphicsBinding()
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error = this->EntryPts.zccompatEnableGraphicsBindingOpenGL(this->ZSpaceContext);
   ZSPACE_CHECK_ERROR(zccompatEnableGraphicsBindingOpenGL, error);
@@ -508,10 +498,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::EnableGraphicsBinding()
 void vtkZSpaceCoreCompatibilitySDKManager::SubmitFrame(
   unsigned int leftText, unsigned int rightText)
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error =
     this->EntryPts.zccompatSubmitFrameOpenGL(this->ZSpaceContext, leftText, rightText, false);
@@ -522,10 +509,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::SubmitFrame(
 void vtkZSpaceCoreCompatibilitySDKManager::GetPerEyeImageResolution(
   signed int* width, signed int* height)
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
 
   ZCCompatError error =
     this->EntryPts.zccompatGetPerEyeImageResolution(this->ZSpaceContext, width, height);
@@ -535,10 +519,7 @@ void vtkZSpaceCoreCompatibilitySDKManager::GetPerEyeImageResolution(
 //------------------------------------------------------------------------------
 vtkZSpaceSDKManager::StereoDisplayMode vtkZSpaceCoreCompatibilitySDKManager::GetStereoDisplayMode()
 {
-  if (!this->Initialized)
-  {
-    return QUAD_BUFFER_STEREO;
-  }
+  ZSPACE_RETURN_VAL_IF_NOT_INIT(QUAD_BUFFER_STEREO);
 
   ZCCompatStereoDisplayMode mode = ZC_COMPAT_STEREO_DISPLAY_MODE_QUAD_BUFFER_STEREO;
   ZCCompatError error = this->EntryPts.zccompatGetStereoDisplayMode(this->ZSpaceContext, &mode);
@@ -550,10 +531,8 @@ vtkZSpaceSDKManager::StereoDisplayMode vtkZSpaceCoreCompatibilitySDKManager::Get
 //------------------------------------------------------------------------------
 void vtkZSpaceCoreCompatibilitySDKManager::SetRenderWindow(vtkRenderWindow* renderWindow)
 {
-  if (!this->Initialized)
-  {
-    return;
-  }
+  ZSPACE_RETURN_IF_NOT_INIT();
+
   // Give the application window handle to the zSpace Core Compatibility API.
   HWND hWnd = static_cast<HWND>(renderWindow->GetGenericWindowId());
   ZCCompatError error =
-- 
GitLab