diff options
-rw-r--r-- | src/main_gui.cpp | 14 | ||||
-rw-r--r-- | src/viewport.cpp | 22 |
2 files changed, 22 insertions, 14 deletions
diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 350439ce1..9d13deef6 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -253,11 +253,17 @@ struct MainWindow : Window virtual void OnTick() { - if (--refresh == 0) { - this->viewport->overlay->RebuildCache(); - this->GetWidget<NWidgetBase>(WID_M_VIEWPORT)->SetDirty(this); - this->refresh = LINKGRAPH_REFRESH_PERIOD; + if (--this->refresh > 0) return; + + this->refresh = LINKGRAPH_REFRESH_PERIOD; + + if (this->viewport->overlay->GetCargoMask() == 0 || + this->viewport->overlay->GetCompanyMask() == 0) { + return; } + + this->viewport->overlay->RebuildCache(); + this->GetWidget<NWidgetBase>(WID_M_VIEWPORT)->SetDirty(this); } virtual void OnPaint() diff --git a/src/viewport.cpp b/src/viewport.cpp index b80882270..c3ccea873 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1477,17 +1477,19 @@ void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom dp.height = UnScaleByZoom(dp.height, zoom); _cur_dpi = &dp; - /* translate to window coordinates */ - dp.left = x; - dp.top = y; - - if (vp->overlay != NULL) vp->overlay->Draw(&dp); - - /* translate back to world coordinates */ - dp.left = UnScaleByZoom(_vd.dpi.left, zoom); - dp.top = UnScaleByZoom(_vd.dpi.top, zoom); + if (vp->overlay != NULL && vp->overlay->GetCargoMask() != 0 && vp->overlay->GetCompanyMask() != 0) { + /* translate to window coordinates */ + dp.left = x; + dp.top = y; + vp->overlay->Draw(&dp); + } - if (_vd.string_sprites_to_draw.Length() != 0) ViewportDrawStrings(zoom, &_vd.string_sprites_to_draw); + if (_vd.string_sprites_to_draw.Length() != 0) { + /* translate to world coordinates */ + dp.left = UnScaleByZoom(_vd.dpi.left, zoom); + dp.top = UnScaleByZoom(_vd.dpi.top, zoom); + ViewportDrawStrings(zoom, &_vd.string_sprites_to_draw); + } _cur_dpi = old_dpi; |