diff options
Diffstat (limited to 'src/lib/util/palette.cpp')
-rw-r--r-- | src/lib/util/palette.cpp | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/src/lib/util/palette.cpp b/src/lib/util/palette.cpp index 488f7f8a2d2..612dc9042be 100644 --- a/src/lib/util/palette.cpp +++ b/src/lib/util/palette.cpp @@ -8,12 +8,12 @@ ******************************************************************************/ -#include <assert.h> - #include "palette.h" -#include <stdlib.h> -#include <math.h> + #include <algorithm> +#include <cassert> +#include <cmath> +#include <cstdlib> //************************************************************************** @@ -44,9 +44,7 @@ inline rgb_t palette_t::adjust_palette_entry(rgb_t entry, float brightness, floa // dirty_state - constructor //------------------------------------------------- -palette_client::dirty_state::dirty_state() - : m_mindirty(0), - m_maxdirty(0) +palette_client::dirty_state::dirty_state() : m_mindirty(0), m_maxdirty(0) { } @@ -56,7 +54,7 @@ palette_client::dirty_state::dirty_state() // min/max values //------------------------------------------------- -const uint32_t *palette_client::dirty_state::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) +const uint32_t *palette_client::dirty_state::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept { // fill in the mindirty/maxdirty mindirty = m_mindirty; @@ -77,7 +75,7 @@ void palette_client::dirty_state::resize(uint32_t colors) // resize to the correct number of dwords and mark all entries dirty uint32_t dirty_dwords = (colors + 31) / 32; m_dirty.resize(dirty_dwords); - memset(&m_dirty[0], 0xff, dirty_dwords*4); + std::fill(m_dirty.begin(), m_dirty.end(), ~uint32_t(0)); // mark all entries dirty m_dirty[dirty_dwords - 1] &= (1 << (colors % 32)) - 1; @@ -92,7 +90,7 @@ void palette_client::dirty_state::resize(uint32_t colors) // mark_dirty - mark a single entry dirty //------------------------------------------------- -void palette_client::dirty_state::mark_dirty(uint32_t index) +void palette_client::dirty_state::mark_dirty(uint32_t index) noexcept { m_dirty[index / 32] |= 1 << (index % 32); m_mindirty = std::min(m_mindirty, index); @@ -105,10 +103,11 @@ void palette_client::dirty_state::mark_dirty(uint32_t index) // entries as clean //------------------------------------------------- -void palette_client::dirty_state::reset() +void palette_client::dirty_state::reset() noexcept { // erase relevant entries in the new live one - memset(&m_dirty[m_mindirty / 32], 0, ((m_maxdirty / 32) + 1 - (m_mindirty / 32)) * sizeof(uint32_t)); + if (m_mindirty <= m_maxdirty) + std::fill(&m_dirty[m_mindirty / 32], &m_dirty[m_maxdirty / 32] + 1, 0); m_mindirty = m_dirty.size() * 32 - 1; m_maxdirty = 0; } @@ -167,20 +166,18 @@ palette_client::~palette_client() // list for a client //------------------------------------------------- -const uint32_t *palette_client::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) +const uint32_t *palette_client::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept { // if nothing to report, report nothing and don't swap - const uint32_t *result = m_live->dirty_list(mindirty, maxdirty); - if (result == nullptr) - return nullptr; - - // swap the live and previous lists - dirty_state *temp = m_live; - m_live = m_previous; - m_previous = temp; + uint32_t const *const result = m_live->dirty_list(mindirty, maxdirty); + if (result) + { + // swap the live and previous lists + std::swap(m_live, m_previous); - // reset new live one and return the pointer to the previous - m_live->reset(); + // reset new live one and return the pointer to the previous + m_live->reset(); + } return result; } @@ -265,7 +262,7 @@ palette_t::~palette_t() // palette_t - destructor //------------------------------------------------- -void palette_t::deref() +void palette_t::deref() noexcept { if (--m_refcount == 0) delete this; |