KeepLastFrameCache.smali
.class public Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;
.super Ljava/lang/Object;
.source "SourceFile"
# 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;
.field private mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
.end field
.field private mLastFrameNumber:I
# direct methods
.method public constructor <init>()V
.registers 2
.line 20
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, -0x1
.line 24
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 111
: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_11
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
if-eq v0, v1, :cond_11
.line 112
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
iget v2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
invoke-interface {v0, p0, v2}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameEvicted(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 114
:cond_11
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 115
iput-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.line 116
iput v1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
:try_end_1b
.catchall {:try_start_1 .. :try_end_1b} :catchall_1d
.line 117
monitor-exit p0
return-void
:catchall_1d
move-exception v0
monitor-exit p0
throw v0
.end method
# virtual methods
.method public declared-synchronized clear()V
.registers 2
monitor-enter p0
.line 74
: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 75
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
monitor-enter p0
.line 62
:try_start_1
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
if-ne p1, v0, :cond_10
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_10
const/4 p1, 0x1
:goto_e
monitor-exit p0
return p1
:cond_10
const/4 p1, 0x0
goto :goto_e
:catchall_12
move-exception p1
monitor-exit p0
goto :goto_16
:goto_15
throw p1
:goto_16
goto :goto_15
.end method
.method public declared-synchronized getBitmapToReuseForFrame(III)Lcom/facebook/common/references/CloseableReference;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(III)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.end annotation
monitor-enter p0
.line 54
: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 56
: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 54
monitor-exit p0
return-object p1
:catchall_c
move-exception p1
.line 56
:try_start_d
invoke-direct {p0}, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->closeAndResetLastBitmapReference()V
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/Signature;
value = {
"(I)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.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/Signature;
value = {
"(I)",
"Lcom/facebook/common/references/CloseableReference<",
"Landroid/graphics/Bitmap;",
">;"
}
.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 67
:try_start_1
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
:try_end_3
.catchall {:try_start_1 .. :try_end_3} :catchall_16
if-nez v0, :cond_8
const/4 v0, 0x0
monitor-exit p0
return v0
:cond_8
:try_start_8
iget-object v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastBitmapReference:Lcom/facebook/common/references/CloseableReference;
.line 69
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_14
.catchall {:try_start_8 .. :try_end_14} :catchall_16
.line 67
monitor-exit p0
return v0
:catchall_16
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/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 5
.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 82
: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 84
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_43
if-eqz p3, :cond_1b
.line 85
monitor-exit p0
return-void
.line 87
: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 88
iget-object p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
if-eqz p3, :cond_30
iget p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
const/4 v0, -0x1
if-eq p3, v0, :cond_30
.line 89
iget-object p3, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
iget v0, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
invoke-interface {p3, p0, v0}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameEvicted(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 91
:cond_30
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 92
iget-object p2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
if-eqz p2, :cond_3f
.line 93
iget-object p2, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
invoke-interface {p2, p0, p1}, Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;->onFrameCached(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache;I)V
.line 95
:cond_3f
iput p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mLastFrameNumber:I
:try_end_41
.catchall {:try_start_1b .. :try_end_41} :catchall_43
.line 96
monitor-exit p0
return-void
:catchall_43
move-exception p1
monitor-exit p0
throw p1
.end method
.method public setFrameCacheListener(Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;)V
.registers 2
.line 107
iput-object p1, p0, Lcom/facebook/fresco/animation/bitmap/cache/KeepLastFrameCache;->mFrameCacheListener:Lcom/facebook/fresco/animation/bitmap/BitmapFrameCache$FrameCacheListener;
return-void
.end method