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