Track expression dependencies (#2113)

This commit is contained in:
Tim Sylvester
2024-03-07 10:36:50 -08:00
committed by GitHub
parent 9614b566d8
commit 25678a4d99
105 changed files with 1082 additions and 339 deletions

View File

@@ -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) {