summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-11-19 05:23:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-11-19 05:23:53 +0000
commitee135b64efdf5442b5f61c7e269405eded1f620a (patch)
treef01331dc924fc0893213dd3a15cd892f4d35f84b
parent915d363e63abf167bd961234c5022837f1be0f83 (diff)
parentb4f51b5d817e1e85e3669622e07596b3cc265350 (diff)
Merge "Only use ALLOCATOR_DEFAULT when apps target Q."
-rw-r--r--core/java/android/content/ContentResolver.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 4de1dfcc12ba..949cdd6878c0 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -42,6 +42,7 @@ import android.graphics.ImageDecoder.Source;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.DeadObjectException;
@@ -3243,8 +3244,18 @@ public abstract class ContentResolver {
Objects.requireNonNull(uri);
Objects.requireNonNull(size);
+ // Older apps might be relying on mutable results, so only consider
+ // giving them hardware bitmaps once they target Q or higher. If modern
+ // apps need mutable thumbnails, they can always roll their own logic.
+ final int allocator;
+ if (getTargetSdkVersion() >= Build.VERSION_CODES.Q) {
+ allocator = ImageDecoder.ALLOCATOR_DEFAULT;
+ } else {
+ allocator = ImageDecoder.ALLOCATOR_SOFTWARE;
+ }
+
try (ContentProviderClient client = acquireContentProviderClient(uri)) {
- return loadThumbnail(client, uri, size, signal, ImageDecoder.ALLOCATOR_DEFAULT);
+ return loadThumbnail(client, uri, size, signal, allocator);
}
}