Browse Source

Merge pull request #999 from lioncash/map

gl_rasterizer_cache: Avoid iterator invalidation issues within InvalidateRegion()
nce_cpp
bunnei 7 years ago
committed by GitHub
parent
commit
d8474a2fd3
  1. 6
      src/video_core/renderer_opengl/gl_rasterizer_cache.cpp

6
src/video_core/renderer_opengl/gl_rasterizer_cache.cpp

@ -761,10 +761,12 @@ void RasterizerCacheOpenGL::FlushRegion(Tegra::GPUVAddr /*addr*/, size_t /*size*
}
void RasterizerCacheOpenGL::InvalidateRegion(Tegra::GPUVAddr addr, size_t size) {
for (const auto& pair : surface_cache) {
const auto& surface{pair.second};
for (auto iter = surface_cache.cbegin(); iter != surface_cache.cend();) {
const auto& surface{iter->second};
const auto& params{surface->GetSurfaceParams()};
++iter;
if (params.IsOverlappingRegion(addr, size)) {
UnregisterSurface(surface);
}

Loading…
Cancel
Save