MultiplexProducer.smali
.class public abstract Lcom/facebook/imagepipeline/producers/MultiplexProducer;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/facebook/imagepipeline/producers/Producer;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"T::",
"Ljava/io/Closeable;",
">",
"Ljava/lang/Object;",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;"
}
.end annotation
# instance fields
.field private final mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;"
}
.end annotation
.end field
.field final mMultiplexers:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;>;"
}
.end annotation
.end field
# direct methods
.method protected constructor <init>(Lcom/facebook/imagepipeline/producers/Producer;)V
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;)V"
}
.end annotation
.line 54
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 55
iput-object p1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
.line 56
new-instance p1, Ljava/util/HashMap;
invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
iput-object p1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
return-void
.end method
.method static synthetic access$100(Lcom/facebook/imagepipeline/producers/MultiplexProducer;Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 2
.line 39
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
move-result-object p0
return-object p0
.end method
.method static synthetic access$700(Lcom/facebook/imagepipeline/producers/MultiplexProducer;Ljava/lang/Object;Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
.registers 3
.line 39
invoke-direct {p0, p1, p2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->removeMultiplexer(Ljava/lang/Object;Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
return-void
.end method
.method static synthetic access$900(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Lcom/facebook/imagepipeline/producers/Producer;
.registers 1
.line 39
iget-object p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
return-object p0
.end method
.method private declared-synchronized createAndPutNewMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
monitor-enter p0
.line 101
:try_start_1
new-instance v0, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
invoke-direct {v0, p0, p1}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;-><init>(Lcom/facebook/imagepipeline/producers/MultiplexProducer;Ljava/lang/Object;)V
.line 102
iget-object v1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v1, p1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_d
.line 103
monitor-exit p0
return-object v0
:catchall_d
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
monitor-enter p0
.line 97
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
:try_end_9
.catchall {:try_start_1 .. :try_end_9} :catchall_b
monitor-exit p0
return-object p1
:catchall_b
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized removeMultiplexer(Ljava/lang/Object;Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;)V"
}
.end annotation
monitor-enter p0
.line 107
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-ne v0, p2, :cond_e
.line 108
iget-object p2, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {p2, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
:try_end_e
.catchall {:try_start_1 .. :try_end_e} :catchall_10
.line 110
:cond_e
monitor-exit p0
return-void
:catchall_10
move-exception p1
monitor-exit p0
throw p1
.end method
# virtual methods
.method protected abstract cloneOrNull(Ljava/io/Closeable;)Ljava/io/Closeable;
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)TT;"
}
.end annotation
.end method
.method protected abstract getKey(Lcom/facebook/imagepipeline/producers/ProducerContext;)Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/ProducerContext;",
")TK;"
}
.end annotation
.end method
.method public produceResults(Lcom/facebook/imagepipeline/producers/Consumer;Lcom/facebook/imagepipeline/producers/ProducerContext;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Consumer<",
"TT;>;",
"Lcom/facebook/imagepipeline/producers/ProducerContext;",
")V"
}
.end annotation
.line 62
:try_start_0
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result v0
if-eqz v0, :cond_b
const-string v0, "MultiplexProducer#produceResults"
.line 63
invoke-static {v0}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->beginSection(Ljava/lang/String;)V
.line 65
:cond_b
invoke-virtual {p0, p2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->getKey(Lcom/facebook/imagepipeline/producers/ProducerContext;)Ljava/lang/Object;
move-result-object v0
:cond_f
const/4 v1, 0x0
.line 74
monitor-enter p0
:try_end_11
.catchall {:try_start_0 .. :try_end_11} :catchall_35
.line 75
:try_start_11
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
move-result-object v2
if-nez v2, :cond_1c
.line 77
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->createAndPutNewMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
move-result-object v2
const/4 v1, 0x1
.line 80
:cond_1c
monitor-exit p0
:try_end_1d
.catchall {:try_start_11 .. :try_end_1d} :catchall_32
.line 84
:try_start_1d
invoke-virtual {v2, p1, p2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->addNewConsumer(Lcom/facebook/imagepipeline/producers/Consumer;Lcom/facebook/imagepipeline/producers/ProducerContext;)Z
move-result v3
if-eqz v3, :cond_f
if-eqz v1, :cond_28
.line 87
# invokes: Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->startInputProducerIfHasAttachedConsumers()V
invoke-static {v2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->access$000(Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
:try_end_28
.catchall {:try_start_1d .. :try_end_28} :catchall_35
.line 90
:cond_28
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p1
if-eqz p1, :cond_31
.line 91
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
:cond_31
return-void
:catchall_32
move-exception p1
.line 80
:try_start_33
monitor-exit p0
:try_end_34
.catchall {:try_start_33 .. :try_end_34} :catchall_32
:try_start_34
throw p1
:try_end_35
.catchall {:try_start_34 .. :try_end_35} :catchall_35
:catchall_35
move-exception p1
.line 90
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p2
if-eqz p2, :cond_3f
.line 91
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
:cond_3f
goto :goto_41
:goto_40
throw p1
:goto_41
goto :goto_40
.end method