From d43d1bcbfea7e3bcac977f8063b968d7e04cbc5c Mon Sep 17 00:00:00 2001 From: Lander Gallastegi Date: Sat, 14 Jun 2025 19:33:05 +0200 Subject: [PATCH] Lock during callbacks --- src/video_core/buffer_cache/region_manager.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/video_core/buffer_cache/region_manager.h b/src/video_core/buffer_cache/region_manager.h index 50cc1c988..d51e9081a 100644 --- a/src/video_core/buffer_cache/region_manager.h +++ b/src/video_core/buffer_cache/region_manager.h @@ -130,19 +130,15 @@ public: } mask &= bits; + for (const auto& [start, end] : mask) { + func(cpu_addr + start * BYTES_PER_PAGE, (end - start) * BYTES_PER_PAGE); + } + if constexpr (clear) { bits.UnsetRange(start_page, end_page); if constexpr (type == Type::CPU) { UpdateProtection(std::move(lk)); - } else { - lk.unlock(); } - } else { - lk.unlock(); - } - - for (const auto& [start, end] : mask) { - func(cpu_addr + start * BYTES_PER_PAGE, (end - start) * BYTES_PER_PAGE); } }