gst/goom/: Free a bunch of stuff, and initialise things to fix leaks and valgrind...
authorJan Schmidt <thaytan@mad.scientist.com>
Tue, 22 Apr 2008 00:18:52 +0000 (00:18 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Tue, 22 Apr 2008 00:18:52 +0000 (00:18 +0000)
Original commit message from CVS:
* gst/goom/config_param.c: (goom_plugin_parameters_free):
* gst/goom/convolve_fx.c: (convolve_init), (convolve_free):
* gst/goom/filters.c: (zoomFilterVisualFXWrapper_free):
* gst/goom/flying_stars_fx.c: (fs_free):
* gst/goom/goom_config_param.h:
* gst/goom/goom_core.c: (goom_init), (goom_close):
* gst/goom/goom_plugin_info.h:
* gst/goom/gstgoom.c: (gst_goom_finalize):
* gst/goom/lines.c: (goom_lines_free):
* gst/goom/plugin_info.c: (plugin_info_init), (plugin_info_free):
* gst/goom/surf3d.c: (grid3d_free):
* gst/goom/surf3d.h:
* gst/goom/tentacle3d.c: (tentacle_free):
Free a bunch of stuff, and initialise things to fix leaks
and valgrind warnings in the testsuite.
Fixes: #529268

14 files changed:
ChangeLog
gst/goom/config_param.c
gst/goom/convolve_fx.c
gst/goom/filters.c
gst/goom/flying_stars_fx.c
gst/goom/goom_config_param.h
gst/goom/goom_core.c
gst/goom/goom_plugin_info.h
gst/goom/gstgoom.c
gst/goom/lines.c
gst/goom/plugin_info.c
gst/goom/surf3d.c
gst/goom/surf3d.h
gst/goom/tentacle3d.c

index eab9c24..dd8609f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2008-04-22  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gst/goom/config_param.c: (goom_plugin_parameters_free):
+       * gst/goom/convolve_fx.c: (convolve_init), (convolve_free):
+       * gst/goom/filters.c: (zoomFilterVisualFXWrapper_free):
+       * gst/goom/flying_stars_fx.c: (fs_free):
+       * gst/goom/goom_config_param.h:
+       * gst/goom/goom_core.c: (goom_init), (goom_close):
+       * gst/goom/goom_plugin_info.h:
+       * gst/goom/gstgoom.c: (gst_goom_finalize):
+       * gst/goom/lines.c: (goom_lines_free):
+       * gst/goom/plugin_info.c: (plugin_info_init), (plugin_info_free):
+       * gst/goom/surf3d.c: (grid3d_free):
+       * gst/goom/surf3d.h:
+       * gst/goom/tentacle3d.c: (tentacle_free):
+       Free a bunch of stuff, and initialise things to fix leaks
+       and valgrind warnings in the testsuite.
+
+       Fixes: #529268
+
 2008-04-21  Wim Taymans  <wim.taymans@collabora.co.uk>
 
        * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init), (request_pt_map),
index 4c4cebd..da07a34 100644 (file)
@@ -111,6 +111,12 @@ goom_plugin_parameters (const char *name, int nb)
   return p;
 }
 
+void
+goom_plugin_parameters_free (PluginParameters * p)
+{
+  free (p->params);
+}
+
 /*---------------------------------------------------------------------------*/
 
 void
index d1b06d8..9e0498a 100644 (file)
@@ -105,6 +105,8 @@ convolve_init (VisualFX * _this, PluginInfo * info)
   data->params.params[3] = &data->factor_p;
   data->params.params[4] = 0;
 
+  data->h_height = 0;
+
   /* init rotozoom tables */
   compute_tables (_this, info);
   data->theta = 0;
@@ -119,6 +121,10 @@ convolve_init (VisualFX * _this, PluginInfo * info)
 static void
 convolve_free (VisualFX * _this)
 {
+  ConvData *data = (ConvData *) _this->fx_data;
+
+  goom_plugin_parameters_free (&data->params);
+
   free (_this->fx_data);
 }
 
index 822d4a1..3014c35 100644 (file)
@@ -793,6 +793,19 @@ zoomFilterVisualFXWrapper_init (struct _VISUAL_FX *_this, PluginInfo * info)
 static void
 zoomFilterVisualFXWrapper_free (struct _VISUAL_FX *_this)
 {
+  ZoomFilterFXWrapperData *data = (ZoomFilterFXWrapperData *) _this->fx_data;
+
+  if (data->freebrutT)
+    free (data->freebrutT);
+  if (data->freebrutS)
+    free (data->freebrutS);
+  if (data->freebrutD)
+    free (data->freebrutD);
+  if (data->firedec)
+    free (data->firedec);
+
+  goom_plugin_parameters_free (_this->params);
+
   free (_this->fx_data);
 }
 
index 384b54a..9906c05 100644 (file)
@@ -136,6 +136,11 @@ fs_init (VisualFX * _this, PluginInfo * info)
 static void
 fs_free (VisualFX * _this)
 {
+  FSData *data = (FSData *) _this->fx_data;
+
+  goom_plugin_parameters_free (&data->params);
+
+  free (data->stars);
   free (_this->fx_data);
 }
 
index 3c6838d..e3a7514 100644 (file)
@@ -100,6 +100,7 @@ typedef struct _PARAMETERS {
 } PluginParameters;
 
 PluginParameters goom_plugin_parameters(const char *name, int nb);
+void goom_plugin_parameters_free(PluginParameters *p);
 
 #define secure_param goom_secure_param
 #define secure_f_param goom_secure_f_param
