Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'map/displacement_mode_manager.cpp')
-rw-r--r--map/displacement_mode_manager.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/map/displacement_mode_manager.cpp b/map/displacement_mode_manager.cpp
new file mode 100644
index 0000000000..2135274563
--- /dev/null
+++ b/map/displacement_mode_manager.cpp
@@ -0,0 +1,26 @@
+#include "map/displacement_mode_manager.hpp"
+
+DisplacementModeManager::DisplacementModeManager(TCallback && callback)
+ : m_callback(move(callback)), m_mask(0)
+{
+}
+
+void DisplacementModeManager::Set(Slot slot, bool show)
+{
+ lock_guard<mutex> lock(m_mu);
+
+ uint32_t const bit = static_cast<uint32_t>(1) << slot;
+ uint32_t const mask = m_mask;
+ if (show)
+ m_mask = mask | bit;
+ else
+ m_mask = mask & ~bit;
+
+ if (mask == m_mask)
+ return;
+
+ if (m_mask != 0)
+ m_callback(true /* show */);
+ else
+ m_callback(false /* show */);
+}