X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/ms2-fixes/blobdiff_plain/08fec0be398954b85575af913448efa8a2e34d19..dea0f4b0ccb139fe558e88c18547c019c934add0:/MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java diff --git a/MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java b/MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java index 93fd221..6901353 100644 --- a/MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java +++ b/MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java @@ -19,10 +19,7 @@ public class DebounceModuleHelper } public void loadModule() { - SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); - - int delay = settings.getInt("debounce_delay", 10); - loadModule(delay); + loadModule(getSavedDelay()); } public synchronized void loadModule(int delay) { @@ -30,7 +27,12 @@ public class DebounceModuleHelper extractModule(); - // FIXME: Read settings from database... + SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + if (is_safe_to_load()) { + editor.putBoolean("safe_to_load", false); + editor.commit(); + } try { Process insmod = Runtime.getRuntime().exec(new String[]{"su","-c","/system/bin/insmod " + debounce_ko + " debounce_delay=" + delay}); @@ -38,18 +40,18 @@ public class DebounceModuleHelper } catch (Exception e) { return; } - + + if (!isLoaded()) { + return; + } + if (getDelay() <= 0) { return; } /* Module was obviously loaded, so it is safe to load on boot */ - if (!is_safe_to_load()) { - SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean("safe_to_load", true); - editor.commit(); - } + editor.putBoolean("safe_to_load", true); + editor.commit(); } public synchronized void unloadModule() { @@ -98,6 +100,32 @@ public class DebounceModuleHelper return debounce_delay; } + public synchronized void setDelay(int delay) { + if (isLoaded()) { + if (getDelay() == delay) { + return; + } + + unloadModule(); + } + + loadModule(delay); + } + + public synchronized int getSavedDelay() { + SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + + return settings.getInt("debounce_delay", 10); + } + + public synchronized void setSavedDelay(int delay) { + SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + + editor.putInt("debounce_delay", delay); + editor.commit(); + } + public synchronized boolean is_safe_to_load() { SharedPreferences settings = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); boolean safe_to_load = settings.getBoolean("safe_to_load", false);