From a9a5b62e5a2e3fd47baaa5a2190b7ac8b35b9884 Mon Sep 17 00:00:00 2001 From: Nullptr Date: Wed, 11 Jan 2023 11:03:05 +0800 Subject: [PATCH] Make mLock non-static --- service/build.gradle.kts | 2 +- .../github/libxposed/service/RemotePreferences.java | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/service/build.gradle.kts b/service/build.gradle.kts index d1ee9a2..629caa8 100644 --- a/service/build.gradle.kts +++ b/service/build.gradle.kts @@ -50,7 +50,7 @@ publishing { register("service") { artifactId = "service" group = "io.github.libxposed" - version = "100" + version = "100-1.0.0" pom { name.set("service") description.set("Modern Xposed Service Interface") diff --git a/service/src/main/java/io/github/libxposed/service/RemotePreferences.java b/service/src/main/java/io/github/libxposed/service/RemotePreferences.java index a4da0e4..658b4ea 100644 --- a/service/src/main/java/io/github/libxposed/service/RemotePreferences.java +++ b/service/src/main/java/io/github/libxposed/service/RemotePreferences.java @@ -28,11 +28,11 @@ public final class RemotePreferences implements SharedPreferences { private static final String TAG = "RemotePreferences"; private static final Object CONTENT = new Object(); - private static final Lock LOCK = new ReentrantLock(); private static final Handler HANDLER = new Handler(Looper.getMainLooper()); private final XposedService mService; private final String mGroup; + private final Lock mLock = new ReentrantLock(); private final Map mMap = new ConcurrentHashMap<>(); private final Map mListeners = Collections.synchronizedMap(new WeakHashMap<>()); @@ -199,10 +199,8 @@ public final class RemotePreferences implements SharedPreferences { List changes = new ArrayList<>(mDelete.size() + mMap.size()); changes.addAll(mDelete); changes.addAll(mMap.keySet()); - synchronized (mListeners) { - for (var key : changes) { - mListeners.keySet().forEach(listener -> listener.onSharedPreferenceChanged(RemotePreferences.this, key)); - } + for (var key : changes) { + mListeners.keySet().forEach(listener -> listener.onSharedPreferenceChanged(RemotePreferences.this, key)); } var bundle = new Bundle(); @@ -224,12 +222,12 @@ public final class RemotePreferences implements SharedPreferences { @Override public boolean commit() { - if (!LOCK.tryLock()) return false; + if (!mLock.tryLock()) return false; try { doUpdate(true); return true; } finally { - LOCK.unlock(); + mLock.unlock(); } }