diff OrthancStone/Sources/Scene2D/GrayscaleWindowingSceneTracker.cpp @ 1639:5cdc5b98f14d

cppcheck
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 10 Nov 2020 16:41:11 +0100
parents 874e178f34e9
children d4a8e2b19a65
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2D/GrayscaleWindowingSceneTracker.cpp	Tue Nov 10 16:26:47 2020 +0100
+++ b/OrthancStone/Sources/Scene2D/GrayscaleWindowingSceneTracker.cpp	Tue Nov 10 16:41:11 2020 +0100
@@ -117,24 +117,28 @@
     if (canvasWidth > 3 &&
         canvasHeight > 3)
     {
-      boost::weak_ptr<IViewport> viewport = viewport_.lock();
-      GrayscaleLayerAccessor accessor(viewport, layerIndex_);
+      boost::shared_ptr<IViewport> locked = viewport_.lock();
+
+      if (locked)
+      {
+        GrayscaleLayerAccessor accessor(locked, layerIndex_);
       
-      if (accessor.IsValid())
-      {
-        FloatTextureSceneLayer& layer = accessor.GetLayer();
-        
-        layer.GetWindowing(originalCenter_, originalWidth_);
+        if (accessor.IsValid())
+        {
+          FloatTextureSceneLayer& layer = accessor.GetLayer();
         
-        float minValue, maxValue;
-        layer.GetRange(minValue, maxValue);
+          layer.GetWindowing(originalCenter_, originalWidth_);
+        
+          float minValue, maxValue;
+          layer.GetRange(minValue, maxValue);
         
-        normalization_ = (maxValue - minValue) / static_cast<double>(std::min(canvasWidth, canvasHeight) - 1);
-        active_ = true;
-      }
-      else
-      {
-        LOG(INFO) << "Cannot create GrayscaleWindowingSceneTracker on a non-float texture";
+          normalization_ = (maxValue - minValue) / static_cast<double>(std::min(canvasWidth, canvasHeight) - 1);
+          active_ = true;
+        }
+        else
+        {
+          LOG(INFO) << "Cannot create GrayscaleWindowingSceneTracker on a non-float texture";
+        }
       }
     }
   }