diff --git a/XposedLibrary/XposedBridgeApi.jar b/XposedLibrary/XposedBridgeApi.jar
index f5dc54b..43862da 100644
Binary files a/XposedLibrary/XposedBridgeApi.jar and b/XposedLibrary/XposedBridgeApi.jar differ
diff --git a/XposedLibrary/lib/full_framework_15.jar b/XposedLibrary/lib/full_framework_15.jar
new file mode 100644
index 0000000..36129b6
Binary files /dev/null and b/XposedLibrary/lib/full_framework_15.jar differ
diff --git a/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java b/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java
new file mode 100644
index 0000000..97cf0d3
--- /dev/null
+++ b/XposedLibrary/src/de/robv/android/xposed/library/ui/SeparatorPreference.java
@@ -0,0 +1,36 @@
+package de.robv.android.xposed.library.ui;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.preference.Preference;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.AbsListView;
+import android.widget.ImageView;
+
+public class SeparatorPreference extends Preference {
+ int color = Color.GRAY;
+ int height = 7;
+
+ public SeparatorPreference(Context context) {
+ super(context);
+ setSelectable(false);
+ }
+
+ public void setColor(int color) {
+ this.color = color;
+ }
+
+ public void setHeight(int height) {
+ this.height = height;
+ }
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ ImageView iview = new ImageView(getContext());
+ iview.setBackgroundColor(color);
+ iview.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, height));
+ return iview;
+ }
+}
\ No newline at end of file
diff --git a/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java b/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java
new file mode 100644
index 0000000..f29fcbe
--- /dev/null
+++ b/XposedLibrary/src/de/robv/android/xposed/library/ui/TextViewPreference.java
@@ -0,0 +1,29 @@
+package de.robv.android.xposed.library.ui;
+
+import android.content.Context;
+import android.preference.Preference;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class TextViewPreference extends Preference {
+ private TextView textView = null;
+
+ public TextViewPreference(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ return getTextView();
+ }
+
+ public TextView getTextView() {
+ if (textView == null) {
+ textView = new TextView(getContext());
+ textView.setId(android.R.id.title);
+ textView.setPadding(5,5,5,5);
+ }
+ return textView;
+ }
+}
diff --git a/XposedTweakbox/.classpath b/XposedTweakbox/.classpath
index 8564b5c..e993954 100644
--- a/XposedTweakbox/.classpath
+++ b/XposedTweakbox/.classpath
@@ -5,5 +5,6 @@
+
diff --git a/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff b/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff
deleted file mode 100644
index 2d9cbfc..0000000
Binary files a/XposedTweakbox/assets/crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff and /dev/null differ
diff --git a/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock
new file mode 100644
index 0000000..54b2f06
Binary files /dev/null and b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock differ
diff --git a/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS
new file mode 100644
index 0000000..d4ae70a
Binary files /dev/null and b/XposedTweakbox/assets/libs/libsurfaceflinger.so_I9100_Stock_LS differ
diff --git a/XposedTweakbox/assets/nativelibs.xml b/XposedTweakbox/assets/nativelibs.xml
new file mode 100644
index 0000000..54fd9de
--- /dev/null
+++ b/XposedTweakbox/assets/nativelibs.xml
@@ -0,0 +1,13 @@
+
+
+
+ CRT off/on fix for stock-based I9100 ROMs
+
+
+ CRT off/on fix for stock-based I9100 ROMs (including support for landscape)
+
+
\ No newline at end of file
diff --git a/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java b/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java
index 261057a..4ea5583 100644
--- a/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java
+++ b/XposedTweakbox/src/de/robv/android/xposed/mods/tweakbox/XposedTweakbox.java
@@ -1,8 +1,6 @@
package de.robv.android.xposed.mods.tweakbox;
-import static de.robv.android.xposed.XposedHelpers.assetAsByteArray;
import static de.robv.android.xposed.XposedHelpers.getIntField;
-import static de.robv.android.xposed.XposedHelpers.getMD5Sum;
import static de.robv.android.xposed.XposedHelpers.getSurroundingThis;
import static de.robv.android.xposed.XposedHelpers.setFloatField;
import static de.robv.android.xposed.XposedHelpers.setIntField;
@@ -16,11 +14,11 @@
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.content.res.XModuleResources;
import android.content.res.XResources;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.drawable.ColorDrawable;
+import android.os.SystemProperties;
import android.telephony.SignalStrength;
import android.util.DisplayMetrics;
import android.view.Display;
@@ -49,7 +47,6 @@ public class XposedTweakbox implements IXposedHookZygoteInit, IXposedHookInitPac
@Override
public void initZygote() {
pref = AndroidAppHelper.getDefaultSharedPreferencesForPackage(MY_PACKAGE_NAME);
- Resources tweakboxRes = XModuleResources.createInstance(MODULE_PATH, null);
try {
// this is not really necessary if no effects are wanted, but it speeds up turning off the screen
@@ -68,20 +65,6 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
}
}
});
-
- if (pref.getBoolean("crt_off_effect", false) || pref.getBoolean("crt_on_effect", false)) {
- // apply CRT off fix by Tungstwenty plus CRT on effect
- String libsurfaceflingerMD5 = getMD5Sum("/system/lib/libsurfaceflinger.so");
- if (libsurfaceflingerMD5.equals("d506192d5049a4042fb84c0265edfe42")) {
- byte[] crtPatch = assetAsByteArray(tweakboxRes, "crtfix_samsung_d506192d5049a4042fb84c0265edfe42.bsdiff");
- if (!XposedBridge.patchNativeLibrary("/system/lib/libsurfaceflinger.so", crtPatch, "/system/bin/surfaceflinger"))
- XposedBridge.log("CRT patch could not be applied");
- } else if (libsurfaceflingerMD5.equals("3262c644b7b7079958db82bd992f2a46")) {
- XposedBridge.log("CRT patch not necessary, library is already patched");
- } else {
- XposedBridge.log("CRT patch could not be applied because libsurfaceflinger.so has unknown MD5 sum " + libsurfaceflingerMD5);
- }
- }
} catch (Exception e) { XposedBridge.log(e); }
try {
@@ -288,6 +271,19 @@ protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
}
});
} catch (Exception e) { XposedBridge.log(e); }
+ } else if (lpparam.packageName.equals("android")) {
+ if (pref.getBoolean("crt_off_effect", false) || pref.getBoolean("crt_on_effect", false)) {
+ try {
+ Class> classMOL = Class.forName("com.android.internal.policy.impl.PhoneWindowManager$MyOrientationListener", false, lpparam.classLoader);
+ XposedBridge.hookMethod(classMOL.getDeclaredMethod("onProposedRotationChanged", int.class), new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+ int rotation = (Integer) param.args[0];
+ SystemProperties.set("hw.crt.landscape", String.valueOf(rotation % 2));
+ }
+ });
+ } catch (Throwable t) { XposedBridge.log(t); }
+ }
}
}