Fix the observer effect in Images Flipper plugin (encoded cache)

Reviewed By: oprisnik

Differential Revision: D31897870

fbshipit-source-id: bdd70d1679029931339ee589c98114f51646cb68
This commit is contained in:
Artem Kholodnyi
2021-10-25 10:10:20 -07:00
committed by Facebook GitHub Bot
parent ef8557b5a1
commit 72b652fb87

View File

@@ -229,16 +229,12 @@ public class FrescoFlipperPlugin extends BufferingFlipperPlugin
}
// try to load from encoded cache
CloseableReference<PooledByteBuffer> encodedRef =
imagePipelineFactory.getEncodedCountingMemoryCache().get(cacheKey);
try {
if (encodedRef != null) {
loadFromEncodedCache(encodedRef, imageId, cacheKey, responder);
mPerfLogger.endMarker("Sonar.Fresco.getImage");
return;
}
} finally {
CloseableReference.closeSafely(encodedRef);
PooledByteBuffer encoded =
imagePipelineFactory.getEncodedCountingMemoryCache().inspect(cacheKey);
if (encoded != null) {
loadFromEncodedCache(encoded, imageId, cacheKey, responder);
mPerfLogger.endMarker("Sonar.Fresco.getImage");
return;
}
// try to load from disk
@@ -262,13 +258,12 @@ public class FrescoFlipperPlugin extends BufferingFlipperPlugin
}
private void loadFromEncodedCache(
final CloseableReference<PooledByteBuffer> encodedRef,
final PooledByteBuffer encoded,
final String imageId,
final CacheKey cacheKey,
final FlipperResponder responder)
throws Exception {
byte[] encodedArray =
ByteStreams.toByteArray(new PooledByteBufferInputStream(encodedRef.get()));
byte[] encodedArray = ByteStreams.toByteArray(new PooledByteBufferInputStream(encoded));
Pair<Integer, Integer> dimensions = BitmapUtil.decodeDimensions(encodedArray);
if (dimensions == null) {
respondError(responder, "can not get dimensions withId=" + imageId);