diff --git a/engine/src/flutter/impeller/renderer/backend/gles/BUILD.gn b/engine/src/flutter/impeller/renderer/backend/gles/BUILD.gn index bede7318a3..f0b53263a4 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/BUILD.gn +++ b/engine/src/flutter/impeller/renderer/backend/gles/BUILD.gn @@ -104,5 +104,6 @@ impeller_component("gles") { "../../:renderer", "../../../shader_archive", "//flutter/fml", + "//flutter/third_party/abseil-cpp/absl/container:flat_hash_map", ] } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/reactor_gles.h b/engine/src/flutter/impeller/renderer/backend/gles/reactor_gles.h index 881e2a9086..09dc092097 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/reactor_gles.h +++ b/engine/src/flutter/impeller/renderer/backend/gles/reactor_gles.h @@ -9,6 +9,7 @@ #include #include +#include "flutter/third_party/abseil-cpp/absl/container/flat_hash_map.h" #include "fml/closure.h" #include "impeller/base/thread.h" #include "impeller/renderer/backend/gles/handle_gles.h" @@ -276,12 +277,10 @@ class ReactorGLES { std::map> ops_ IPLR_GUARDED_BY( ops_mutex_); - // Make sure the container is one where erasing items during iteration doesn't - // invalidate other iterators. - using LiveHandles = std::unordered_map; + using LiveHandles = absl::flat_hash_map; mutable RWMutex handles_mutex_; LiveHandles handles_ IPLR_GUARDED_BY(handles_mutex_); int32_t handles_to_collect_count_ IPLR_GUARDED_BY(handles_mutex_) = 0;