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(
protected inline fun inDrawScope(body: () -> Unit) {
requireNotNull(deviceAnalytics) { "deviceAnalytics is not null. Call onDeviceChosen after choosing the drawing device" }
if (!isDisposed) {
if (!isFirstFrameRendered) {
val isFirstFrame = !isFirstFrameRendered
isFirstFrameRendered = true
if (isFirstFrame) {
deviceAnalytics?.beforeFirstFrameRender()
}
deviceAnalytics?.beforeFrameRender()
layer.inDrawScope(body)
if (!isFirstFrameRendered && !isDisposed) {
if (isFirstFrame && !isDisposed) {
deviceAnalytics?.afterFirstFrameRender()
}
deviceAnalytics?.afterFrameRender()
isFirstFrameRendered = true
}
}
......
......@@ -81,18 +81,17 @@ internal abstract class SwingRedrawerBase(
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" }
if (!isDisposed) {
if (!isFirstFrameRendered) {
val isFirstFrame = !isFirstFrameRendered
isFirstFrameRendered = true
if (isFirstFrame) {
deviceAnalytics?.beforeFirstFrameRender()
}
try {
body()
} catch (e: CancellationException) {
// ignore
}
if (!isFirstFrameRendered && !isDisposed) {
} catch (_: CancellationException) { }
if (isFirstFrame && !isDisposed) {
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