aboutsummaryrefslogtreecommitdiff
path: root/library
diff options
context:
space:
mode:
authorSam Judd <judds@google.com>2014-07-09 21:36:12 -0700
committerSam Judd <judds@google.com>2014-07-09 21:36:12 -0700
commitce5bd7fa20a673612e8ba3cb5257c1ce533bd758 (patch)
tree47e70ac594d824a635504d1472f5eb1e7b417e6b /library
parenta23b64f5872138b0a5fa4c95be5dcf3f6f0942d8 (diff)
downloadglide-ce5bd7fa20a673612e8ba3cb5257c1ce533bd758.tar.gz
Avoid unnecessary get() calls.
Diffstat (limited to 'library')
-rw-r--r--library/src/main/java/com/bumptech/glide/load/engine/Engine.java5
-rw-r--r--library/src/main/java/com/bumptech/glide/load/resource/gif/GifFrameManager.java8
-rw-r--r--library/src/main/java/com/bumptech/glide/request/GenericRequest.java11
-rw-r--r--library/src/test/java/com/bumptech/glide/load/resource/gif/GifFrameManagerTest.java19
-rw-r--r--library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java19
5 files changed, 50 insertions, 12 deletions
diff --git a/library/src/main/java/com/bumptech/glide/load/engine/Engine.java b/library/src/main/java/com/bumptech/glide/load/engine/Engine.java
index 117883ab..ce6d2b83 100644
--- a/library/src/main/java/com/bumptech/glide/load/engine/Engine.java
+++ b/library/src/main/java/com/bumptech/glide/load/engine/Engine.java
@@ -222,13 +222,11 @@ public class Engine implements EngineJobListener, MemoryCache.ResourceRemovedLis
}
private static class ResourceWeakReference extends WeakReference<Resource> {
- private final Object resource;
private final Key key;
public ResourceWeakReference(Key key, Resource r, ReferenceQueue<? super Resource> q) {
super(r, q);
this.key = key;
- resource = r.get();
}
}
@@ -247,9 +245,6 @@ public class Engine implements EngineJobListener, MemoryCache.ResourceRemovedLis
ResourceWeakReference ref = (ResourceWeakReference) queue.poll();
if (ref != null) {
activeResources.remove(ref.key);
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Maybe leaked a resource: " + ref.resource);
- }
}
return true;
diff --git a/library/src/main/java/com/bumptech/glide/load/resource/gif/GifFrameManager.java b/library/src/main/java/com/bumptech/glide/load/resource/gif/GifFrameManager.java
index 51018fad..fb6a6595 100644
--- a/library/src/main/java/com/bumptech/glide/load/resource/gif/GifFrameManager.java
+++ b/library/src/main/java/com/bumptech/glide/load/resource/gif/GifFrameManager.java
@@ -67,13 +67,15 @@ class GifFrameManager {
frameResourceDecoder = new GifFrameResourceDecoder(bitmapPool);
sourceEncoder = NullEncoder.get();
+ if (transformation == null) {
+ throw new NullPointerException("Transformation must not be null");
+ }
+
if (!decoder.isTransparent()) {
// For non transparent gifs, we can beat the performance of our gif decoder for each frame by decoding jpegs
// from disk.
-
- //TODO:
cacheDecoder = new FileToStreamDecoder<Bitmap>(new StreamBitmapDecoder(context));
- encoder = new BitmapEncoder(Bitmap.CompressFormat.JPEG, 70);
+ encoder = new BitmapEncoder();
} else {
// For transparent gifs, we would have to encode as pngs which is actually slower than our gif decoder so we
// avoid writing frames to the disk cache entirely.
diff --git a/library/src/main/java/com/bumptech/glide/request/GenericRequest.java b/library/src/main/java/com/bumptech/glide/request/GenericRequest.java
index 6a05c48b..ec97e5a5 100644
--- a/library/src/main/java/com/bumptech/glide/request/GenericRequest.java
+++ b/library/src/main/java/com/bumptech/glide/request/GenericRequest.java
@@ -205,6 +205,10 @@ public final class GenericRequest<A, T, Z, R> implements Request, Target.SizeRea
if (loadProvider.getSourceEncoder() == null) {
throw new NullPointerException("SourceEncoder must not be null, try .sourceEncoder(Encoder)");
}
+ if (transformation == null) {
+ throw new NullPointerException("Transformation must not be null, try .transform(UnitTransformation"
+ + ".get())");
+ }
}
}
@@ -391,15 +395,16 @@ public final class GenericRequest<A, T, Z, R> implements Request, Target.SizeRea
resource.release();
return;
}
- if (resource == null || !transcodeClass.isAssignableFrom(resource.get().getClass())) {
+ Object received = resource != null ? resource.get() : null;
+ if (resource == null || !transcodeClass.isAssignableFrom(received.getClass())) {
if (resource != null) {
resource.release();
}
onException(new Exception("Expected to receive an object of " + transcodeClass + " but instead got "
- + (resource != null ? resource.get() : null)));
+ + received));
return;
}
- R result = (R) resource.get();
+ R result = (R) received;
if (requestListener == null || !requestListener.onResourceReady(result, model, target, loadedFromMemoryCache,
isFirstImage())) {
diff --git a/library/src/test/java/com/bumptech/glide/load/resource/gif/GifFrameManagerTest.java b/library/src/test/java/com/bumptech/glide/load/resource/gif/GifFrameManagerTest.java
new file mode 100644
index 00000000..fecf2160
--- /dev/null
+++ b/library/src/test/java/com/bumptech/glide/load/resource/gif/GifFrameManagerTest.java
@@ -0,0 +1,19 @@
+package com.bumptech.glide.load.resource.gif;
+
+import com.bumptech.glide.gifdecoder.GifDecoder;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+import static org.mockito.Mockito.mock;
+
+@RunWith(RobolectricTestRunner.class)
+public class GifFrameManagerTest {
+
+ @Test(expected = NullPointerException.class)
+ public void testThrowsIfTransformationIsNull() {
+ new GifFrameManager(Robolectric.application, mock(GifDecoder.class), null, 100, 100);
+ }
+} \ No newline at end of file
diff --git a/library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java b/library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java
index ae1afe3d..ca5cadfb 100644
--- a/library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java
+++ b/library/src/test/java/com/bumptech/glide/request/GenericRequestTest.java
@@ -64,6 +64,7 @@ public class GenericRequestTest {
int placeholderResourceId = 0;
Drawable placeholderDrawable = null;
int errorResourceId = 0;
+ Transformation transformation = mock(Transformation.class);
Drawable errorDrawable = null;
LoadProvider<Object, Object, Object, Object> loadProvider = mock(LoadProvider.class);
ResourceDecoder<File, Object> cacheDecoder = mock(ResourceDecoder.class);
@@ -107,7 +108,7 @@ public class GenericRequestTest {
requestListener,
requestCoordinator,
engine,
- mock(Transformation.class),
+ transformation,
Object.class,
skipMemoryCache,
factory,
@@ -164,6 +165,13 @@ public class GenericRequestTest {
harness.getRequest();
}
+ @Test(expected = NullPointerException.class)
+ public void testThrowsWhenTransformationIsNull() {
+ harness.transformation = null;
+
+ harness.getRequest();
+ }
+
@Test
public void testIsNotCompleteBeforeReceivingResource() {
GenericRequest request = harness.getRequest();
@@ -631,6 +639,15 @@ public class GenericRequestTest {
any(GlideAnimation.class));
}
+ @Test
+ public void testResourceOnlyReceivesOneGetOnResourceReady() {
+ GenericRequest<Object, Object, Object, Object> request = harness.getRequest();
+ request.onResourceReady(harness.resource);
+
+ verify(harness.resource, times(1)).get();
+ }
+
+
private static class CallResourceCallback implements Answer {
private Resource resource;