Coroutinize SpiderQueen
This commit is contained in:
1 parent
dd123d7b87
commit
23184df1b9
5 files changed
+412
-645
No files matched your search
@@ -838,7 +838,7 @@ object DownloadManager : OnSpiderListener {
|
||||
|
||||
override fun onPageFailure(
|
||||
index: Int,
|
||||
error: String,
|
||||
error: String?,
|
||||
finished: Int,
|
||||
downloaded: Int,
|
||||
total: Int
|
||||
@@ -860,11 +860,11 @@ object DownloadManager : OnSpiderListener {
|
||||
SimpleHandler.getInstance().post(task)
|
||||
}
|
||||
|
||||
override fun onGetImageSuccess(index: Int, image: Image) {
|
||||
override fun onGetImageSuccess(index: Int, image: Image?) {
|
||||
// Ignore
|
||||
}
|
||||
|
||||
override fun onGetImageFailure(index: Int, error: String) {
|
||||
override fun onGetImageFailure(index: Int, error: String?) {
|
||||
// Ignore
|
||||
}
|
||||
|
||||
|
||||
@@ -45,8 +45,6 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis
|
||||
public void start() {
|
||||
mSpiderQueen = SpiderQueen.obtainSpiderQueen(mGalleryInfo, SpiderQueen.MODE_READ);
|
||||
mSpiderQueen.addOnSpiderListener(this);
|
||||
if (mSpiderQueen.size() > 0)
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -116,7 +114,7 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis
|
||||
@Override
|
||||
public int size() {
|
||||
if (mSpiderQueen != null) {
|
||||
return mSpiderQueen.size();
|
||||
return mSpiderQueen.getSize();
|
||||
} else {
|
||||
return PageLoader.STATE_ERROR;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -6,17 +6,12 @@ import com.hippo.ehviewer.client.EhEngine.getGalleryPage
|
||||
import com.hippo.ehviewer.client.EhEngine.getGalleryPageApi
|
||||
import com.hippo.ehviewer.client.EhUrl.getPageUrl
|
||||
import com.hippo.ehviewer.client.exception.ParseException
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.DECODE_ERROR
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.ERROR_509
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.NETWORK_ERROR
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.PTOKEN_FAILED_MESSAGE
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.STATE_FAILED
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.STATE_FINISHED
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.Companion.STATE_FAILED
|
||||
import com.hippo.ehviewer.spider.SpiderQueen.Companion.STATE_FINISHED
|
||||
import com.hippo.image.Image.Companion.decode
|
||||
import com.hippo.util.ExceptionUtils
|
||||
import com.hippo.yorozuya.StringUtils
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.currentCoroutineContext
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -27,12 +22,12 @@ import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.coroutines.sync.withPermit
|
||||
import moe.tarsin.coroutines.runSuspendCatching
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
class SpiderQueenWorker(private val queen: SpiderQueen) : CoroutineScope {
|
||||
class SpiderQueenWorker(private val queen: SpiderQueen) : CoroutineScope by queen {
|
||||
private val spiderDen
|
||||
get() = queen.mSpiderDen
|
||||
private val spiderInfo by lazy { queen.mSpiderInfo.get() }
|
||||
private val spiderInfo
|
||||
get() = queen.mSpiderInfo
|
||||
private val mFetcherJobMap = hashMapOf<Int, Job>()
|
||||
private val mSemaphore = Semaphore(Settings.getMultiThreadDownload())
|
||||
private val pTokenLock = Mutex()
|
||||
@@ -41,9 +36,7 @@ class SpiderQueenWorker(private val queen: SpiderQueen) : CoroutineScope {
|
||||
private val mDownloadDelay = Settings.getDownloadDelay()
|
||||
private var isDownloadMode = false
|
||||
private val size
|
||||
get() = queen.size()
|
||||
override val coroutineContext: CoroutineContext
|
||||
get() = Dispatchers.IO + Job()
|
||||
get() = queen.size
|
||||
|
||||
fun cancelDecode(index: Int) {
|
||||
decoder.cancel(index)
|
||||
|
||||
@@ -276,11 +276,6 @@ class ReaderActivity : EhActivity() {
|
||||
|
||||
mGalleryProvider!!.start()
|
||||
|
||||
// Get start page
|
||||
if (savedInstanceState == null) {
|
||||
mCurrentIndex = if (mPage >= 0) mPage else mGalleryProvider!!.startPage
|
||||
}
|
||||
|
||||
lifecycleScope.launchUI {
|
||||
mGalleryProvider!!.state.collect {
|
||||
if (it == PageLoader.STATE_READY) {
|
||||
@@ -295,9 +290,10 @@ class ReaderActivity : EhActivity() {
|
||||
}
|
||||
|
||||
fun setGallery() {
|
||||
// Get start page
|
||||
if (mCurrentIndex == 0) mCurrentIndex = if (mPage >= 0) mPage else mGalleryProvider!!.startPage
|
||||
mSize = mGalleryProvider!!.size()
|
||||
val viewerMode =
|
||||
ReadingModeType.fromPreference(readerPreferences.defaultReadingMode().get())
|
||||
val viewerMode = ReadingModeType.fromPreference(readerPreferences.defaultReadingMode().get())
|
||||
binding.actionReadingMode.setImageResource(viewerMode.iconRes)
|
||||
viewer?.destroy()
|
||||
viewer = ReadingModeType.toViewer(readerPreferences.defaultReadingMode().get(), this)
|
||||
|
||||
Reference in new issue
Block a user