This commit is contained in:
tarsin committed 2023-01-02 21:39:46 +08:00
1 parent 80fcda149b
commit 57d4967f2a
4 files changed
+36

No files matched your search

@@ -41,6 +41,7 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
@@ -187,6 +188,11 @@ public class ArchivePageLoader extends PageLoader2 {
return dst;
}
@Override
protected void preloadPages(@NonNull List<Integer> pages) {
}
private class ArchiveHostTask implements Runnable {
public final Thread[] archiveThreads = new Thread[]{
new Thread(new ArchiveTask()),
@@ -25,6 +25,7 @@ import com.hippo.image.Image;
import com.hippo.unifile.UniFile;
import com.hippo.yorozuya.SimpleHandler;
import java.util.List;
import java.util.Locale;
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader;
@@ -207,6 +208,13 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis
notifyPageFailed(index);
}
@Override
protected void preloadPages(@NonNull List<Integer> pages) {
if (mSpiderQueen != null) {
mSpiderQueen.preloadPages(pages);
}
}
private static class ReleaseTask implements Runnable {
private SpiderQueen mSpiderQueen;
@@ -460,6 +460,19 @@ public final class SpiderQueen implements Runnable {
}
}
public void preloadPages(@NonNull List<Integer> pages) {
if (mQueenThread == null) {
return;
}
synchronized (mRequestPageQueue) {
pages.removeAll(mRequestPageQueue);
pages.removeAll(mRequestPageQueue2);
pages.removeAll(mDecodeRequestQueue);
mRequestPageQueue2.addAll(pages);
}
}
/**
* @return String for error<br>
* Float for download percent<br>
@@ -17,6 +17,8 @@ abstract class PageLoader {
(0 until size()).map { ReaderPage(it) }
}
private val mPreloads = MathUtils.clamp(com.hippo.ehviewer.Settings.getPreloadImage(), 0, 100)
var state = MutableStateFlow(STATE_WAIT)
abstract val error: String
@@ -41,12 +43,19 @@ abstract class PageLoader {
notifyPageSucceed(index, image)
else
onRequest(index)
// val pagesAbsent = (index until (mPreloads + index).coerceAtMost(size())).toMutableList().removeAll(mImageCache.snapshot().keys)
// Should we refresh our LruCache ?
val pagesAbsent = (index until (mPreloads + index).coerceAtMost(size())).mapNotNull { it.takeIf { mImageCache[it] == null } }
preloadPages(pagesAbsent)
}
fun retryPage(page: ReaderPage) {
onForceRequest(mPages.indexOf(page))
}
protected abstract fun preloadPages(pages: List<Int>)
protected abstract fun onRequest(index: Int)
protected abstract fun onForceRequest(index: Int)