]> git.mxchange.org Git - simgear.git/commitdiff
fix a memory leak in newcloud.cxx
authorTim Moore <timoore@redhat.com>
Thu, 26 Nov 2009 15:30:46 +0000 (16:30 +0100)
committerTim Moore <timoore@redhat.com>
Thu, 26 Nov 2009 15:30:46 +0000 (16:30 +0100)
simgear/scene/sky/CloudShaderGeometry.cxx
simgear/scene/sky/CloudShaderGeometry.hxx
simgear/scene/sky/newcloud.cxx

index 49244faf4f3f42af3f71884222befb75c208b8d5..24056ebc47bb9c6cb71a7176b1539c96b19bfb7a 100755 (executable)
@@ -121,7 +121,7 @@ void CloudShaderGeometry::drawImplementation(RenderInfo& renderInfo) const
     }
 }
 
-void CloudShaderGeometry::addSprite(SGVec3f& p, int tx, int ty,
+void CloudShaderGeometry::addSprite(const SGVec3f& p, int tx, int ty,
                                     float w, float h,
                                     float s, float cull, float cloud_height)
 {
index 8a9c31c5172faea4c004a602fcee972fc58df3d7..cd00da8de7139c8c252563b66e67cd00e83b3f7a 100755 (executable)
@@ -69,7 +69,8 @@ class CloudShaderGeometry : public osg::Drawable
         META_Object(flightgear, CloudShaderGeometry);
         
         struct CloudSprite {
-            CloudSprite(SGVec3f& p, int tx, int ty, float w, float h, float s, float ch) :
+            CloudSprite(const SGVec3f& p, int tx, int ty, float w, float h,
+                        float s, float ch) :
                     position(p), texture_index_x(tx), texture_index_y(ty), width(w), height(h), shade(s), cloud_height(ch)
                     { }
         
@@ -106,7 +107,8 @@ class CloudShaderGeometry : public osg::Drawable
             _geometry = geometry;
         }
         
-    void addSprite(SGVec3f& p, int tx, int ty, float w, float h, float s, float cull, float cloud_height);
+    void addSprite(const SGVec3f& p, int tx, int ty, float w, float h,
+                   float s, float cull, float cloud_height);
                 
         osg::ref_ptr<osg::Drawable> _geometry;
 
index d4219210e1619965fe753a5db7ada51b79208ff3..1518b13306a2f3b58070c7cf6d3c631c682b2ce5 100644 (file)
@@ -222,8 +222,6 @@ osg::ref_ptr<EffectGeode> SGNewCloud::genCloud() {
             z = height * cos(elev) * 0.5f; 
         }
         
-        SGVec3f *pos = new SGVec3f(x, y, z); 
-
         // Determine the height and width as scaling factors on the minimum size (used to create the quad)
         float sprite_width = 1.0f + sg_random() * (max_sprite_width - min_sprite_width) / min_sprite_width;
         float sprite_height = 1.0f + sg_random() * (max_sprite_height - min_sprite_height) / min_sprite_height;
@@ -241,7 +239,7 @@ osg::ref_ptr<EffectGeode> SGNewCloud::genCloud() {
         int index_y = (int) floor(sg_random() * num_textures_y);
         if (index_y == num_textures_y) { index_y--; }
         
-        sg->addSprite(*pos
+        sg->addSprite(SGVec3f(x, y, z)
                     index_x, 
                     index_y, 
                     sprite_width,