19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.engine.bitmap_recycle; 2d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 3e8b5d67302f343bfa262c8c90fda5145813f292aRobert Pappimport com.bumptech.glide.util.Util; 4d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 5d5ddd93ac507c52f316b094a6740ddb5f122125fSam Juddimport java.util.Queue; 6d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 7d5ddd93ac507c52f316b094a6740ddb5f122125fSam Juddabstract class BaseKeyPool<T extends Poolable> { 8d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd private static final int MAX_SIZE = 20; 9e8b5d67302f343bfa262c8c90fda5145813f292aRobert Papp private final Queue<T> keyPool = Util.createQueue(MAX_SIZE); 10d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 11d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd protected T get() { 12d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd T result = keyPool.poll(); 13d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd if (result == null) { 14d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd result = create(); 15d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd } 16d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd return result; 17d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd } 18d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 19d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd public void offer(T key) { 20d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd if (keyPool.size() < MAX_SIZE) { 21d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd keyPool.offer(key); 22d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd } 23d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd } 24d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd 25d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd protected abstract T create(); 26d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd} 27