diff options
author | Pierre-Luc Beaudoin <pierre-luc@pierlux.com> | 2010-01-16 15:35:01 -0500 |
---|---|---|
committer | Pierre-Luc Beaudoin <pierre-luc@pierlux.com> | 2010-01-16 15:42:02 -0500 |
commit | 2b5640543b18036118420d69dc97dd91b9fb4bd0 (patch) | |
tree | 327aafcf7eb3727f30a3eeb4f56d39053b17afd5 | |
parent | e6b1e896f6f53c5527c13a2d309446cf637b9502 (diff) | |
download | libchamplain-2b5640543b18036118420d69dc97dd91b9fb4bd0.tar.gz |
Don't redraw the scale so often
-rw-r--r-- | champlain/champlain-view.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c index c8c36d2..fee49ae 100644 --- a/champlain/champlain-view.c +++ b/champlain/champlain-view.c @@ -1161,6 +1161,7 @@ static void update_scale (ChamplainView *view) { static gfloat previous_m_per_pixel = 0.0; + static gint previous_zoom_level = 0.0; gboolean is_small_unit = TRUE; /* indicates if using meters */ ClutterActor *text, *line; @@ -1190,11 +1191,14 @@ update_scale (ChamplainView *view) m_per_pixel = champlain_map_source_get_meters_per_pixel (priv->map_source, priv->zoom_level, priv->latitude, priv->longitude); - /* Don't redraw too often */ - if (fabs (m_per_pixel - previous_m_per_pixel) < 0.01) + /* Don't redraw too often, 1 meters difference is a good value + * since at low levels the value changes alot, and not at high levels */ + if (fabs (m_per_pixel - previous_m_per_pixel) < 10 && + previous_zoom_level == priv->zoom_level) return; previous_m_per_pixel = m_per_pixel; + previous_zoom_level = priv->zoom_level; if (priv->scale_unit == CHAMPLAIN_UNIT_MILES) m_per_pixel *= 3.28; /* m_per_pixel is now in ft */ |