From bdd9dcaf72d4c3fcbaef33d04db878507ee39d7c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 30 Jul 2025 14:24:21 +0000 Subject: [PATCH] Prevent concurrent capture loops in WindowRecorder Co-authored-by: roman.zavarnitsyn --- .../src/main/java/io/sentry/android/replay/WindowRecorder.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sentry-android-replay/src/main/java/io/sentry/android/replay/WindowRecorder.kt b/sentry-android-replay/src/main/java/io/sentry/android/replay/WindowRecorder.kt index 197ec099661..9380db5036e 100644 --- a/sentry-android-replay/src/main/java/io/sentry/android/replay/WindowRecorder.kt +++ b/sentry-android-replay/src/main/java/io/sentry/android/replay/WindowRecorder.kt @@ -50,6 +50,8 @@ internal class WindowRecorder( } recorder?.resume() isRecording.getAndSet(true) + // Remove any existing callbacks to prevent concurrent capture loops + mainLooperHandler.removeCallbacks(this) val posted = mainLooperHandler.post(this) if (!posted) { options.logger.log( @@ -184,6 +186,9 @@ internal class WindowRecorder( capturer?.recorder?.bind(newRoot) } + // Remove any existing callbacks to prevent concurrent capture loops + mainLooperHandler.removeCallbacks(capturer) + val posted = mainLooperHandler.postDelayed( capturer,