From 4fdc5efb69f530d2e7319544fa8b2eab1bde37c9 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Fri, 25 May 2018 08:26:26 +0200 Subject: [PATCH] Explicitly declare DataBlockCache as moveable to make vs17 happy --- src/audio_renderer.cpp | 12 ++++++------ src/audio_renderer.h | 2 +- src/audio_renderer_spectrum.cpp | 2 +- src/block_cache.h | 8 +++++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/audio_renderer.cpp b/src/audio_renderer.cpp index d2286dd68..e90586b02 100644 --- a/src/audio_renderer.cpp +++ b/src/audio_renderer.cpp @@ -67,6 +67,7 @@ size_t AudioRendererBitmapCacheBitmapFactory::GetBlockSize() const AudioRenderer::AudioRenderer() { + bitmaps.reserve(AudioStyle_MAX); for (int i = 0; i < AudioStyle_MAX; ++i) bitmaps.emplace_back(256, AudioRendererBitmapCacheBitmapFactory(this)); @@ -157,21 +158,20 @@ size_t AudioRenderer::NumBlocks(const int64_t samples) const return static_cast(duration / pixel_ms / cache_bitmap_width); } -const wxBitmap *AudioRenderer::GetCachedBitmap(const int i, const AudioRenderingStyle style) +wxBitmap const& AudioRenderer::GetCachedBitmap(const int i, const AudioRenderingStyle style) { assert(provider); assert(renderer); bool created = false; - wxBitmap *bmp = bitmaps[style].Get(i, &created); - assert(bmp); + auto& bmp = bitmaps[style].Get(i, &created); if (created) { - renderer->Render(*bmp, i*cache_bitmap_width, style); + renderer->Render(bmp, i*cache_bitmap_width, style); needs_age = true; } - assert(bmp->IsOk()); + assert(bmp.IsOk()); return bmp; } @@ -201,7 +201,7 @@ void AudioRenderer::Render(wxDC &dc, wxPoint origin, const int start, const int for (int i = firstbitmap; i <= lastbitmap; ++i) { - dc.DrawBitmap(*GetCachedBitmap(i, style), origin); + dc.DrawBitmap(GetCachedBitmap(i, style), origin); origin.x += cache_bitmap_width; } diff --git a/src/audio_renderer.h b/src/audio_renderer.h index 7bfeb2428..1d88be3cb 100644 --- a/src/audio_renderer.h +++ b/src/audio_renderer.h @@ -111,7 +111,7 @@ class AudioRenderer { /// /// Will attempt retrieving the requested bitmap from the cache, creating it /// if the cache doesn't have it. - const wxBitmap *GetCachedBitmap(int i, AudioRenderingStyle style); + wxBitmap const& GetCachedBitmap(int i, AudioRenderingStyle style); /// @brief Update the block count in the bitmap caches /// diff --git a/src/audio_renderer_spectrum.cpp b/src/audio_renderer_spectrum.cpp index 9d79feaa8..7884f1006 100644 --- a/src/audio_renderer_spectrum.cpp +++ b/src/audio_renderer_spectrum.cpp @@ -240,7 +240,7 @@ void AudioSpectrumRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle { // Derived audio data size_t block_index = (size_t)(ax * pixel_ms * provider->GetSampleRate() / 1000) >> derivation_dist; - float *power = cache->Get(block_index); + float *power = &cache->Get(block_index); // Prepare bitmap writing unsigned char *px = imgdata + (imgheight-1) * stride + (ax - start) * 3; diff --git a/src/block_cache.h b/src/block_cache.h index 35ad0eedd..9fcaf42e7 100644 --- a/src/block_cache.h +++ b/src/block_cache.h @@ -109,6 +109,8 @@ public: SetBlockCount(block_count); } + DataBlockCache(DataBlockCache&&) = default; + DataBlockCache& operator=(DataBlockCache&&) = default; /// @brief Change the number of blocks in cache /// @param block_count New number of blocks to hold @@ -158,12 +160,12 @@ public: /// @return A pointer to the block in cache /// /// It is legal to pass 0 (null) for created, in this case nothing is returned in it. - BlockT *Get(size_t i, bool *created = nullptr) + BlockT& Get(size_t i, bool *created = nullptr) { size_t mbi = i >> MacroblockExponent; assert(mbi < data.size()); - MacroBlock &mb = data[mbi]; + auto &mb = data[mbi]; // Move this macroblock to the front of the age list if (mb.blocks.empty()) @@ -193,6 +195,6 @@ public: else if (created) *created = false; - return b; + return *b; } };