UIViewOperationQueue$DispatchUIFrameCallback.smali
.class Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;
.super Lcom/facebook/react/uimanager/GuardedFrameCallback;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/facebook/react/uimanager/UIViewOperationQueue;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1
name = "DispatchUIFrameCallback"
.end annotation
# static fields
.field private static final FRAME_TIME_MS:I = 0x10
# instance fields
.field private final mMinTimeLeftInFrameForNonBatchedOperationMs:I
.field public final synthetic this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
# direct methods
.method private constructor <init>(Lcom/facebook/react/uimanager/UIViewOperationQueue;Lcom/facebook/react/bridge/ReactContext;I)V
.registers 4
.line 2
iput-object p1, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
.line 3
invoke-direct {p0, p2}, Lcom/facebook/react/uimanager/GuardedFrameCallback;-><init>(Lcom/facebook/react/bridge/ReactContext;)V
.line 4
iput p3, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->mMinTimeLeftInFrameForNonBatchedOperationMs:I
return-void
.end method
.method public synthetic constructor <init>(Lcom/facebook/react/uimanager/UIViewOperationQueue;Lcom/facebook/react/bridge/ReactContext;ILcom/facebook/react/uimanager/UIViewOperationQueue$1;)V
.registers 5
.line 1
invoke-direct {p0, p1, p2, p3}, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;-><init>(Lcom/facebook/react/uimanager/UIViewOperationQueue;Lcom/facebook/react/bridge/ReactContext;I)V
return-void
.end method
.method private dispatchPendingNonBatchedOperations(J)V
.registers 9
:goto_0
const-wide/16 v0, 0x10
.line 1
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v2
sub-long/2addr v2, p1
const-wide/32 v4, 0xf4240
div-long/2addr v2, v4
sub-long/2addr v0, v2
.line 2
iget v2, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->mMinTimeLeftInFrameForNonBatchedOperationMs:I
int-to-long v2, v2
cmp-long v4, v0, v2
if-gez v4, :cond_14
goto :goto_28
.line 3
:cond_14
iget-object v0, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
# getter for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mNonBatchedOperationsLock:Ljava/lang/Object;
invoke-static {v0}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$1900(Lcom/facebook/react/uimanager/UIViewOperationQueue;)Ljava/lang/Object;
move-result-object v0
monitor-enter v0
.line 4
:try_start_1b
iget-object v1, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
# getter for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mNonBatchedOperations:Ljava/util/ArrayDeque;
invoke-static {v1}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$2000(Lcom/facebook/react/uimanager/UIViewOperationQueue;)Ljava/util/ArrayDeque;
move-result-object v1
invoke-virtual {v1}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v1
if-eqz v1, :cond_29
.line 5
monitor-exit v0
:goto_28
return-void
.line 6
:cond_29
iget-object v1, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
# getter for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mNonBatchedOperations:Ljava/util/ArrayDeque;
invoke-static {v1}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$2000(Lcom/facebook/react/uimanager/UIViewOperationQueue;)Ljava/util/ArrayDeque;
move-result-object v1
invoke-virtual {v1}, Ljava/util/ArrayDeque;->pollFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/react/uimanager/UIViewOperationQueue$UIOperation;
.line 7
monitor-exit v0
:try_end_36
.catchall {:try_start_1b .. :try_end_36} :catchall_50
.line 8
:try_start_36
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v2
.line 9
invoke-interface {v1}, Lcom/facebook/react/uimanager/UIViewOperationQueue$UIOperation;->execute()V
.line 10
iget-object v0, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
.line 11
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v4
sub-long/2addr v4, v2
.line 12
# += operator for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mNonBatchedExecutionTotalTime:J
invoke-static {v0, v4, v5}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$2114(Lcom/facebook/react/uimanager/UIViewOperationQueue;J)J
:try_end_47
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_47} :catch_48
goto :goto_0
:catch_48
move-exception p1
.line 13
iget-object p2, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
const/4 v0, 0x1
# setter for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mIsInIllegalUIState:Z
invoke-static {p2, v0}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$1702(Lcom/facebook/react/uimanager/UIViewOperationQueue;Z)Z
.line 14
throw p1
:catchall_50
move-exception p1
.line 15
:try_start_51
monitor-exit v0
:try_end_52
.catchall {:try_start_51 .. :try_end_52} :catchall_50
throw p1
.end method
# virtual methods
.method public doFrameGuarded(J)V
.registers 6
.line 1
iget-object v0, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
# getter for: Lcom/facebook/react/uimanager/UIViewOperationQueue;->mIsInIllegalUIState:Z
invoke-static {v0}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$1700(Lcom/facebook/react/uimanager/UIViewOperationQueue;)Z
move-result v0
if-eqz v0, :cond_10
const-string p1, "ReactNative"
const-string p2, "Not flushing pending UI operations because of previously thrown Exception"
.line 2
invoke-static {p1, p2}, Lcom/facebook/common/logging/FLog;->w(Ljava/lang/String;Ljava/lang/String;)V
return-void
:cond_10
const-wide/16 v0, 0x0
const-string v2, "dispatchNonBatchedUIOperations"
.line 3
invoke-static {v0, v1, v2}, Lcom/facebook/systrace/Systrace;->beginSection(JLjava/lang/String;)V
.line 4
:try_start_17
invoke-direct {p0, p1, p2}, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->dispatchPendingNonBatchedOperations(J)V
:try_end_1a
.catchall {:try_start_17 .. :try_end_1a} :catchall_2e
.line 5
invoke-static {v0, v1}, Lcom/facebook/systrace/Systrace;->endSection(J)V
.line 6
iget-object p1, p0, Lcom/facebook/react/uimanager/UIViewOperationQueue$DispatchUIFrameCallback;->this$0:Lcom/facebook/react/uimanager/UIViewOperationQueue;
const/4 p2, 0x2
const/4 v0, 0x0
# invokes: Lcom/facebook/react/uimanager/UIViewOperationQueue;->flushPendingBatches(IZ)V
invoke-static {p1, p2, v0}, Lcom/facebook/react/uimanager/UIViewOperationQueue;->access$1800(Lcom/facebook/react/uimanager/UIViewOperationQueue;IZ)V
.line 7
invoke-static {}, Lcom/facebook/react/modules/core/ReactChoreographer;->getInstance()Lcom/facebook/react/modules/core/ReactChoreographer;
move-result-object p1
sget-object p2, Lcom/facebook/react/modules/core/ReactChoreographer$CallbackType;->DISPATCH_UI:Lcom/facebook/react/modules/core/ReactChoreographer$CallbackType;
.line 8
invoke-virtual {p1, p2, p0}, Lcom/facebook/react/modules/core/ReactChoreographer;->postFrameCallback(Lcom/facebook/react/modules/core/ReactChoreographer$CallbackType;Lcom/facebook/react/modules/core/ChoreographerCompat$FrameCallback;)V
return-void
:catchall_2e
move-exception p1
.line 9
invoke-static {v0, v1}, Lcom/facebook/systrace/Systrace;->endSection(J)V
.line 10
throw p1
.end method