diff --git a/aegisub/src/audio_renderer.cpp b/aegisub/src/audio_renderer.cpp index 585523de3..b6da0d76d 100644 --- a/aegisub/src/audio_renderer.cpp +++ b/aegisub/src/audio_renderer.cpp @@ -200,6 +200,7 @@ const wxBitmap *AudioRenderer::GetCachedBitmap(int i, AudioRenderingStyle style) if (created) { renderer->Render(*bmp, i*cache_bitmap_width, style); + needs_age = true; } assert(bmp->IsOk()); @@ -243,14 +244,19 @@ void AudioRenderer::Render(wxDC &dc, wxPoint origin, int start, int length, Audi renderer->RenderBlank(dc, wxRect(origin.x-1, origin.y, lastx-origin.x+1, pixel_height), style); } - bitmaps[style].Age(cache_bitmap_maxsize); - renderer->AgeCache(cache_renderer_maxsize); + if (needs_age) + { + bitmaps[style].Age(cache_bitmap_maxsize); + renderer->AgeCache(cache_renderer_maxsize); + needs_age = false; + } } void AudioRenderer::Invalidate() { for_each(bitmaps, bind(&AudioRendererBitmapCache::Age, _1, 0)); + needs_age = false; } diff --git a/aegisub/src/audio_renderer.h b/aegisub/src/audio_renderer.h index 41e52727d..dec7a8d86 100644 --- a/aegisub/src/audio_renderer.h +++ b/aegisub/src/audio_renderer.h @@ -115,6 +115,8 @@ class AudioRenderer { size_t cache_bitmap_maxsize; /// The maximum allowed size of the renderer's cache, in bytes size_t cache_renderer_maxsize; + /// Do the caches need to be aged? + bool needs_age; /// Actual renderer for bitmaps AudioRendererBitmapProvider *renderer;