universal7885: parts: Use isMutexLocked() to disable switch if needed

This commit is contained in:
roynatech2544 2022-10-11 12:33:05 +09:00
commit c12209095a
4 changed files with 9 additions and 2 deletions

View file

@ -29,6 +29,7 @@ class Swap {
fun setSwapOn(mEnabled: Boolean) = if (mEnabled) mSwap.setSwapOn() else mSwap.setSwapOff() fun setSwapOn(mEnabled: Boolean) = if (mEnabled) mSwap.setSwapOn() else mSwap.setSwapOff()
fun mkFile(mSize: Int) = mSwap.makeSwapFile(mSize) fun mkFile(mSize: Int) = mSwap.makeSwapFile(mSize)
fun delFile() = mSwap.removeSwapFile() fun delFile() = mSwap.removeSwapFile()
fun isLocked() : Boolean = mSwap.isMutexLocked()
external fun getFreeSpace(): Double external fun getFreeSpace(): Double
external fun getSwapSize(): Long external fun getSwapSize(): Long
} }

View file

@ -29,6 +29,8 @@ import com.android.settingslib.widget.OnMainSwitchChangeListener
import com.eurekateam.samsungextras.R import com.eurekateam.samsungextras.R
import com.eurekateam.samsungextras.interfaces.Swap import com.eurekateam.samsungextras.interfaces.Swap
import java.lang.Thread import java.lang.Thread
import java.util.concurrent.ScheduledThreadPoolExecutor
import java.util.concurrent.TimeUnit
class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, OnMainSwitchChangeListener { class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, OnMainSwitchChangeListener {
private lateinit var mSwapSizePref: SeekBarPreference private lateinit var mSwapSizePref: SeekBarPreference
@ -36,6 +38,7 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi
private lateinit var mSwapEnable: MainSwitchPreference private lateinit var mSwapEnable: MainSwitchPreference
private lateinit var mFreeSpace: Preference private lateinit var mFreeSpace: Preference
private lateinit var mSwapFileSize: Preference private lateinit var mSwapFileSize: Preference
private var mPoolExecutor = ScheduledThreadPoolExecutor(3)
private var mSwapSize = 0 private var mSwapSize = 0
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@ -55,8 +58,11 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi
mFreeSpace.summary = "${mSwap.getFreeSpace()} GB" mFreeSpace.summary = "${mSwap.getFreeSpace()} GB"
mSwapFileSize = findPreference(INFO_SWAP_FILE_SIZE)!! mSwapFileSize = findPreference(INFO_SWAP_FILE_SIZE)!!
mSwapFileSize.summary = "${mSwap.getSwapSize()} MB" mSwapFileSize.summary = "${mSwap.getSwapSize()} MB"
mPoolExecutor.scheduleWithFixedDelay(mScheduler, 0, 2, TimeUnit.SECONDS)
} }
private val mScheduler = Runnable { requireActivity().runOnUiThread { mSwapEnable.isEnabled = !mSwap.isLocked() } }
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
val mSwap = Swap() val mSwap = Swap()
if (preference == mSwapSizePref) { if (preference == mSwapSizePref) {

View file

@ -33,7 +33,7 @@ void SmartChargeImpl::start(void) {
shouldRun = true; shouldRun = true;
monitor = new std::thread(battery_monitor, limit_percent, restart_percent, monitor = new std::thread(battery_monitor, limit_percent, restart_percent,
&charge_limit_cnt, &restart_cnt); &charge_limit_cnt, &restart_cnt);
monitor->join(); monitor->detach();
} }
void SmartChargeImpl::stop(void) { void SmartChargeImpl::stop(void) {

View file

@ -75,12 +75,12 @@ static void swapon_func(void) {
} }
static void swapoff_func(void) { static void swapoff_func(void) {
if (!swapfile_exist()) return;
const std::lock_guard<std::mutex> lock(thread_lock); const std::lock_guard<std::mutex> lock(thread_lock);
swapoff(SWAP_PATH); swapoff(SWAP_PATH);
} }
::ndk::ScopedAStatus SwapOnData::setSwapOff() { ::ndk::ScopedAStatus SwapOnData::setSwapOff() {
if (!swapfile_exist()) return ::ndk::ScopedAStatus::ok();
std::thread swapoff_thread(swapoff_func); std::thread swapoff_thread(swapoff_func);
swapoff_thread.detach(); swapoff_thread.detach();
return ::ndk::ScopedAStatus::ok(); return ::ndk::ScopedAStatus::ok();