EglRenderer$HandlerWithFrameSyncControl.smali
.class Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;
.super Landroid/os/Handler;
.source "EglRenderer.java"
# interfaces
.implements Landroid/view/Choreographer$FrameCallback;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/agora/base/internal/video/EglRenderer;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "HandlerWithFrameSyncControl"
.end annotation
# static fields
.field private static final MSG_SEND_CHOREOGRAPHER_QUIT_SIGNAL:I = 0x0
.field private static final MSG_SEND_DROP_FRAME:I = 0x1
.field private static final MSG_SEND_RENDER_FRAME_SIGNAL:I = 0x2
.field private static final QUEUE_BUFFER:I = 0x3
# instance fields
.field private final exceptionCallback:Ljava/lang/Runnable;
.field private isPreviousFrameDrawn:Z
.field private lastPersionStats:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
.field private mLastFrameTimeNanos:J
.field private final queueLock:Ljava/lang/Object;
.field private final renderFrames:Ljava/util/Queue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Queue<",
"Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;",
">;"
}
.end annotation
.end field
.field private weakRenderer:Ljava/lang/ref/WeakReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ref/WeakReference<",
"Lio/agora/base/internal/video/EglRenderer;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>(Landroid/os/Looper;Ljava/lang/Runnable;Lio/agora/base/internal/video/EglRenderer;)V
.registers 6
.line 1196
invoke-direct {p0, p1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
.line 1188
new-instance p1, Ljava/lang/Object;
invoke-direct {p1}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->queueLock:Ljava/lang/Object;
const-wide/16 v0, 0x0
.line 1190
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
.line 1191
sget-object p1, Lio/agora/base/internal/video/EglRenderer$VsyncStats;->NORMAL:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->lastPersionStats:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
.line 1197
iput-object p2, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->exceptionCallback:Ljava/lang/Runnable;
.line 1198
new-instance p1, Ljava/util/LinkedList;
invoke-direct {p1}, Ljava/util/LinkedList;-><init>()V
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
.line 1199
new-instance p1, Ljava/lang/ref/WeakReference;
invoke-direct {p1, p3}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
.line 1200
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
const/4 p1, 0x0
.line 1201
iput-boolean p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->isPreviousFrameDrawn:Z
return-void
.end method
.method private doRenderFrame(J)V
.registers 15
.line 1310
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/agora/base/internal/video/EglRenderer;
if-nez v0, :cond_12
const-string p1, "EglRenderer"
const-string p2, "handleMessage: weak is null"
.line 1312
invoke-static {p1, p2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 1315
:cond_12
# getter for: Lio/agora/base/internal/video/EglRenderer;->frameIntervalNanos:J
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$1700(Lio/agora/base/internal/video/EglRenderer;)J
move-result-wide v1
const-wide/16 v3, 0x0
cmp-long v1, v1, v3
if-nez v1, :cond_1d
return-void
.line 1318
:cond_1d
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
cmp-long v1, v1, v3
if-nez v1, :cond_25
.line 1319
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
.line 1321
:cond_25
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
sub-long v10, p1, v1
.line 1326
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->mLastFrameTimeNanos:J
.line 1329
# getter for: Lio/agora/base/internal/video/EglRenderer;->frameIntervalNanos:J
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$1700(Lio/agora/base/internal/video/EglRenderer;)J
move-result-wide v1
# getter for: Lio/agora/base/internal/video/EglRenderer;->frameIntervalNanos:J
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$1700(Lio/agora/base/internal/video/EglRenderer;)J
move-result-wide v5
const-wide/16 v7, 0x2
div-long/2addr v5, v7
add-long/2addr v1, v5
cmp-long v1, v10, v1
if-ltz v1, :cond_46
.line 1330
# getter for: Lio/agora/base/internal/video/EglRenderer;->frameIntervalNanos:J
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$1700(Lio/agora/base/internal/video/EglRenderer;)J
move-result-wide v1
div-long v3, v10, v1
.line 1331
sget-object v1, Lio/agora/base/internal/video/EglRenderer$VsyncStats;->DELAY:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
iput-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->lastPersionStats:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
goto :goto_4a
.line 1333
:cond_46
sget-object v1, Lio/agora/base/internal/video/EglRenderer$VsyncStats;->NORMAL:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
iput-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->lastPersionStats:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
:goto_4a
move-wide v8, v3
.line 1335
# getter for: Lio/agora/base/internal/video/EglRenderer;->statisticsInfo:Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$200(Lio/agora/base/internal/video/EglRenderer;)Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;
move-result-object v5
iget-object v6, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->lastPersionStats:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
iget-boolean v7, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->isPreviousFrameDrawn:Z
# invokes: Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateEveryVsyncStatistics(Lio/agora/base/internal/video/EglRenderer$VsyncStats;ZJJ)V
invoke-static/range {v5 .. v11}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->access$2500(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;Lio/agora/base/internal/video/EglRenderer$VsyncStats;ZJJ)V
const/4 v1, 0x0
.line 1337
iput-boolean v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->isPreviousFrameDrawn:Z
.line 1339
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->queueLock:Ljava/lang/Object;
monitor-enter v1
.line 1340
:try_start_5c
iget-object v2, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {v2}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;
.line 1341
monitor-exit v1
:try_end_65
.catchall {:try_start_5c .. :try_end_65} :catchall_6f
if-nez v2, :cond_68
goto :goto_6e
:cond_68
const/4 v1, 0x1
.line 1347
iput-boolean v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->isPreviousFrameDrawn:Z
.line 1348
# invokes: Lio/agora/base/internal/video/EglRenderer;->renderFrameOnRenderThread(Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;J)V
invoke-static {v0, v2, p1, p2}, Lio/agora/base/internal/video/EglRenderer;->access$2600(Lio/agora/base/internal/video/EglRenderer;Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;J)V
:goto_6e
return-void
:catchall_6f
move-exception p1
.line 1341
:try_start_70
monitor-exit v1
:try_end_71
.catchall {:try_start_70 .. :try_end_71} :catchall_6f
throw p1
.end method
.method private stopChoreographer()V
.registers 4
.line 1300
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->queueLock:Ljava/lang/Object;
monitor-enter v0
.line 1301
:try_start_3
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {v1}, Ljava/util/Queue;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_9
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_1b
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;
.line 1302
iget-object v2, v2, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;->frame:Lio/agora/base/VideoFrame;
invoke-virtual {v2}, Lio/agora/base/VideoFrame;->release()V
goto :goto_9
.line 1304
:cond_1b
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {v1}, Ljava/util/Queue;->clear()V
.line 1305
invoke-static {}, Landroid/view/Choreographer;->getInstance()Landroid/view/Choreographer;
move-result-object v1
invoke-virtual {v1, p0}, Landroid/view/Choreographer;->removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
.line 1306
monitor-exit v0
return-void
:catchall_29
move-exception v1
monitor-exit v0
:try_end_2b
.catchall {:try_start_3 .. :try_end_2b} :catchall_29
throw v1
.end method
# virtual methods
.method public dispatchMessage(Landroid/os/Message;)V
.registers 4
.line 1207
:try_start_0
invoke-super {p0, p1}, Landroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V
:try_end_3
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_3} :catch_4
goto :goto_11
:catch_4
move-exception p1
const-string v0, "EglRenderer"
const-string v1, "Exception on EglRenderer thread"
.line 1209
invoke-static {v0, v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 1210
iget-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->exceptionCallback:Ljava/lang/Runnable;
invoke-interface {p1}, Ljava/lang/Runnable;->run()V
:goto_11
return-void
.end method
.method public doFrame(J)V
.registers 6
.line 1354
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/agora/base/internal/video/EglRenderer;
const-string v1, "EglRenderer"
if-nez v0, :cond_12
const-string p1, "doFrame: weak is null"
.line 1356
invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 1359
:cond_12
# getter for: Lio/agora/base/internal/video/EglRenderer;->isVsyncCallbackStared:Z
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$2300(Lio/agora/base/internal/video/EglRenderer;)Z
move-result v2
if-nez v2, :cond_1d
const-string v2, "Choreographer real start"
.line 1360
invoke-static {v1, v2}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
:cond_1d
const/4 v1, 0x1
.line 1362
# setter for: Lio/agora/base/internal/video/EglRenderer;->isVsyncCallbackStared:Z
invoke-static {v0, v1}, Lio/agora/base/internal/video/EglRenderer;->access$2302(Lio/agora/base/internal/video/EglRenderer;Z)Z
const/4 v0, 0x2
.line 1363
new-instance v1, Ljava/lang/Long;
invoke-direct {v1, p1, p2}, Ljava/lang/Long;-><init>(J)V
invoke-virtual {p0, v0, v1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
move-result-object p1
invoke-virtual {p0, p1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->sendMessage(Landroid/os/Message;)Z
.line 1364
invoke-static {}, Landroid/view/Choreographer;->getInstance()Landroid/view/Choreographer;
move-result-object p1
invoke-virtual {p1, p0}, Landroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
return-void
.end method
.method public handleMessage(Landroid/os/Message;)V
.registers 6
.line 1266
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/agora/base/internal/video/EglRenderer;
const-string v1, "EglRenderer"
if-nez v0, :cond_12
const-string p1, "handleMessage: weak is null"
.line 1268
invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 1271
:cond_12
iget v2, p1, Landroid/os/Message;->what:I
if-eqz v2, :cond_5f
const/4 v3, 0x1
if-eq v2, v3, :cond_4e
const/4 v0, 0x2
if-eq v2, v0, :cond_3a
.line 1291
:try_start_1c
invoke-super {p0, p1}, Landroid/os/Handler;->handleMessage(Landroid/os/Message;)V
:try_end_1f
.catch Ljava/lang/Exception; {:try_start_1c .. :try_end_1f} :catch_20
goto :goto_62
:catch_20
move-exception p1
.line 1293
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "setRepeatingRequest failed, error message : "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {v1, p1}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_62
.line 1280
:cond_3a
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v0
.line 1281
iget-object v2, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
if-eqz v2, :cond_4a
.line 1282
iget-object p1, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast p1, Ljava/lang/Long;
invoke-virtual {p1}, Ljava/lang/Long;->longValue()J
move-result-wide v0
.line 1284
:cond_4a
invoke-direct {p0, v0, v1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->doRenderFrame(J)V
goto :goto_62
.line 1274
:cond_4e
iget-object p1, v0, Lio/agora/base/internal/video/EglRenderer;->rendererEvents:Lio/agora/base/internal/video/RendererCommon$RendererEvents;
if-eqz p1, :cond_57
.line 1275
iget-object p1, v0, Lio/agora/base/internal/video/EglRenderer;->rendererEvents:Lio/agora/base/internal/video/RendererCommon$RendererEvents;
invoke-interface {p1}, Lio/agora/base/internal/video/RendererCommon$RendererEvents;->onFrameDropped()V
.line 1277
:cond_57
# getter for: Lio/agora/base/internal/video/EglRenderer;->statisticsInfo:Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$200(Lio/agora/base/internal/video/EglRenderer;)Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;
move-result-object p1
# invokes: Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateFramesDropped()V
invoke-static {p1}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->access$2400(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;)V
goto :goto_62
.line 1287
:cond_5f
invoke-direct {p0}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->stopChoreographer()V
:goto_62
return-void
.end method
.method public sendFrameToRenderThread(JLio/agora/base/VideoFrame;)V
.registers 7
.line 1232
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->queueLock:Ljava/lang/Object;
monitor-enter v0
.line 1233
:try_start_3
invoke-virtual {p3}, Lio/agora/base/VideoFrame;->retain()V
.line 1234
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {v1}, Ljava/util/Queue;->size()I
move-result v1
const/4 v2, 0x3
if-lt v1, v2, :cond_26
.line 1241
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {v1}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;
if-eqz v1, :cond_1e
.line 1243
iget-object v1, v1, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;->frame:Lio/agora/base/VideoFrame;
invoke-virtual {v1}, Lio/agora/base/VideoFrame;->release()V
:cond_1e
const/4 v1, 0x1
.line 1245
invoke-virtual {p0, v1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->obtainMessage(I)Landroid/os/Message;
move-result-object v1
invoke-virtual {p0, v1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->sendMessage(Landroid/os/Message;)Z
.line 1247
:cond_26
new-instance v1, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;
invoke-direct {v1, p3, p1, p2}, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;-><init>(Lio/agora/base/VideoFrame;J)V
.line 1248
iget-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {p1, v1}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_3a
const-string p1, "EglRenderer"
const-string p2, "offer error "
.line 1249
invoke-static {p1, p2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 1251
:cond_3a
iget-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
invoke-virtual {p1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object p1
check-cast p1, Lio/agora/base/internal/video/EglRenderer;
if-eqz p1, :cond_52
.line 1252
# getter for: Lio/agora/base/internal/video/EglRenderer;->isVsyncCallbackStared:Z
invoke-static {p1}, Lio/agora/base/internal/video/EglRenderer;->access$2300(Lio/agora/base/internal/video/EglRenderer;)Z
move-result p1
if-nez p1, :cond_52
const/4 p1, 0x2
.line 1253
invoke-virtual {p0, p1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->obtainMessage(I)Landroid/os/Message;
move-result-object p1
invoke-virtual {p0, p1}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->sendMessage(Landroid/os/Message;)Z
.line 1261
:cond_52
monitor-exit v0
return-void
:catchall_54
move-exception p1
monitor-exit v0
:try_end_56
.catchall {:try_start_3 .. :try_end_56} :catchall_54
throw p1
.end method
.method public sendLastFrameToRenderThread(J)V
.registers 6
.line 1219
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->weakRenderer:Ljava/lang/ref/WeakReference;
invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/agora/base/internal/video/EglRenderer;
.line 1220
iget-object v1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->queueLock:Ljava/lang/Object;
monitor-enter v1
.line 1221
:try_start_b
# getter for: Lio/agora/base/internal/video/EglRenderer;->ENABLE_LAST_FRAME:Z
invoke-static {}, Lio/agora/base/internal/video/EglRenderer;->access$2100()Z
move-result v2
if-eqz v2, :cond_2b
if-eqz v0, :cond_2b
.line 1222
new-instance v2, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;
.line 1223
# getter for: Lio/agora/base/internal/video/EglRenderer;->lastFrame:Lio/agora/base/VideoFrame;
invoke-static {v0}, Lio/agora/base/internal/video/EglRenderer;->access$2200(Lio/agora/base/internal/video/EglRenderer;)Lio/agora/base/VideoFrame;
move-result-object v0
invoke-direct {v2, v0, p1, p2}, Lio/agora/base/internal/video/EglRenderer$VideoFrameInternal;-><init>(Lio/agora/base/VideoFrame;J)V
.line 1224
iget-object p1, p0, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->renderFrames:Ljava/util/Queue;
invoke-interface {p1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_2b
const-string p1, "EglRenderer"
const-string p2, "sendLastFrameToRenderThread offer error "
.line 1225
invoke-static {p1, p2}, Lio/agora/base/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 1228
:cond_2b
monitor-exit v1
return-void
:catchall_2d
move-exception p1
monitor-exit v1
:try_end_2f
.catchall {:try_start_b .. :try_end_2f} :catchall_2d
throw p1
.end method
.method public sendStopChoreographer()V
.registers 2
const/4 v0, 0x0
.line 1215
invoke-virtual {p0, v0}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->obtainMessage(I)Landroid/os/Message;
move-result-object v0
invoke-virtual {p0, v0}, Lio/agora/base/internal/video/EglRenderer$HandlerWithFrameSyncControl;->sendMessage(Landroid/os/Message;)Z
return-void
.end method