Skip to content

Commit e8c841c

Browse files
sjuddglide-copybara-robot
authored andcommittedOct 29, 2019
Finalize Glide hardware Bitmap dimension/count limits for P+.
PiperOrigin-RevId: 277184075
1 parent b5a0ed6 commit e8c841c

File tree

4 files changed

+37
-36
lines changed

4 files changed

+37
-36
lines changed
 

‎library/src/main/java/com/bumptech/glide/Glide.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,7 @@ private static void throwIncorrectGlideModule(Exception e) {
360360
@NonNull Map<Class<?>, TransitionOptions<?, ?>> defaultTransitionOptions,
361361
@NonNull List<RequestListener<Object>> defaultRequestListeners,
362362
boolean isLoggingRequestOriginsEnabled,
363-
boolean isImageDecoderEnabledForBitmaps,
364-
int hardwareBitmapFdLimit,
365-
int minHardwareDimension) {
363+
boolean isImageDecoderEnabledForBitmaps) {
366364
this.engine = engine;
367365
this.bitmapPool = bitmapPool;
368366
this.arrayPool = arrayPool;

‎library/src/main/java/com/bumptech/glide/GlideBuilder.java

+1-7
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.bumptech.glide.load.engine.cache.MemoryCache;
2323
import com.bumptech.glide.load.engine.cache.MemorySizeCalculator;
2424
import com.bumptech.glide.load.engine.executor.GlideExecutor;
25-
import com.bumptech.glide.load.resource.bitmap.HardwareConfigState;
2625
import com.bumptech.glide.manager.ConnectivityMonitorFactory;
2726
import com.bumptech.glide.manager.DefaultConnectivityMonitorFactory;
2827
import com.bumptech.glide.manager.RequestManagerRetriever;
@@ -67,9 +66,6 @@ public RequestOptions build() {
6766

6867
private boolean isImageDecoderEnabledForBitmaps;
6968

70-
private int hardwareBitmapFdLimit = HardwareConfigState.DEFAULT_MAXIMUM_FDS_FOR_HARDWARE_CONFIGS;
71-
private int minHardwareDimension = HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION;
72-
7369
/**
7470
* Sets the {@link com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool} implementation to use
7571
* to store and retrieve reused {@link android.graphics.Bitmap}s.
@@ -578,8 +574,6 @@ Glide build(@NonNull Context context) {
578574
defaultTransitionOptions,
579575
defaultRequestListeners,
580576
isLoggingRequestOriginsEnabled,
581-
isImageDecoderEnabledForBitmaps,
582-
hardwareBitmapFdLimit,
583-
minHardwareDimension);
577+
isImageDecoderEnabledForBitmaps);
584578
}
585579
}

‎library/src/main/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigState.java

+17-8
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public final class HardwareConfigState {
2323
*
2424
* @see #FD_SIZE_LIST
2525
*/
26-
public static final int DEFAULT_MIN_HARDWARE_DIMENSION = 128;
26+
@VisibleForTesting static final int MIN_HARDWARE_DIMENSION_O = 128;
27+
28+
private static final int MIN_HARDWARE_DIMENSION_P = 0;
2729

2830
/**
2931
* Allows us to check to make sure we're not exceeding the FD limit for a process with hardware
@@ -55,14 +57,15 @@ public final class HardwareConfigState {
5557
*
5658
* <p>Access to this variable will be removed in a future version without deprecation.
5759
*/
58-
public static final int DEFAULT_MAXIMUM_FDS_FOR_HARDWARE_CONFIGS = 700;
59-
60-
private static volatile int fdSizeLimit = DEFAULT_MAXIMUM_FDS_FOR_HARDWARE_CONFIGS;
61-
private static volatile int minHardwareDimension = DEFAULT_MIN_HARDWARE_DIMENSION;
60+
private static final int MAXIMUM_FDS_FOR_HARDWARE_CONFIGS_O = 700;
61+
// 20k.
62+
private static final int MAXIMUM_FDS_FOR_HARDWARE_CONFIGS_P = 20000;
6263

6364
private static volatile HardwareConfigState instance;
6465

6566
private final boolean isHardwareConfigAllowedByDeviceModel;
67+
private final int fdCountLimit;
68+
private final int minHardwareDimension;
6669

6770
@GuardedBy("this")
6871
private int decodesSinceLastFdCheck;
@@ -84,7 +87,13 @@ public static HardwareConfigState getInstance() {
8487
@VisibleForTesting
8588
HardwareConfigState() {
8689
isHardwareConfigAllowedByDeviceModel = isHardwareConfigAllowedByDeviceModel();
87-
// Singleton constructor.
90+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
91+
fdCountLimit = MAXIMUM_FDS_FOR_HARDWARE_CONFIGS_P;
92+
minHardwareDimension = MIN_HARDWARE_DIMENSION_P;
93+
} else {
94+
fdCountLimit = MAXIMUM_FDS_FOR_HARDWARE_CONFIGS_O;
95+
minHardwareDimension = MIN_HARDWARE_DIMENSION_O;
96+
}
8897
}
8998

9099
public boolean isHardwareConfigAllowed(
@@ -151,7 +160,7 @@ private synchronized boolean isFdSizeBelowHardwareLimit() {
151160
if (++decodesSinceLastFdCheck >= MINIMUM_DECODES_BETWEEN_FD_CHECKS) {
152161
decodesSinceLastFdCheck = 0;
153162
int currentFds = FD_SIZE_LIST.list().length;
154-
isFdSizeBelowHardwareLimit = currentFds < fdSizeLimit;
163+
isFdSizeBelowHardwareLimit = currentFds < fdCountLimit;
155164

156165
if (!isFdSizeBelowHardwareLimit && Log.isLoggable(Downsampler.TAG, Log.WARN)) {
157166
Log.w(
@@ -160,7 +169,7 @@ private synchronized boolean isFdSizeBelowHardwareLimit() {
160169
+ ", file descriptors "
161170
+ currentFds
162171
+ ", limit "
163-
+ fdSizeLimit);
172+
+ fdCountLimit);
164173
}
165174
}
166175

‎library/test/src/test/java/com/bumptech/glide/load/resource/bitmap/HardwareConfigStateTest.java

+18-18
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ public class HardwareConfigStateTest {
2424
BitmapFactory.Options options = new BitmapFactory.Options();
2525
boolean result =
2626
state.setHardwareConfigIfAllowed(
27-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
28-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
27+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
28+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
2929
options,
3030
/*isHardwareConfigAllowed=*/ true,
3131
/*isExifOrientationRequired=*/ false);
@@ -45,8 +45,8 @@ public void setHardwareConfigIfAllowed_withSmallerThanMinWidth_returnsFalse_does
4545

4646
boolean result =
4747
state.setHardwareConfigIfAllowed(
48-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION - 1,
49-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
48+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O - 1,
49+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
5050
options,
5151
/*isHardwareConfigAllowed=*/ true,
5252
/*isExifOrientationRequired=*/ false);
@@ -66,8 +66,8 @@ public void setHardwareConfigIfAllowed_withSmallerThanMinHeight_returnsFalse_doe
6666

6767
boolean result =
6868
state.setHardwareConfigIfAllowed(
69-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
70-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION - 1,
69+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
70+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O - 1,
7171
options,
7272
/*isHardwareConfigAllowed=*/ true,
7373
/*isExifOrientationRequired=*/ false);
@@ -88,8 +88,8 @@ public void setHardwareConfigIfAllowed_withSmallerThanMinHeight_returnsFalse_doe
8888

8989
boolean result =
9090
state.setHardwareConfigIfAllowed(
91-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
92-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
91+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
92+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
9393
options,
9494
/*isHardwareConfigAllowed=*/ false,
9595
/*isExifOrientationRequired=*/ false);
@@ -110,8 +110,8 @@ public void setHardwareConfigIfAllowed_withSmallerThanMinHeight_returnsFalse_doe
110110

111111
boolean result =
112112
state.setHardwareConfigIfAllowed(
113-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
114-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
113+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
114+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
115115
options,
116116
/*isHardwareConfigAllowed=*/ true,
117117
/*isExifOrientationRequired=*/ true);
@@ -131,8 +131,8 @@ public void setHardwareConfigIfAllowed_withOsLessThanO_returnsFalse_doesNotSetVa
131131

132132
boolean result =
133133
state.setHardwareConfigIfAllowed(
134-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
135-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
134+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
135+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
136136
options,
137137
/*isHardwareConfigAllowed=*/ true,
138138
/*isExifOrientationRequired=*/ false);
@@ -158,8 +158,8 @@ public void setHardwareConfigIfAllowed_withOsLessThanO_returnsFalse_doesNotSetVa
158158

159159
boolean result =
160160
state.setHardwareConfigIfAllowed(
161-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
162-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
161+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
162+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
163163
options,
164164
/*isHardwareConfigAllowed=*/ true,
165165
/*isExifOrientationRequired=*/ false);
@@ -185,8 +185,8 @@ public void setHardwareConfigIfAllowed_withDisallowedSamsungDevices_OMR1_returns
185185

186186
boolean result =
187187
state.setHardwareConfigIfAllowed(
188-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
189-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
188+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
189+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
190190
options,
191191
/*isHardwareConfigAllowed=*/ true,
192192
/*isExifOrientationRequired=*/ false);
@@ -212,8 +212,8 @@ public void setHardwareConfigIfAllowed_withShortEmptyOrNullModelNames_returnsTru
212212

213213
boolean result =
214214
state.setHardwareConfigIfAllowed(
215-
/*targetWidth=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
216-
/*targetHeight=*/ HardwareConfigState.DEFAULT_MIN_HARDWARE_DIMENSION,
215+
/*targetWidth=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
216+
/*targetHeight=*/ HardwareConfigState.MIN_HARDWARE_DIMENSION_O,
217217
options,
218218
/*isHardwareConfigAllowed=*/ true,
219219
/*isExifOrientationRequired=*/ false);

0 commit comments

Comments
 (0)
Please sign in to comment.