Unverified Commit 025b1093 authored by Alexander Maryanovsky's avatar Alexander Maryanovsky Committed by GitHub

Fix possibly calling DeviceAnalytis.(before/after)FirstFrameRender more than once (#1101)

parent ab846bc4
...@@ -57,16 +57,17 @@ internal abstract class AWTRedrawer( ...@@ -57,16 +57,17 @@ internal abstract class AWTRedrawer(
protected inline fun inDrawScope(body: () -> Unit) { protected inline fun inDrawScope(body: () -> Unit) {
requireNotNull(deviceAnalytics) { "deviceAnalytics is not null. Call onDeviceChosen after choosing the drawing device" } requireNotNull(deviceAnalytics) { "deviceAnalytics is not null. Call onDeviceChosen after choosing the drawing device" }
if (!isDisposed) { if (!isDisposed) {
if (!isFirstFrameRendered) { val isFirstFrame = !isFirstFrameRendered
isFirstFrameRendered = true
if (isFirstFrame) {
deviceAnalytics?.beforeFirstFrameRender() deviceAnalytics?.beforeFirstFrameRender()
} }
deviceAnalytics?.beforeFrameRender() deviceAnalytics?.beforeFrameRender()
layer.inDrawScope(body) layer.inDrawScope(body)
if (!isFirstFrameRendered && !isDisposed) { if (isFirstFrame && !isDisposed) {
deviceAnalytics?.afterFirstFrameRender() deviceAnalytics?.afterFirstFrameRender()
} }
deviceAnalytics?.afterFrameRender() deviceAnalytics?.afterFrameRender()
isFirstFrameRendered = true
} }
} }
......
...@@ -81,18 +81,17 @@ internal abstract class SwingRedrawerBase( ...@@ -81,18 +81,17 @@ internal abstract class SwingRedrawerBase(
check(SwingUtilities.isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" } check(SwingUtilities.isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
requireNotNull(deviceAnalytics) { "deviceAnalytics is not null. Call onDeviceChosen after choosing the drawing device" } requireNotNull(deviceAnalytics) { "deviceAnalytics is not null. Call onDeviceChosen after choosing the drawing device" }
if (!isDisposed) { if (!isDisposed) {
if (!isFirstFrameRendered) { val isFirstFrame = !isFirstFrameRendered
isFirstFrameRendered = true
if (isFirstFrame) {
deviceAnalytics?.beforeFirstFrameRender() deviceAnalytics?.beforeFirstFrameRender()
} }
try { try {
body() body()
} catch (e: CancellationException) { } catch (_: CancellationException) { }
// ignore if (isFirstFrame && !isDisposed) {
}
if (!isFirstFrameRendered && !isDisposed) {
deviceAnalytics?.afterFirstFrameRender() deviceAnalytics?.afterFirstFrameRender()
} }
isFirstFrameRendered = true
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment