From 14b2d128950690fcb6fc0ae20288c7ac5b9b8160 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 11 May 2022 14:24:45 -0400 Subject: [PATCH] Reduce disk reads on main thread. --- .../securesms/profiles/AvatarHelper.java | 16 +++++++++--- .../service/webrtc/SignalCallManager.java | 25 ++++++++----------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java index f2f0f6a7cb..6ed1de57d0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java @@ -35,8 +35,17 @@ public class AvatarHelper { private static final String AVATAR_DIRECTORY = "avatars"; + private static File avatarDirectory; + + private static File getAvatarDirectory(@NonNull Context context) { + if (avatarDirectory == null) { + avatarDirectory = context.getDir(AVATAR_DIRECTORY, Context.MODE_PRIVATE); + } + return avatarDirectory; + } + public static long getAvatarCount(@NonNull Context context) { - File avatarDirectory = context.getDir(AVATAR_DIRECTORY, Context.MODE_PRIVATE); + File avatarDirectory = getAvatarDirectory(context); String[] results = avatarDirectory.list(); return results == null ? 0 : results.length; @@ -46,7 +55,7 @@ public class AvatarHelper { * Retrieves an iterable set of avatars. Only intended to be used during backup. */ public static Iterable getAvatars(@NonNull Context context) { - File avatarDirectory = context.getDir(AVATAR_DIRECTORY, Context.MODE_PRIVATE); + File avatarDirectory = getAvatarDirectory(context); File[] results = avatarDirectory.listFiles(); if (results == null) { @@ -215,8 +224,7 @@ public class AvatarHelper { } private static @NonNull File getAvatarFile(@NonNull Context context, @NonNull RecipientId recipientId, boolean isSyncAvatar) { - File directory = context.getDir(AVATAR_DIRECTORY, Context.MODE_PRIVATE); - return new File(directory, recipientId.serialize() + (isSyncAvatar ? "-sync" : "")); + return new File(getAvatarDirectory(context), recipientId.serialize() + (isSyncAvatar ? "-sync" : "")); } public static class Avatar { diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java index 5cbd776f22..2dc7603f56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/SignalCallManager.java @@ -59,8 +59,6 @@ import org.thoughtcrime.securesms.util.rx.RxStore; import org.thoughtcrime.securesms.webrtc.audio.SignalAudioManager; import org.thoughtcrime.securesms.webrtc.locks.LockManager; import org.webrtc.PeerConnection; -import org.whispersystems.signalservice.api.SignalServiceAccountManager; -import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.SendMessageResult; import org.whispersystems.signalservice.api.messages.calls.CallingResponse; @@ -108,8 +106,6 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. @Nullable private final CallManager callManager; private final Context context; - private final SignalServiceMessageSender messageSender; - private final SignalServiceAccountManager accountManager; private final ExecutorService serviceExecutor; private final Executor networkExecutor; private final LockManager lockManager; @@ -120,8 +116,6 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall. public SignalCallManager(@NonNull Application application) { this.context = application.getApplicationContext(); - this.messageSender = ApplicationDependencies.getSignalServiceMessageSender(); - this.accountManager = ApplicationDependencies.getSignalServiceAccountManager(); this.lockManager = new LockManager(this.context); this.serviceExecutor = Executors.newSingleThreadExecutor(); this.networkExecutor = Executors.newSingleThreadExecutor(); @@ -646,9 +640,10 @@ private void processStateless(@NonNull Function1 { try { - TurnServerInfo turnServerInfo = accountManager.getTurnServerInfo(); + TurnServerInfo turnServerInfo = ApplicationDependencies.getSignalServiceAccountManager().getTurnServerInfo(); List iceServers = new LinkedList<>(); iceServers.add(PeerConnection.IceServer.builder("stun:stun1.l.google.com:19302").createIceServer()); @@ -904,9 +900,10 @@ private void processStateless(@NonNull Function1 p.handleMessageSentSuccess(s, remotePeer.getCallId())); } catch (UntrustedIdentityException e) { RetrieveProfileJob.enqueue(remotePeer.getId());