From d2311a0f2a367405f532610b66798f3127af8a89 Mon Sep 17 00:00:00 2001 From: Floens Date: Sat, 19 Dec 2015 18:34:28 +0100 Subject: [PATCH] Work on a crash fix --- .../core/presenter/ImageViewerPresenter.java | 3 +++ .../floens/chan/ui/view/MultiImageView.java | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java index e03ed749..bfd58f69 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java @@ -25,6 +25,7 @@ import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.PostImage; import org.floens.chan.core.settings.ChanSettings; import org.floens.chan.ui.view.MultiImageView; +import org.floens.chan.utils.Logger; import java.util.ArrayList; import java.util.List; @@ -187,6 +188,8 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. private void onLowResInCenter() { PostImage postImage = images.get(selectedPosition); + Logger.test("onLowResInCenter " + postImage.imageUrl); + if (imageAutoLoad(postImage) && !postImage.spoiler) { if (postImage.type == PostImage.Type.STATIC) { callback.setImageMode(postImage, MultiImageView.Mode.BIGIMAGE); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java index e1dcc1d3..67351ffa 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java @@ -109,7 +109,8 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener public void setMode(final Mode newMode) { if (this.mode != newMode) { -// Logger.d(TAG, "Changing mode from " + this.mode + " to " + newMode + " for " + postImage.thumbnailUrl); + Logger.d(TAG, "Changing mode from " + this.mode + " to " + newMode + " for " + postImage.thumbnailUrl); + Mode oldMode = this.mode; this.mode = newMode; AndroidUtils.waitForMeasure(this, new AndroidUtils.OnMeasuredCallback() { @@ -159,6 +160,10 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener return; } + if (thumbnailRequest != null) { + return; + } + // Also use volley for the thumbnails thumbnailRequest = Chan.getVolleyImageLoader().get(thumbnailUrl, new com.android.volley.toolbox.ImageLoader.ImageListener() { @Override @@ -186,6 +191,10 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener return; } + if (bigImageRequest != null) { + return; + } + callback.showProgress(this, true); bigImageRequest = Chan.getFileCache().downloadFile(imageUrl, new FileCache.DownloadedCallback() { @Override @@ -243,6 +252,10 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener return; } + if (gifRequest != null) { + return; + } + callback.showProgress(this, true); gifRequest = Chan.getFileCache().downloadFile(gifUrl, new FileCache.DownloadedCallback() { @Override @@ -294,6 +307,10 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener } public void setVideo(String videoUrl) { + if (videoRequest != null) { + return; + } + callback.showProgress(this, true); videoRequest = Chan.getFileCache().downloadFile(videoUrl, new FileCache.DownloadedCallback() { @Override @@ -359,6 +376,8 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener videoView.setVideoPath(file.getAbsolutePath()); + Logger.e(TAG, "videoView.start " + postImage.imageUrl + ", " + getWidth() + ", " + getHeight() + ", " + (isAttachedToWindow())); + try { videoView.start(); } catch (IllegalStateException e) {