From fc847db389fbca59ac75f25f8d23eeccdd8f5ba5 Mon Sep 17 00:00:00 2001 From: Rashad Sookram Date: Thu, 17 Feb 2022 11:52:28 -0500 Subject: [PATCH] Prevent video from restarting on attachment change. Fixes #11816 --- .../securesms/MediaPreviewActivity.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java index 46ff6977fd..688905d7a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java @@ -21,13 +21,11 @@ import android.annotation.SuppressLint; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -557,9 +555,15 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity int mediaPosition = Objects.requireNonNull(data.second); - CursorPagerAdapter adapter = new CursorPagerAdapter(getSupportFragmentManager(),this, cursor, mediaPosition, leftIsRecent); - mediaPager.setAdapter(adapter); - adapter.setActive(true); + CursorPagerAdapter oldAdapter = (CursorPagerAdapter) mediaPager.getAdapter(); + if (oldAdapter == null) { + CursorPagerAdapter adapter = new CursorPagerAdapter(getSupportFragmentManager(), this, cursor, mediaPosition, leftIsRecent); + mediaPager.setAdapter(adapter); + adapter.setActive(true); + } else { + oldAdapter.setCursor(cursor, mediaPosition); + oldAdapter.setActive(true); + } viewModel.setCursor(this, cursor, leftIsRecent); @@ -715,10 +719,10 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity private final Map mediaFragments = new HashMap<>(); private final Context context; - private final Cursor cursor; private final boolean leftIsRecent; private boolean active; + private Cursor cursor; private int autoPlayPosition; CursorPagerAdapter(@NonNull FragmentManager fragmentManager, @@ -739,6 +743,11 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity notifyDataSetChanged(); } + public void setCursor(@NonNull Cursor cursor, int autoPlayPosition) { + this.cursor = cursor; + this.autoPlayPosition = autoPlayPosition; + } + @Override public int getCount() { if (!active) return 0;