KeepLastFrameCache.smali
.class public Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;
.super Ljava/lang/Object;
.source "KeepLastFrameCache.java"
# interfaces
.implements Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;
# static fields
.field private static final FRAME_NUMBER_UNSET:I = -0x1
# instance fields
.field private mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mLastFrameNumber:I
# direct methods
.method public constructor <init>()V
.registers 2
.line 21
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, -0x1
.line 25
iput v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
return-void
.end method
.method private declared-synchronized closeAndResetLastBitmapReference()V
.registers 4
monitor-enter p0
.line 106
:try_start_1
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
const/4 v1, -0x1
if-eqz v0, :cond_d
iget v2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
if-eq v2, v1, :cond_d
.line 107
invoke-interface {v0, p0, v2}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameEvicted(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 109
:cond_d
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {v0}, Lcom/facebook/common/references/CloseableReference;->closeSafely(Lcom/facebook/common/references/CloseableReference;)V
const/4 v0, 0x0
.line 110
iput-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.line 111
iput v1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
:try_end_17
.catchall {:try_start_1 .. :try_end_17} :catchall_19
.line 112
monitor-exit p0
return-void
:catchall_19
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method public declared-synchronized clear()V
.registers 2
monitor-enter p0
.line 70
:try_start_1
invoke-direct {p0}, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->closeAndResetLastBitmapReference()V
:try_end_4
.catchall {:try_start_1 .. :try_end_4} :catchall_6
.line 71
monitor-exit p0
return-void
:catchall_6
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized contains(I)Z
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"frameNumber"
}
.end annotation
monitor-enter p0
.line 60
:try_start_1
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
if-ne p1, v0, :cond_f
iget-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {p1}, Lcom/facebook/common/references/CloseableReference;->isValid(Lcom/facebook/common/references/CloseableReference;)Z
move-result p1
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_12
if-eqz p1, :cond_f
const/4 p1, 0x1
goto :goto_10
:cond_f
const/4 p1, 0x0
:goto_10
monitor-exit p0
return p1
:catchall_12
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getBitmapToReuseForFrame(III)Lcom/facebook/common/references/CloseableReference;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"frameNumber",
"width",
"height"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(III)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
.line 52
:try_start_1
iget-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {p1}, Lcom/facebook/common/references/CloseableReference;->cloneOrNull(Lcom/facebook/common/references/CloseableReference;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_c
.line 54
:try_start_7
invoke-direct {p0}, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->closeAndResetLastBitmapReference()V
:try_end_a
.catchall {:try_start_7 .. :try_end_a} :catchall_11
.line 52
monitor-exit p0
return-object p1
:catchall_c
move-exception p1
.line 54
:try_start_d
invoke-direct {p0}, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->closeAndResetLastBitmapReference()V
.line 55
throw p1
:try_end_11
.catchall {:try_start_d .. :try_end_11} :catchall_11
:catchall_11
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getCachedFrame(I)Lcom/facebook/common/references/CloseableReference;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"frameNumber"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
.line 36
:try_start_1
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
if-ne v0, p1, :cond_d
.line 37
iget-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {p1}, Lcom/facebook/common/references/CloseableReference;->cloneOrNull(Lcom/facebook/common/references/CloseableReference;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_10
monitor-exit p0
return-object p1
:cond_d
const/4 p1, 0x0
.line 39
monitor-exit p0
return-object p1
:catchall_10
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getFallbackFrame(I)Lcom/facebook/common/references/CloseableReference;
.registers 2
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"frameNumber"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
.line 45
:try_start_1
iget-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {p1}, Lcom/facebook/common/references/CloseableReference;->cloneOrNull(Lcom/facebook/common/references/CloseableReference;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_9
monitor-exit p0
return-object p1
:catchall_9
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getSizeInBytes()I
.registers 2
monitor-enter p0
.line 65
:try_start_1
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
if-nez v0, :cond_7
const/4 v0, 0x0
goto :goto_11
:cond_7
invoke-virtual {v0}, Lcom/facebook/common/references/CloseableReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/graphics/Bitmap;
invoke-static {v0}, Lcom/facebook/imageutils/BitmapUtil;->getSizeInBytes(Landroid/graphics/Bitmap;)I
move-result v0
:try_end_11
.catchall {:try_start_1 .. :try_end_11} :catchall_13
:goto_11
monitor-exit p0
return v0
:catchall_13
move-exception v0
monitor-exit p0
throw v0
.end method
.method public onFramePrepared(ILcom/facebook/common/references/CloseableReference;I)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"frameNumber",
"bitmapReference",
"frameType"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;I)V"
}
.end annotation
return-void
.end method
.method public declared-synchronized onFrameRendered(ILcom/facebook/common/references/CloseableReference;I)V
.registers 6
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"frameNumber",
"bitmapReference",
"frameType"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;I)V"
}
.end annotation
monitor-enter p0
if-eqz p2, :cond_1b
.line 78
:try_start_3
iget-object p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
if-eqz p3, :cond_1b
.line 80
invoke-virtual {p2}, Lcom/facebook/common/references/CloseableReference;->get()Ljava/lang/Object;
move-result-object p3
check-cast p3, Landroid/graphics/Bitmap;
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-virtual {v0}, Lcom/facebook/common/references/CloseableReference;->get()Ljava/lang/Object;
move-result-object v0
invoke-virtual {p3, v0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result p3
:try_end_17
.catchall {:try_start_3 .. :try_end_17} :catchall_3d
if-eqz p3, :cond_1b
.line 81
monitor-exit p0
return-void
.line 83
:cond_1b
:try_start_1b
iget-object p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
invoke-static {p3}, Lcom/facebook/common/references/CloseableReference;->closeSafely(Lcom/facebook/common/references/CloseableReference;)V
.line 84
iget-object p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
if-eqz p3, :cond_2c
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
const/4 v1, -0x1
if-eq v0, v1, :cond_2c
.line 85
invoke-interface {p3, p0, v0}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameEvicted(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 87
:cond_2c
invoke-static {p2}, Lcom/facebook/common/references/CloseableReference;->cloneOrNull(Lcom/facebook/common/references/CloseableReference;)Lcom/facebook/common/references/CloseableReference;
move-result-object p2
iput-object p2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.line 88
iget-object p2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
if-eqz p2, :cond_39
.line 89
invoke-interface {p2, p0, p1}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameCached(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 91
:cond_39
iput p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
:try_end_3b
.catchall {:try_start_1b .. :try_end_3b} :catchall_3d
.line 92
monitor-exit p0
return-void
:catchall_3d
move-exception p1
monitor-exit p0
throw p1
.end method
.method public setFrameCacheListener(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;)V
.registers 2
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"frameCacheListener"
}
.end annotation
.line 102
iput-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
return-void
.end method