Skip to content

Commit 496ba4c

Browse files
committed
Move recycling to background
1 parent 9dbdd9d commit 496ba4c

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

sentry-android-replay/src/main/java/io/sentry/android/replay/ScreenshotRecorder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ internal class ScreenshotRecorder(
142142
}
143143

144144
fun close() {
145+
isCapturing.set(false)
145146
unbind(rootView?.get())
146147
rootView?.clear()
147148
screenshotStrategy.close()
148-
isCapturing.set(false)
149149
}
150150
}
151151

sentry-android-replay/src/main/java/io/sentry/android/replay/screenshot/CanvasStrategy.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,22 @@ internal class CanvasStrategy(
189189

190190
override fun close() {
191191
isClosed.set(true)
192-
screenshot?.let {
193-
synchronized(it) {
194-
if (!it.isRecycled) {
195-
it.recycle()
196-
}
197-
}
198-
}
199-
screenshot = null
192+
executor
193+
.getExecutor()
194+
.submit(
195+
ReplayRunnable(
196+
"CanvasStrategy.close",
197+
{
198+
screenshot?.let {
199+
synchronized(it) {
200+
if (!it.isRecycled) {
201+
it.recycle()
202+
}
203+
}
204+
}
205+
},
206+
)
207+
)
200208

201209
// the image can be free, unprocessed or in transit
202210
freePictureRef.getAndSet(null)?.reader?.close()

sentry-android-replay/src/main/java/io/sentry/android/replay/screenshot/PixelCopyStrategy.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,21 @@ internal class PixelCopyStrategy(
185185

186186
override fun close() {
187187
isClosed.set(true)
188-
if (!screenshot.isRecycled) {
189-
synchronized(screenshot) {
190-
if (!screenshot.isRecycled) {
191-
screenshot.recycle()
192-
}
193-
}
194-
}
188+
executor.submit(
189+
ReplayRunnable(
190+
"PixelCopyStrategy.close",
191+
{
192+
if (!screenshot.isRecycled) {
193+
synchronized(screenshot) {
194+
if (!screenshot.isRecycled) {
195+
screenshot.recycle()
196+
}
197+
}
198+
}
199+
},
200+
)
201+
)
202+
195203
if (!singlePixelBitmap.isRecycled) {
196204
singlePixelBitmap.recycle()
197205
}

0 commit comments

Comments
 (0)