diff options
| author | 2018-11-19 05:23:53 +0000 | |
|---|---|---|
| committer | 2018-11-19 05:23:53 +0000 | |
| commit | ee135b64efdf5442b5f61c7e269405eded1f620a (patch) | |
| tree | f01331dc924fc0893213dd3a15cd892f4d35f84b | |
| parent | 915d363e63abf167bd961234c5022837f1be0f83 (diff) | |
| parent | b4f51b5d817e1e85e3669622e07596b3cc265350 (diff) | |
Merge "Only use ALLOCATOR_DEFAULT when apps target Q."
| -rw-r--r-- | core/java/android/content/ContentResolver.java | 13 |
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); } } |