[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r3559: The Marble folks say calling setPen() can be expensive. So, (vidalia/trunk/src/vidalia/network)



Author: edmanm
Date: 2009-02-19 16:15:24 -0500 (Thu, 19 Feb 2009)
New Revision: 3559

Modified:
   vidalia/trunk/src/vidalia/network/tormapwidget.cpp
Log:

The Marble folks say calling setPen() can be expensive. So, try to
minimize the number of times we need to call it in the foreach() loop.


Modified: vidalia/trunk/src/vidalia/network/tormapwidget.cpp
===================================================================
--- vidalia/trunk/src/vidalia/network/tormapwidget.cpp	2009-02-19 20:51:04 UTC (rev 3558)
+++ vidalia/trunk/src/vidalia/network/tormapwidget.cpp	2009-02-19 21:15:24 UTC (rev 3559)
@@ -271,10 +271,19 @@
 void
 TorMapWidget::customPaint(GeoPainter *painter)
 {
+  bool selected = false;
+
   painter->autoMapQuality();
+  painter->setPen(CIRCUIT_NORMAL_PEN);
 
   foreach (CircuitGeoPath *path, _circuits.values()) {
-    painter->setPen(path->second ? CIRCUIT_SELECTED_PEN : CIRCUIT_NORMAL_PEN);
+    if (! path->second && selected) {
+      painter->setPen(CIRCUIT_NORMAL_PEN);
+      selected = false;
+    } else if (path->second && ! selected) {
+      painter->setPen(CIRCUIT_SELECTED_PEN);
+      selected = true;
+    }
     painter->drawPolyline(path->first);
   }
 }