From c5767b07a74359b4ee1eb4828c52967718e384ce Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 25 Sep 2019 15:17:35 -0400 Subject: [PATCH] Initialize CameraX on a background thread. We saw a situation where CameraX initialization could lock up when trying to obtain system resource. We already fallback to the Camera1Fragment when CameraX isn't initialized, so it should be safe to do this initialization on its own thread. --- .../thoughtcrime/securesms/ApplicationContext.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index f87ecfd3c1..f6828cf8d4 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -386,11 +386,13 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi @SuppressLint("RestrictedApi") private void initializeCameraX() { if (Build.VERSION.SDK_INT >= 21) { - try { - CameraX.init(this, Camera2AppConfig.create(this)); - } catch (Throwable t) { - Log.w(TAG, "Failed to initialize CameraX."); - } + new Thread(() -> { + try { + CameraX.init(this, Camera2AppConfig.create(this)); + } catch (Throwable t) { + Log.w(TAG, "Failed to initialize CameraX."); + } + }, "signal-camerax-initialization").start(); } }