[FOSS-GPS] FoxtrotGPS paint-optimize branch
Sander van Grieken
sander at 3v8.net
Thu May 13 08:21:40 EDT 2010
Hi All,
Before the clash with Marcus Bauer and the forking of FoxtrotGPS I had worked on improving
the graphics routines. These improvements were coded against Tango 0.99.2 and were
noticably faster on my freerunner, although some regressions were still present. My
patches were never reviewed or merged, and instead Marcus implemented another (more crude
IMO) caching mechanism and released 0.99.3, from which FoxtrotGPS was forked. So in the
past weeks I have worked on rebasing my patches against the FoxtrotGPS code base.
I have put online a bazaar branch at
http://www.outrightsolutions.nl/~sander/foxtrotgps/paint-optimize
So far I have only merged half of my patches. Since I want to iron out all regressions
before going further, I decided to not optimize too many things too soon, so the branch
right now only contains the groundwork. I think it isn't faster yet than trunk, but it
shouldn't be slower either. Also some rendering glitches from trunk are fixed, but
possibly new ones are introduced.
What has been done?
- I separated the backing pixmap from the view. This has many advantages. Old TangoGPS had
to redraw the entire backing pixmap after each drag/map move. Also when dragging
down+right you see immediately white background appearing in the top left.
- Now with the separation of the backing pixmap, only a (partial) redraw is needed when
the view rolls over to a new tile column or row.
- Dragging the map now shows less often the ugly white background. Right now the
'overscan' is 1 tile, but that can be changed later to preload even more overscan, memory
permitting.
Things still to do
- Asynchronously painting on the backing pixmap (e.g. while downloading tiles, they get
rendered as soon as they arrive). This can make the UI more responsive, and feel more like
a webbrowser does for maps.
- optimize rerendering of individual tiles on the backing pixmap, instead of the whole
pixmap. Especially with tracks loaded with may points, or many friends visible on the
screen this can have nice speedups.
- improve rendering of 'overlays'. they don't like to be drawn on top of eachother.
If you are able & willing, please compile & test!
Feedback very welcome!
grtz,
Sander
More information about the FOSS-GPS
mailing list