diff options
| author | 2018-08-09 19:13:27 -0400 | |
|---|---|---|
| committer | 2018-08-09 19:13:27 -0400 | |
| commit | e58f7ff8439ac919d090aafae1c53b78231521c1 (patch) | |
| tree | 4054818d5fa4096173b656aa8a2994c3a2ec0c22 /src/video_core | |
| parent | Merge pull request #992 from bunnei/declr-pred (diff) | |
| parent | gl_rasterizer_cache: Avoid iterator invalidation issues within InvalidateRegi... (diff) | |
| download | yuzu-e58f7ff8439ac919d090aafae1c53b78231521c1.tar.gz yuzu-e58f7ff8439ac919d090aafae1c53b78231521c1.tar.xz yuzu-e58f7ff8439ac919d090aafae1c53b78231521c1.zip | |
Merge pull request #999 from lioncash/map
gl_rasterizer_cache: Avoid iterator invalidation issues within InvalidateRegion()
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 8b6d1b89d..c447e999c 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | |||
| @@ -761,10 +761,12 @@ void RasterizerCacheOpenGL::FlushRegion(Tegra::GPUVAddr /*addr*/, size_t /*size* | |||
| 761 | } | 761 | } |
| 762 | 762 | ||
| 763 | void RasterizerCacheOpenGL::InvalidateRegion(Tegra::GPUVAddr addr, size_t size) { | 763 | void RasterizerCacheOpenGL::InvalidateRegion(Tegra::GPUVAddr addr, size_t size) { |
| 764 | for (const auto& pair : surface_cache) { | 764 | for (auto iter = surface_cache.cbegin(); iter != surface_cache.cend();) { |
| 765 | const auto& surface{pair.second}; | 765 | const auto& surface{iter->second}; |
| 766 | const auto& params{surface->GetSurfaceParams()}; | 766 | const auto& params{surface->GetSurfaceParams()}; |
| 767 | 767 | ||
| 768 | ++iter; | ||
| 769 | |||
| 768 | if (params.IsOverlappingRegion(addr, size)) { | 770 | if (params.IsOverlappingRegion(addr, size)) { |
| 769 | UnregisterSurface(surface); | 771 | UnregisterSurface(surface); |
| 770 | } | 772 | } |