HardwareVideoEncoder$BusyCount.smali
.class Lorg/webrtc/HardwareVideoEncoder$BusyCount;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lorg/webrtc/HardwareVideoEncoder;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "BusyCount"
.end annotation
# instance fields
.field private count:I
.field private final countLock:Ljava/lang/Object;
# direct methods
.method private constructor <init>()V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
return-void
.end method
.method public synthetic constructor <init>(Lorg/webrtc/HardwareVideoEncoder$1;)V
.registers 2
.line 3
invoke-direct {p0}, Lorg/webrtc/HardwareVideoEncoder$BusyCount;-><init>()V
return-void
.end method
# virtual methods
.method public decrement()V
.registers 3
.line 1
iget-object v0, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget v1, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->count:I
add-int/lit8 v1, v1, -0x1
iput v1, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->count:I
if-nez v1, :cond_10
.line 3
iget-object v1, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V
.line 4
:cond_10
monitor-exit v0
return-void
:catchall_12
move-exception v1
monitor-exit v0
:try_end_14
.catchall {:try_start_3 .. :try_end_14} :catchall_12
throw v1
.end method
.method public increment()V
.registers 3
.line 1
iget-object v0, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget v1, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->count:I
add-int/lit8 v1, v1, 0x1
iput v1, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->count:I
.line 3
monitor-exit v0
return-void
:catchall_b
move-exception v1
monitor-exit v0
:try_end_d
.catchall {:try_start_3 .. :try_end_d} :catchall_b
throw v1
.end method
.method public waitForZero()V
.registers 5
.line 1
iget-object v0, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
monitor-enter v0
const/4 v1, 0x0
.line 2
:goto_4
:try_start_4
iget v2, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->count:I
:try_end_6
.catchall {:try_start_4 .. :try_end_6} :catchall_23
if-lez v2, :cond_18
.line 3
:try_start_8
iget-object v2, p0, Lorg/webrtc/HardwareVideoEncoder$BusyCount;->countLock:Ljava/lang/Object;
invoke-virtual {v2}, Ljava/lang/Object;->wait()V
:try_end_d
.catch Ljava/lang/InterruptedException; {:try_start_8 .. :try_end_d} :catch_e
.catchall {:try_start_8 .. :try_end_d} :catchall_23
goto :goto_4
:catch_e
move-exception v1
:try_start_f
const-string v2, "HardwareVideoEncoder"
const-string v3, "Interrupted while waiting on busy count"
.line 4
invoke-static {v2, v3, v1}, Lorg/webrtc/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
const/4 v1, 0x1
goto :goto_4
.line 5
:cond_18
monitor-exit v0
:try_end_19
.catchall {:try_start_f .. :try_end_19} :catchall_23
if-eqz v1, :cond_22
.line 6
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
:cond_22
return-void
:catchall_23
move-exception v1
.line 7
:try_start_24
monitor-exit v0
:try_end_25
.catchall {:try_start_24 .. :try_end_25} :catchall_23
throw v1
.end method