summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-09-12 20:05:25 +0200
committerRobin Gareus <robin@gareus.org>2015-09-12 20:05:25 +0200
commiteb998b32640e83828ff3c81eabf86fe0f319bbcd (patch)
treebd3244434808481fdeaa793fc0ed9e2cac07f74e /libs
parentcb6c975417bcc13a664163610fb62cfb3a0b9041 (diff)
plug some memory leaks in libs
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/buffer_set.cc7
-rw-r--r--libs/ardour/graph.cc1
-rw-r--r--libs/ardour/lv2_plugin.cc1
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/pixfader.h1
-rw-r--r--libs/gtkmm2ext/pixfader.cc9
-rw-r--r--libs/midi++2/port.cc2
-rw-r--r--libs/pbd/fpu.cc7
-rw-r--r--libs/pbd/pbd.cc2
-rw-r--r--libs/pbd/pbd/fpu.h1
9 files changed, 31 insertions, 0 deletions
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc
index f64eec3191..cd0a9c5058 100644
--- a/libs/ardour/buffer_set.cc
+++ b/libs/ardour/buffer_set.cc
@@ -87,6 +87,13 @@ BufferSet::clear()
_vst_buffers.clear ();
#endif
+#ifdef LV2_SUPPORT
+ for (LV2Buffers::iterator i = _lv2_buffers.begin(); i != _lv2_buffers.end(); ++i) {
+ delete (*i).second;
+ }
+ _lv2_buffers.clear ();
+#endif
+
}
/** Set up this BufferSet so that its data structures mirror a PortSet's buffers.
diff --git a/libs/ardour/graph.cc b/libs/ardour/graph.cc
index b321968daf..8cce0efdbc 100644
--- a/libs/ardour/graph.cc
+++ b/libs/ardour/graph.cc
@@ -459,6 +459,7 @@ Graph::main_thread()
}
pt->drop_buffers();
+ delete (pt);
}
void
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 13241f2a8b..56f1adcc90 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -699,6 +699,7 @@ LV2Plugin::~LV2Plugin ()
delete [] _control_data;
delete [] _shadow_data;
+ delete [] _defaults;
delete [] _ev_buffers;
}
diff --git a/libs/gtkmm2ext/gtkmm2ext/pixfader.h b/libs/gtkmm2ext/gtkmm2ext/pixfader.h
index 0a316340b4..c5ed9c585c 100644
--- a/libs/gtkmm2ext/gtkmm2ext/pixfader.h
+++ b/libs/gtkmm2ext/gtkmm2ext/pixfader.h
@@ -36,6 +36,7 @@ class LIBGTKMM2EXT_API PixFader : public CairoWidget
public:
PixFader (Gtk::Adjustment& adjustment, int orientation, int span, int girth);
virtual ~PixFader ();
+ static void flush_pattern_cache();
sigc::signal<void> StartGesture;
sigc::signal<void> StopGesture;
diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc
index 1e814fd147..e27945128e 100644
--- a/libs/gtkmm2ext/pixfader.cc
+++ b/libs/gtkmm2ext/pixfader.cc
@@ -85,6 +85,15 @@ PixFader::~PixFader ()
if (_layout) _layout.clear (); // drop reference to existing layout
}
+void
+PixFader::flush_pattern_cache () {
+ for (list<FaderImage*>::iterator f = _patterns.begin(); f != _patterns.end(); ++f) {
+ cairo_pattern_destroy ((*f)->pattern);
+ }
+ _patterns.clear();
+}
+
+
cairo_pattern_t*
PixFader::find_pattern (double afr, double afg, double afb,
double abr, double abg, double abb,
diff --git a/libs/midi++2/port.cc b/libs/midi++2/port.cc
index 90ec260eae..b7d12872e8 100644
--- a/libs/midi++2/port.cc
+++ b/libs/midi++2/port.cc
@@ -81,6 +81,8 @@ Port::~Port ()
for (int i = 0; i < 16; i++) {
delete _channel[i];
}
+
+ delete _parser;
}
/** Send a clock tick message.
diff --git a/libs/pbd/fpu.cc b/libs/pbd/fpu.cc
index 97e6ed59dd..33e646f744 100644
--- a/libs/pbd/fpu.cc
+++ b/libs/pbd/fpu.cc
@@ -129,6 +129,13 @@ FPU::instance()
return _instance;
}
+void
+FPU::destroy ()
+{
+ delete _instance;
+ _instance = 0;
+}
+
FPU::FPU ()
: _flags ((Flags) 0)
{
diff --git a/libs/pbd/pbd.cc b/libs/pbd/pbd.cc
index 17d1588788..cf7e523349 100644
--- a/libs/pbd/pbd.cc
+++ b/libs/pbd/pbd.cc
@@ -34,6 +34,7 @@
#include "pbd/error.h"
#include "pbd/id.h"
#include "pbd/enumwriter.h"
+#include "pbd/fpu.h"
#ifdef PLATFORM_WINDOWS
#include <winsock2.h>
@@ -111,4 +112,5 @@ PBD::cleanup ()
#endif
EnumWriter::destroy ();
+ FPU::destroy ();
}
diff --git a/libs/pbd/pbd/fpu.h b/libs/pbd/pbd/fpu.h
index 4ab1a83561..463fef3ff2 100644
--- a/libs/pbd/pbd/fpu.h
+++ b/libs/pbd/pbd/fpu.h
@@ -38,6 +38,7 @@ class LIBPBD_API FPU {
~FPU ();
static FPU* instance();
+ static void destroy();
bool has_flush_to_zero () const { return _flags & HasFlushToZero; }
bool has_denormals_are_zero () const { return _flags & HasDenormalsAreZero; }