Add stopwatches for a few possible pain points in MediaGallery.

fork-5.53.8
Alex Hart 2021-09-16 16:29:47 -03:00
rodzic 9aa517ad99
commit fd01ee2a87
2 zmienionych plików z 12 dodań i 0 usunięć

Wyświetl plik

@ -24,6 +24,7 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.Stopwatch;
import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.libsignal.util.guava.Optional;
@ -201,14 +202,20 @@ public class MediaRepository {
@WorkerThread
private @NonNull List<Media> getMediaInBucket(@NonNull Context context, @NonNull String bucketId) {
Stopwatch stopwatch = new Stopwatch("getMediaInBucket");
List<Media> images = getMediaInBucket(context, bucketId, Images.Media.EXTERNAL_CONTENT_URI, true);
List<Media> videos = getMediaInBucket(context, bucketId, Video.Media.EXTERNAL_CONTENT_URI, false);
List<Media> media = new ArrayList<>(images.size() + videos.size());
stopwatch.split("post fetch");
media.addAll(images);
media.addAll(videos);
Collections.sort(media, (o1, o2) -> Long.compare(o2.getDate(), o1.getDate()));
stopwatch.split("post sort");
stopwatch.stop(TAG);
return media;
}

Wyświetl plik

@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.mediasend.MediaRepository
import org.thoughtcrime.securesms.mediasend.v2.MediaCountIndicatorButton
import org.thoughtcrime.securesms.util.MappingAdapter
import org.thoughtcrime.securesms.util.Stopwatch
import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
import org.thoughtcrime.securesms.util.visible
@ -115,7 +116,11 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
viewStateLiveData.observe(viewLifecycleOwner) { state ->
bottomBarGroup.visible = state.selectedMedia.isNotEmpty()
countButton.setCount(state.selectedMedia.size)
val stopwatch = Stopwatch("mediaSubmit")
selectedAdapter.submitList(state.selectedMedia.map { MediaGallerySelectedItem.Model(it) }) {
stopwatch.split("after-submit")
stopwatch.stop("MediaGalleryFragment")
if (state.selectedMedia.isNotEmpty()) {
selectedRecycler.smoothScrollToPosition(state.selectedMedia.size - 1)
}