Update libsu and dependencies

This commit is contained in:
topjohnwu
2024-06-18 11:26:18 -07:00
parent eb400f19b1
commit cfd1e0cf22
4 changed files with 6 additions and 46 deletions

View File

@@ -10,7 +10,6 @@ import androidx.profileinstaller.ProfileInstaller
import com.topjohnwu.magisk.BuildConfig
import com.topjohnwu.magisk.StubApk
import com.topjohnwu.magisk.core.di.ServiceLocator
import com.topjohnwu.magisk.core.utils.DispatcherExecutor
import com.topjohnwu.magisk.core.utils.NetworkObserver
import com.topjohnwu.magisk.core.utils.ProcessLifecycle
import com.topjohnwu.magisk.core.utils.RootUtils
@@ -24,6 +23,7 @@ import com.topjohnwu.superuser.internal.UiThreadHandler
import com.topjohnwu.superuser.ipc.RootService
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.launch
import timber.log.Timber
import java.lang.ref.WeakReference
@@ -73,7 +73,7 @@ open class App() : Application() {
.setInitializers(ShellInit::class.java)
.setContext(base)
.setTimeout(2))
Shell.EXECUTOR = DispatcherExecutor(Dispatchers.IO)
Shell.EXECUTOR = Dispatchers.IO.asExecutor()
RootUtils.bindTask = RootService.bindOrTask(
intent<RootUtils>(),
UiThreadHandler.executor,

View File

@@ -1,40 +0,0 @@
package com.topjohnwu.magisk.core.utils
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Runnable
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import java.util.concurrent.AbstractExecutorService
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
class DispatcherExecutor(dispatcher: CoroutineDispatcher) : AbstractExecutorService() {
private val job = SupervisorJob()
private val scope = CoroutineScope(job + dispatcher)
private val latch = CountDownLatch(1)
init {
job.invokeOnCompletion { latch.countDown() }
}
override fun execute(command: Runnable) {
scope.launch {
command.run()
}
}
override fun shutdown() = job.cancel()
override fun shutdownNow(): List<Runnable> {
job.cancel()
return emptyList()
}
override fun isShutdown() = job.isCancelled
override fun isTerminated() = job.isCancelled && job.isCompleted
override fun awaitTermination(timeout: Long, unit: TimeUnit) = latch.await(timeout, unit)
}