diff --git a/engine/src/flutter/shell/common/skia_event_tracer_impl.cc b/engine/src/flutter/shell/common/skia_event_tracer_impl.cc index e3120db25a..0f625a001e 100644 --- a/engine/src/flutter/shell/common/skia_event_tracer_impl.cc +++ b/engine/src/flutter/shell/common/skia_event_tracer_impl.cc @@ -274,6 +274,7 @@ class FlutterEventTracer : public SkEventTracer { const uint8_t* getCategoryGroupEnabled(const char* name) override { // Skia will only use long-lived string literals as event names. + std::lock_guard lock(flag_map_mutex_); auto flag_it = category_flag_map_.find(name); if (flag_it == category_flag_map_.end()) { bool allowed; @@ -295,6 +296,7 @@ class FlutterEventTracer : public SkEventTracer { const char* getCategoryGroupName( const uint8_t* category_enabled_flag) override { + std::lock_guard lock(flag_map_mutex_); auto reverse_it = reverse_flag_map_.find(category_enabled_flag); if (reverse_it != reverse_flag_map_.end()) { return reverse_it->second; @@ -306,6 +308,7 @@ class FlutterEventTracer : public SkEventTracer { private: uint8_t enabled_; std::optional> allowlist_; + std::mutex flag_map_mutex_; std::map category_flag_map_; std::map reverse_flag_map_; const uint8_t* shaders_category_flag_; diff --git a/engine/src/flutter/shell/common/skia_event_tracer_impl.h b/engine/src/flutter/shell/common/skia_event_tracer_impl.h index 9154f1fd37..aa5fe23057 100644 --- a/engine/src/flutter/shell/common/skia_event_tracer_impl.h +++ b/engine/src/flutter/shell/common/skia_event_tracer_impl.h @@ -5,6 +5,7 @@ #ifndef FLUTTER_SHELL_COMMON_SKIA_EVENT_TRACER_IMPL_H_ #define FLUTTER_SHELL_COMMON_SKIA_EVENT_TRACER_IMPL_H_ +#include #include #include #include