summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-09-11 02:40:18 +0200
committerRobin Gareus <robin@gareus.org>2014-09-11 19:30:33 +0200
commit01974b576995b8a67158fb3d416a1ca8ca224cfd (patch)
tree0e714650de3065d17ae62077399566efdbc64041
parent114792777d7e8433d398bba395c75c27494b6075 (diff)
API flush static cairo pattern cache
(should probably be cleaned regularly e.g. meterbridge resize)
-rw-r--r--gtk2_ardour/ardour_ui.cc1
-rw-r--r--libs/gtkmm2ext/fastmeter.cc18
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/fastmeter.h1
3 files changed, 20 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index e587de8145..d0d3f96c67 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -577,6 +577,7 @@ ARDOUR_UI::~ARDOUR_UI ()
delete secondary_clock;
delete _process_thread;
delete gui_object_state;
+ FastMeter::flush_pattern_cache ();
}
}
diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc
index df3f09735e..15f38db20a 100644
--- a/libs/gtkmm2ext/fastmeter.cc
+++ b/libs/gtkmm2ext/fastmeter.cc
@@ -133,6 +133,24 @@ FastMeter::~FastMeter ()
{
}
+void
+FastMeter::flush_pattern_cache () {
+ Pattern10Map::iterator i1;
+ PatternBgMap::iterator ib;
+ for (ib = hb_pattern_cache.begin(); ib != hb_pattern_cache.end(); ++ib) {
+ hb_pattern_cache.erase(ib);
+ }
+ for (i1 = hm_pattern_cache.begin(); i1 != hm_pattern_cache.end(); ++i1) {
+ hm_pattern_cache.erase(i1);
+ }
+ for (ib = vb_pattern_cache.begin(); ib != vb_pattern_cache.end(); ++ib) {
+ vb_pattern_cache.erase(ib);
+ }
+ for (i1 = vm_pattern_cache.begin(); i1 != vm_pattern_cache.end(); ++i1) {
+ vm_pattern_cache.erase(i1);
+ }
+}
+
Cairo::RefPtr<Cairo::Pattern>
FastMeter::generate_meter_pattern (
int width, int height, int *clr, float *stp, int styleflags, bool horiz)
diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
index 650908f6a4..dbb3296c46 100644
--- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
+++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
@@ -52,6 +52,7 @@ class LIBGTKMM2EXT_API FastMeter : public CairoWidget {
int styleflags = 3
);
virtual ~FastMeter ();
+ static void flush_pattern_cache();
void set (float level, float peak = -1);
void clear ();