Track expression dependencies (#2113)
This commit is contained in:
@@ -4,9 +4,42 @@
|
||||
#include <mbgl/storage/file_source.hpp>
|
||||
#include <mbgl/style/style_impl.hpp>
|
||||
#include <mbgl/util/exception.hpp>
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mbgl/util/traits.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
namespace {
|
||||
void logStyleDependencies(EventSeverity severity, Event event, const style::Style& style) {
|
||||
using Dependency = style::expression::Dependency;
|
||||
constexpr auto maskCount = underlying_type(Dependency::MaskCount);
|
||||
std::array<std::size_t, maskCount + 1> counts = {0};
|
||||
const auto layers = style.getLayers();
|
||||
for (const auto& layer : layers) {
|
||||
const auto deps = layer->getDependencies();
|
||||
if (deps == Dependency::None) {
|
||||
counts[0]++;
|
||||
} else {
|
||||
for (size_t i = 0; i < maskCount; ++i) {
|
||||
const auto mask = Dependency{1u << i};
|
||||
if ((deps & mask) == mask) {
|
||||
counts[i + 1]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
std::ostringstream ss;
|
||||
ss << "Style '" << style.getName() << "' has " << layers.size() << " layers:\n";
|
||||
ss << " " << Dependency::None << ": " << counts[0] << "\n";
|
||||
for (size_t i = 0; i < maskCount; ++i) {
|
||||
ss << " " << Dependency{1u << i} << ": " << counts[i + 1] << "\n";
|
||||
}
|
||||
Log::Record(severity, event, ss.str());
|
||||
}
|
||||
} // namespace
|
||||
#endif
|
||||
|
||||
Map::Impl::Impl(RendererFrontend& frontend_,
|
||||
MapObserver& observer_,
|
||||
std::shared_ptr<FileSource> fileSource_,
|
||||
@@ -84,6 +117,10 @@ void Map::Impl::onStyleLoaded() {
|
||||
annotationManager.onStyleLoaded();
|
||||
}
|
||||
observer.onDidFinishLoadingStyle();
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
logStyleDependencies(EventSeverity::Info, Event::Style, *style);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Map::Impl::onStyleError(std::exception_ptr error) {
|
||||
|
||||
Reference in New Issue
Block a user