- long duration_ms = (System.nanoTime() - startTime) / 1000000;
- if (duration_ms < google_maps_ratelimit_ms) {
- try {
- Thread.sleep(google_maps_ratelimit_ms - duration_ms);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ static final int min_cache_size = 9;
+ static final int max_cache_size = 24;
+
+ static int cache_size = min_cache_size;
+
+ static AltosSiteMapImage[] images = new AltosSiteMapImage[cache_size];
+
+ static Object cache_lock = new Object();
+
+ public static void set_cache_size(int new_size) {
+ if (new_size < min_cache_size)
+ new_size = min_cache_size;
+ if (new_size > max_cache_size)
+ new_size = max_cache_size;
+ if (new_size == cache_size)
+ return;
+
+ synchronized(cache_lock) {
+ AltosSiteMapImage[] new_images = new AltosSiteMapImage[new_size];
+
+ for (int i = 0; i < cache_size; i++) {
+ if (i < new_size)
+ new_images[i] = images[i];
+ else
+ images[i].flush();