Skip to content

Commit

Permalink
Ensure videos are paused properly in MediaSendActivity.
Browse files Browse the repository at this point in the history
  • Loading branch information
greyson-signal committed Oct 18, 2019
1 parent 2f23a13 commit 096c9e0
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,17 @@ public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
viewModel.onImageEditorStarted();
} else {
fragmentPagerAdapter.notifyHidden();
}
}

@Override
public void onPause() {
super.onPause();
fragmentPagerAdapter.notifyHidden();
}

@Override
public void onStop() {
super.onStop();
Expand Down Expand Up @@ -143,6 +151,7 @@ private class FragmentPageChangeListener extends ViewPager.SimpleOnPageChangeLis
@Override
public void onPageSelected(int position) {
viewModel.onPageChanged(position);
fragmentPagerAdapter.notifyPageChanged(position);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import android.view.View;
import android.view.ViewGroup;

import com.annimon.stream.Stream;

import org.thoughtcrime.securesms.scribbles.ImageEditorFragment;
import org.thoughtcrime.securesms.util.MediaUtil;

Expand Down Expand Up @@ -119,4 +121,21 @@ void restoreState(@NonNull Map<Uri, Object> state) {
@Nullable View getPlaybackControls(int position) {
return fragments.containsKey(position) ? fragments.get(position).getPlaybackControls() : null;
}

void notifyHidden() {
Stream.of(fragments.values()).forEach(MediaSendPageFragment::notifyHidden);
}

void notifyPageChanged(int currentPage) {
notifyHiddenIfExists(currentPage - 1);
notifyHiddenIfExists(currentPage + 1);
}

private void notifyHiddenIfExists(int position) {
MediaSendPageFragment fragment = fragments.get(position);

if (fragment != null) {
fragment.notifyHidden();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,8 @@ public void setUri(@NonNull Uri uri) {

@Override
public void restoreState(@NonNull Object state) { }

@Override
public void notifyHidden() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@ public interface MediaSendPageFragment {
@Nullable Object saveState();

void restoreState(@NonNull Object state);

void notifyHidden();
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,19 @@ public void onDestroyView() {
}
}

@Override
public void onPause() {
super.onPause();
notifyHidden();
}

@Override
public void onHiddenChanged(boolean hidden) {
if (hidden) {
notifyHidden();
}
}

@Override
public void setUri(@NonNull Uri uri) {
this.uri = uri;
Expand All @@ -82,4 +95,11 @@ public void setUri(@NonNull Uri uri) {

@Override
public void restoreState(@NonNull Object state) { }

@Override
public void notifyHidden() {
if (getView() != null) {
((VideoPlayer) getView()).pause();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,10 @@ public void restoreState(@NonNull Object state) {
}
}

@Override
public void notifyHidden() {
}

private void changeEntityColor(int selectedColor) {
if (currentSelection != null) {
Renderer renderer = currentSelection.getRenderer();
Expand Down

0 comments on commit 096c9e0

Please sign in to comment.