summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-06-23 08:17:48 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-23 08:17:48 -0400
commit424f6539b44252dd52a85534f6eea423214eb5a2 (patch)
treeabd65d498946979b9c7bebdc30c9f3eaeadbed19
parent239052759fed3abfe9811fddf6e5d3d10bc14e35 (diff)
change location for initialization of static WaveView image cache, and provide a visible method to set the cache flush threshold
-rw-r--r--libs/canvas/canvas/wave_view.h2
-rw-r--r--libs/canvas/wave_view.cc26
2 files changed, 24 insertions, 4 deletions
diff --git a/libs/canvas/canvas/wave_view.h b/libs/canvas/canvas/wave_view.h
index bf0a4e8a5b..b5cbf9bf57 100644
--- a/libs/canvas/canvas/wave_view.h
+++ b/libs/canvas/canvas/wave_view.h
@@ -276,6 +276,8 @@ public:
static void start_drawing_thread ();
static void stop_drawing_thread ();
+ static void set_image_cache_size (uint64_t);
+
#ifdef CANVAS_COMPATIBILITY
void*& property_gain_src () {
return _foo_void;
diff --git a/libs/canvas/wave_view.cc b/libs/canvas/wave_view.cc
index 9c869c9392..b57d4217be 100644
--- a/libs/canvas/wave_view.cc
+++ b/libs/canvas/wave_view.cc
@@ -93,6 +93,10 @@ WaveView::WaveView (Canvas* c, boost::shared_ptr<ARDOUR::AudioRegion> region)
, always_get_image_in_thread (false)
, rendered (false)
{
+ if (!images) {
+ images = new WaveViewCache;
+ }
+
VisualPropertiesChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_visual_property_change, this));
ClipLevelChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_clip_level_change, this));
@@ -123,6 +127,10 @@ WaveView::WaveView (Item* parent, boost::shared_ptr<ARDOUR::AudioRegion> region)
, always_get_image_in_thread (false)
, rendered (false)
{
+ if (!images) {
+ images = new WaveViewCache;
+ }
+
VisualPropertiesChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_visual_property_change, this));
ClipLevelChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_clip_level_change, this));
@@ -724,10 +732,6 @@ WaveView::cache_request_result (boost::shared_ptr<WaveViewThreadRequest> req) co
req->start,
req->end,
req->image));
- if (!images) {
- images = new WaveViewCache;
- }
-
images->add (_region->audio_source (_channel), ret);
/* consolidate cache first (removes fully-contained
@@ -1426,6 +1430,16 @@ WaveView::cancel_my_render_request () const
current_request.reset ();
}
+void
+WaveView::set_image_cache_size (uint64_t sz)
+{
+ if (!images) {
+ images = new WaveViewCache;
+ }
+
+ images->set_image_cache_threshold (sz);
+}
+
/*-------------------------------------------------*/
void
@@ -1735,6 +1749,8 @@ WaveViewCache::cache_flush ()
for (CacheLine::iterator c = cl.begin(); c != cl.end(); ++c) {
if (*c == le.second) {
+
+ DEBUG_TRACE (DEBUG::WaveView, string_compose ("Removing cache line entry for %1\n", x->first->name()));
/* Remove this entry from this cache line */
cl.erase (c);
@@ -1756,6 +1772,7 @@ WaveViewCache::cache_flush ()
} else {
image_cache_size = 0;
}
+ DEBUG_TRACE (DEBUG::WaveView, string_compose ("cache shrunk to %1\n", image_cache_size));
}
/* Remove from the linear list, even if we didn't find it in
@@ -1768,6 +1785,7 @@ WaveViewCache::cache_flush ()
void
WaveViewCache::set_image_cache_threshold (uint64_t sz)
{
+ DEBUG_TRACE (DEBUG::WaveView, string_compose ("new image cache size \n", sz));
_image_cache_threshold = sz;
cache_flush ();
}