gwaldron/osgearth — pull request #468 by tscottdavis (2014-02-28 16:04:22+00:00)
Title: Topic packager

Improvements to packaging.

Added --min-level and --root-key options. I've found these useful for dividing a large database into smaller sets to be packaged. --bounds can be used also but using keys can sometimes be easier. --min-level allows for the lowest lods to be packaged, and then packager the higher lods in chunks.

Added timing code to time overall processing by osgearth_packager as this is useful knowledge. Also dumped the timing of individual layers to OE_NOTICE rather than just OE_DEBUG.

Timing results are converted to HMS to better understand the long running process. The toHMS code exits in two places at the moment. It needs a better home.

Added support for maxDataLevel and determining the max data level supported by the source. This prevents the max level being 99 if a max level has not be set by the user as a cmd line arg or layer property.

Readded support for not dividing single color tiles. This lead to a alot of rework of the algorithm. Converted from recursion to iteration. Moved checks to determine if a tile is to be generated into the tasks. Made subdividing tiles and its logic a separate method. No estimate for number of tiles to process is made.

Added optional limiting for number of tasks in the task queue. This was done to prevent excessive build up of tasks.

Added a semaphore class to ThreadingUtils used in task limiting and checking for complete tasks. This allows for a clean api, i.e acquire/release, but seems a bit awkward with a semaphore built on a condition variable built on a semaphore.

The code is functional, but still appears to have memory exhaustion potential. Needs a good code review.