make the debug flag atomic and move to MapData

This commit is contained in:
Konstantin Käfer
2015-03-20 18:53:44 +01:00
parent ebd2985f78
commit 03e400e002
3 changed files with 16 additions and 7 deletions

View File

@@ -80,6 +80,7 @@ public:
enum class Update : UpdateType {
Nothing = 0,
StyleInfo = 1 << 0,
Debug = 1 << 1,
};
void triggerUpdate(Update = Update::Nothing);
@@ -254,7 +255,6 @@ private:
std::chrono::steady_clock::duration defaultTransitionDuration;
bool debug = false;
std::chrono::steady_clock::time_point animationTime = std::chrono::steady_clock::time_point::min();
std::set<util::ptr<StyleSource>> activeSources;

View File

@@ -591,18 +591,17 @@ void Map::updateAnnotationTiles(std::vector<Tile::ID>& ids) {
#pragma mark - Toggles
void Map::setDebug(bool value) {
debug = value;
assert(painter);
painter->setDebug(debug);
triggerUpdate();
data->setDebug(value);
triggerUpdate(Update::Debug);
}
void Map::toggleDebug() {
setDebug(!debug);
data->toggleDebug();
triggerUpdate(Update::Debug);
}
bool Map::getDebug() const {
return debug;
return data->getDebug();
}
void Map::addClass(const std::string& klass) {
@@ -765,6 +764,10 @@ void Map::prepare() {
if (u & static_cast<UpdateType>(Update::StyleInfo)) {
reloadStyle();
}
if (u & static_cast<UpdateType>(Update::Debug)) {
assert(painter);
painter->setDebug(data->getDebug());
}
// Update transform transitions.
animationTime = std::chrono::steady_clock::now();

View File

@@ -3,6 +3,7 @@
#include <string>
#include <mutex>
#include <atomic>
namespace mbgl {
@@ -25,10 +26,15 @@ public:
styleInfo = info;
}
inline bool getDebug() const { return debug; }
inline bool toggleDebug() { return debug ^= 1u; }
inline void setDebug(bool value) { debug = value; }
private:
mutable std::mutex mtx;
StyleInfo styleInfo;
std::atomic<uint8_t> debug;
};
}