summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Luc Beaudoin <pierre-luc@pierlux.com>2010-01-16 15:35:01 -0500
committerPierre-Luc Beaudoin <pierre-luc@pierlux.com>2010-01-16 15:42:02 -0500
commit2b5640543b18036118420d69dc97dd91b9fb4bd0 (patch)
tree327aafcf7eb3727f30a3eeb4f56d39053b17afd5
parente6b1e896f6f53c5527c13a2d309446cf637b9502 (diff)
downloadlibchamplain-2b5640543b18036118420d69dc97dd91b9fb4bd0.tar.gz
Don't redraw the scale so often
-rw-r--r--champlain/champlain-view.c8
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 */