summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main_gui.cpp14
-rw-r--r--src/viewport.cpp22
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;