index 5b222ab..5bc64b6 100644 (file)
@@ -64,6 +64,15 @@ goom_init (guint32 resx, guint32 resy)
 
   plugin_info_init (goomInfo, 4);
 
+  goomInfo->screen.width = resx;
+  goomInfo->screen.height = resy;
+  goomInfo->screen.size = resx * resy;
+
+  init_buffers (goomInfo, goomInfo->screen.size);
+  goomInfo->gRandom = goom_random_init ((uintptr_t) goomInfo->pixel);
+
+  goomInfo->cycle = 0;
+
   goomInfo->star_fx = flying_star_create ();
   goomInfo->star_fx.init (&goomInfo->star_fx, goomInfo);
 
@@ -81,15 +90,6 @@ goom_init (guint32 resx, guint32 resy)
   plugin_info_add_visual (goomInfo, 2, &goomInfo->star_fx);
   plugin_info_add_visual (goomInfo, 3, &goomInfo->convolve_fx);
 
-  goomInfo->screen.width = resx;
-  goomInfo->screen.height = resy;
-  goomInfo->screen.size = resx * resy;
-
-  init_buffers (goomInfo, goomInfo->screen.size);
-  goomInfo->gRandom = goom_random_init ((uintptr_t) goomInfo->pixel);
-
-  goomInfo->cycle = 0;
-
   goomInfo->ifs_fx = ifs_visualfx_create ();
   goomInfo->ifs_fx.init (&goomInfo->ifs_fx, goomInfo);
 
@@ -782,6 +782,7 @@ goom_close (PluginInfo * goomInfo)
   goomInfo->tentacles_fx.free (&goomInfo->tentacles_fx);
   goomInfo->zoomFilter_fx.free (&goomInfo->zoomFilter_fx);
 
+  plugin_info_free (goomInfo);
   free (goomInfo);
 }
 
index 30c3d10..a745fea 100644 (file)
@@ -155,6 +155,7 @@ struct _PLUGIN_INFO {
 };
 
 void plugin_info_init(PluginInfo *p, int nbVisual); 
+void plugin_info_free(PluginInfo *p);
 
 /* i = [0..p->nbVisual-1] */
 void plugin_info_add_visual(PluginInfo *p, int i, VisualFX *visual);
index f1cf31b..e7c43d9 100644 (file)
@@ -196,6 +196,7 @@ gst_goom_finalize (GObject * object)
   GstGoom *goom = GST_GOOM (object);
 
   goom_close (goom->plugin);
+  goom->plugin = NULL;
 
   g_object_unref (goom->adapter);
 
index a2a94d4..027263a 100644 (file)
@@ -199,6 +199,7 @@ goom_lines_init (PluginInfo * goomInfo, int rx, int ry,
 void
 goom_lines_free (GMLine ** l)
 {
+  free ((*l)->points2);
   free ((*l)->points);
   free (*l);
   l = NULL;
index 7ef1a71..b5e1f46 100644 (file)
@@ -98,6 +98,9 @@ plugin_info_init (PluginInfo * pp, int nbVisuals)
   p.sound.prov_max = 0;
   p.sound.goom_limit = 1;
   p.sound.allTimesMax = 1;
+  p.sound.timeSinceLastGoom = 1;
+  p.sound.timeSinceLastBigGoom = 1;
+  p.sound.cycle = 0;
 
   p.sound.volume_p = secure_f_feedback ("Sound Volume");
   p.sound.accel_p = secure_f_feedback ("Sound Acceleration");
@@ -122,6 +125,7 @@ plugin_info_init (PluginInfo * pp, int nbVisuals)
   p.sound.params = plugin_parameters ("Sound", 11);
 
   p.nbParams = 0;
+  p.params = NULL;
   p.nbVisuals = nbVisuals;
   p.visuals = (VisualFX **) malloc (sizeof (VisualFX *) * nbVisuals);
 
@@ -225,3 +229,13 @@ plugin_info_add_visual (PluginInfo * p, int i, VisualFX * visual)
     }
   }
 }
+
+void
+plugin_info_free (PluginInfo * p)
+{
+  goom_plugin_parameters_free (&p->sound.params);
+
+  if (p->params)
+    free (p->params);
+  free (p->visuals);
+}
index f6810f8..6df9a92 100644 (file)
@@ -37,6 +37,17 @@ grid3d_new (int sizex, int defx, int sizez, int defz, v3d center)
 }
 
 void
+grid3d_free (grid3d * g)
+{
+  surf3d *s = &(g->surf);
+
+  free (s->vertex);
+  free (s->svertex);
+
+  free (g);
+}
+
+void
 grid3d_draw (PluginInfo * plug, grid3d * g, int color, int colorlow,
     int dist, Pixel * buf, Pixel * back, int W, int H)
 {
index 482b6a0..1592dfd 100644 (file)
@@ -27,6 +27,7 @@ typedef struct {
 
 /* works on grid3d */
 grid3d *grid3d_new (int sizex, int defx, int sizez, int defz, v3d center);
+void grid3d_free (grid3d *g);
 void grid3d_update (grid3d *s, float angle, float *vals, float dist);
 
 /* low level */
index e1f3e78..b283aa9 100644 (file)
@@ -125,8 +125,14 @@ tentacle_fx_create (void)
 static void
 tentacle_free (TentacleFXData * data)
 {
-  /* TODO : un vrai FREE GRID!! */
+  int tmp;
+
+  /* FREE GRID */
+  for (tmp = 0; tmp < nbgrid; tmp++)
+    grid3d_free (data->grille[tmp]);
   free (data->vals);
+
+  goom_plugin_parameters_free (&data->params);
 }
 
 static void