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