From 68c0fd63dda3e1976578e1cf1aac7af3245d6fb0 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 18 Sep 2023 19:10:58 +0100 Subject: [PATCH] Avoid window iterations when marking viewports dirty --- src/viewport.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/viewport.cpp b/src/viewport.cpp index 71da7d4a1d..8ed6e35eec 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -4266,9 +4266,8 @@ void ViewportRouteOverlay::MarkAllRouteStepsDirty(const Vehicle *veh) */ void MarkAllViewportMapsDirty(int left, int top, int right, int bottom) { - for (Window *w : Window::Iterate()) { - Viewport *vp = w->viewport; - if (vp != nullptr && vp->zoom >= ZOOM_LVL_DRAW_MAP) { + for (Viewport *vp : _viewport_window_cache) { + if (vp->zoom >= ZOOM_LVL_DRAW_MAP) { MarkViewportDirty(vp, left, top, right, bottom, VMDF_NOT_LANDSCAPE); } } @@ -4302,9 +4301,8 @@ void MarkWholeNonMapViewportsDirty() */ void MarkAllViewportOverlayStationLinksDirty(const Station *st) { - for (Window *w : Window::Iterate()) { - Viewport *vp = w->viewport; - if (vp != nullptr && vp->overlay != nullptr) { + for (Viewport *vp : _viewport_window_cache) { + if (vp->overlay != nullptr) { vp->overlay->MarkStationViewportLinksDirty(st); } }