From c12209095a1fdf26f9fe454ccf40a9c8a36147a5 Mon Sep 17 00:00:00 2001 From: roynatech2544 Date: Tue, 11 Oct 2022 12:33:05 +0900 Subject: [PATCH] universal7885: parts: Use isMutexLocked() to disable switch if needed --- .../src/com/eurekateam/samsungextras/interfaces/Swap.kt | 1 + .../src/com/eurekateam/samsungextras/swap/SwapFragment.kt | 6 ++++++ .../apps/aidl-support/parts/default/SmartChargingImpl.cpp | 2 +- .../apps/aidl-support/parts/default/Swap.cpp | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt index 8230eda..da78f56 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/interfaces/Swap.kt @@ -29,6 +29,7 @@ class Swap { fun setSwapOn(mEnabled: Boolean) = if (mEnabled) mSwap.setSwapOn() else mSwap.setSwapOff() fun mkFile(mSize: Int) = mSwap.makeSwapFile(mSize) fun delFile() = mSwap.removeSwapFile() + fun isLocked() : Boolean = mSwap.isMutexLocked() external fun getFreeSpace(): Double external fun getSwapSize(): Long } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt index a5caaa1..1c3b47a 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/swap/SwapFragment.kt @@ -29,6 +29,8 @@ import com.android.settingslib.widget.OnMainSwitchChangeListener import com.eurekateam.samsungextras.R import com.eurekateam.samsungextras.interfaces.Swap import java.lang.Thread +import java.util.concurrent.ScheduledThreadPoolExecutor +import java.util.concurrent.TimeUnit class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, OnMainSwitchChangeListener { private lateinit var mSwapSizePref: SeekBarPreference @@ -36,6 +38,7 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi private lateinit var mSwapEnable: MainSwitchPreference private lateinit var mFreeSpace: Preference private lateinit var mSwapFileSize: Preference + private var mPoolExecutor = ScheduledThreadPoolExecutor(3) private var mSwapSize = 0 override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { @@ -55,8 +58,11 @@ class SwapFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeLi mFreeSpace.summary = "${mSwap.getFreeSpace()} GB" mSwapFileSize = findPreference(INFO_SWAP_FILE_SIZE)!! 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 { val mSwap = Swap() if (preference == mSwapSizePref) { diff --git a/universal7885-common/apps/aidl-support/parts/default/SmartChargingImpl.cpp b/universal7885-common/apps/aidl-support/parts/default/SmartChargingImpl.cpp index 02739d2..c8c5a0b 100644 --- a/universal7885-common/apps/aidl-support/parts/default/SmartChargingImpl.cpp +++ b/universal7885-common/apps/aidl-support/parts/default/SmartChargingImpl.cpp @@ -33,7 +33,7 @@ void SmartChargeImpl::start(void) { shouldRun = true; monitor = new std::thread(battery_monitor, limit_percent, restart_percent, &charge_limit_cnt, &restart_cnt); - monitor->join(); + monitor->detach(); } void SmartChargeImpl::stop(void) { diff --git a/universal7885-common/apps/aidl-support/parts/default/Swap.cpp b/universal7885-common/apps/aidl-support/parts/default/Swap.cpp index 90084a0..4a19e97 100644 --- a/universal7885-common/apps/aidl-support/parts/default/Swap.cpp +++ b/universal7885-common/apps/aidl-support/parts/default/Swap.cpp @@ -75,12 +75,12 @@ static void swapon_func(void) { } static void swapoff_func(void) { - if (!swapfile_exist()) return; const std::lock_guard lock(thread_lock); swapoff(SWAP_PATH); } ::ndk::ScopedAStatus SwapOnData::setSwapOff() { + if (!swapfile_exist()) return ::ndk::ScopedAStatus::ok(); std::thread swapoff_thread(swapoff_func); swapoff_thread.detach(); return ::ndk::ScopedAStatus::ok();