[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