From 4f5ced72e2521ad4a695d5485991d65f6a4ba8ca Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Tue, 14 Nov 2017 18:07:34 +0100 Subject: [PATCH] Fix #98 --- .../otaliastudios/cameraview/CameraController.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java index 2e2ba631..4fc29f8b 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraController.java @@ -84,6 +84,13 @@ abstract class CameraController implements //region Error handling + private static class NoOpExceptionHandler implements Thread.UncaughtExceptionHandler { + @Override + public void uncaughtException(Thread t, Throwable e) { + // No-op. + } + } + @Override public void uncaughtException(final Thread thread, final Throwable throwable) { // Something went wrong. Thread is terminated (about to?). @@ -126,8 +133,9 @@ abstract class CameraController implements final void destroy() { LOG.i("destroy:", "state:", ss()); - // Prevent CameraController leaks. - mHandler.getThread().setUncaughtExceptionHandler(null); + // Prevent CameraController leaks. Don't set to null, or exceptions + // inside the standard stop() method might crash the main thread. + mHandler.getThread().setUncaughtExceptionHandler(new NoOpExceptionHandler()); // Stop if needed. stopImmediately(); }