From 219c24848bb2a99287e06e99b14151b0cc2b8972 Mon Sep 17 00:00:00 2001 From: vkryl <6242627+vkryl@users.noreply.github.com> Date: Mon, 4 Dec 2023 07:41:11 +0900 Subject: [PATCH] Debug crash while cancelling video message recording --- .../player/RecordAudioVideoController.java | 4 ++++ .../challegram/ui/camera/CameraController.java | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thunderdog/challegram/player/RecordAudioVideoController.java b/app/src/main/java/org/thunderdog/challegram/player/RecordAudioVideoController.java index 1e79ee6d2c..32bf929448 100644 --- a/app/src/main/java/org/thunderdog/challegram/player/RecordAudioVideoController.java +++ b/app/src/main/java/org/thunderdog/challegram/player/RecordAudioVideoController.java @@ -1450,11 +1450,15 @@ private void setRoundGenerationFile (final TdApi.File file) { private int savedRoundDurationSeconds; private void startVideoRecording () { + if (this.recordingRoundVideo) + throw new IllegalStateException(); this.recordingRoundVideo = true; ownedCamera.getLegacyManager().requestRoundVideoCapture(roundKey, this, roundOutputPath); } private void finishVideoRecording (int closeMode) { + if (!this.recordingRoundVideo) + throw new IllegalStateException(); this.recordingRoundVideo = false; this.roundCloseMode = closeMode; final boolean needResult = closeMode != CLOSE_MODE_CANCEL; diff --git a/app/src/main/java/org/thunderdog/challegram/ui/camera/CameraController.java b/app/src/main/java/org/thunderdog/challegram/ui/camera/CameraController.java index 94b088e4f5..705a894f08 100644 --- a/app/src/main/java/org/thunderdog/challegram/ui/camera/CameraController.java +++ b/app/src/main/java/org/thunderdog/challegram/ui/camera/CameraController.java @@ -39,6 +39,7 @@ import android.widget.TextView; import androidx.annotation.AnyThread; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; @@ -285,9 +286,12 @@ private void setForceLegacy (boolean forceLegacy) { } } + private Throwable debugDestroy; + public void checkLegacyMode () { if (contentView != null && isLegacy() != needLegacy()) { if (manager != null) { + debugDestroy = Log.generateException(); contentView.removeView(this.manager.getView()); manager.destroy(); manager = null; @@ -330,11 +334,21 @@ public void setUseFastInitialization (boolean useFastInitialization) { } } - public CameraManager getManager () { + private void ensureManager () { + if (manager == null) { + if (debugDestroy != null) + throw new IllegalStateException(debugDestroy); + throw new IllegalStateException(); + } + } + + public @NonNull CameraManager getManager () { + ensureManager(); return manager; } - public CameraManagerLegacy getLegacyManager () { + public @NonNull CameraManagerLegacy getLegacyManager () { + ensureManager(); return (CameraManagerLegacy) manager; }