diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 887342c7e44ee..40312cfa60094 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -480,6 +480,17 @@ public class Process {
*/
public static final int THREAD_PRIORITY_URGENT_AUDIO = -19;
+ /**
+ * Real-time priority used for critical UI tasks
+ * This gets converted to be lined into the SCHED_RR queue.
+ * Applications can not normally change to this priority.
+ * Use with {@link #setThreadPriority(int)} and
+ * {@link #setThreadPriority(int, int)}, not with the normal
+ * {@link java.lang.Thread} class.
+ * @hide
+ */
+ public static final int THREAD_PRIORITY_REALTIME = -21;
+
/**
* Minimum increment to make a priority more favorable.
*/
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 3cf5d5fdde24b..d9d65dd16f957 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -1462,19 +1462,19 @@ static const JNINativeMethod gMethods[] = {
{"native_start", "()V", (void *)android_media_AudioTrack_start},
{"native_stop", "()V", (void *)android_media_AudioTrack_stop},
{"native_pause", "()V", (void *)android_media_AudioTrack_pause},
- {"native_flush", "()V", (void *)android_media_AudioTrack_flush},
+ {"native_flush", "!()V", (void *)android_media_AudioTrack_flush},
{"native_setup",
"(Ljava/lang/Object;Ljava/lang/Object;[IIIIII[ILandroid/os/Parcel;"
"JZILjava/lang/Object;Ljava/lang/String;)I",
(void *)android_media_AudioTrack_setup},
{"native_finalize", "()V", (void *)android_media_AudioTrack_finalize},
{"native_release", "()V", (void *)android_media_AudioTrack_release},
- {"native_write_byte", "([BIIIZ)I", (void *)android_media_AudioTrack_writeArray},
- {"native_write_native_bytes", "(Ljava/nio/ByteBuffer;IIIZ)I",
+ {"native_write_byte", "!([BIIIZ)I", (void *)android_media_AudioTrack_writeArray},
+ {"native_write_native_bytes", "!(Ljava/nio/ByteBuffer;IIIZ)I",
(void *)android_media_AudioTrack_write_native_bytes},
- {"native_write_short", "([SIIIZ)I",
+ {"native_write_short", "!([SIIIZ)I",
(void *)android_media_AudioTrack_writeArray},
- {"native_write_float", "([FIIIZ)I",
+ {"native_write_float", "!([FIIIZ)I",
(void *)android_media_AudioTrack_writeArray},
{"native_setVolume", "(FF)V", (void *)android_media_AudioTrack_set_volume},
{"native_get_buffer_size_frames", "()I",
diff --git a/packages/SystemUI/res/values/lunaris_config.xml b/packages/SystemUI/res/values/lunaris_config.xml
index bb9ca52e8766a..2094f7d9f45e0 100644
--- a/packages/SystemUI/res/values/lunaris_config.xml
+++ b/packages/SystemUI/res/values/lunaris_config.xml
@@ -6,7 +6,7 @@
1000
-
+
@@ -17,6 +17,8 @@
/sys/class/thermal/thermal_zone0/temp
+ /sys/class/thermal/thermal_zone24/temp
+ /sys/class/thermal/thermal_zone65/temp
1
@@ -25,7 +27,7 @@
- /sys/class/drm/sde-crtc-0/measured_fps
+ /sys/class/drm/card0-sde-crtc-0/measured_fps
1000
@@ -35,7 +37,7 @@
999
-
+
true
diff --git a/packages/SystemUI/src/com/android/systemui/CPUInfoService.java b/packages/SystemUI/src/com/android/systemui/CPUInfoService.java
index 05dfc1f1eadfb..9a7b3b28c31ff 100644
--- a/packages/SystemUI/src/com/android/systemui/CPUInfoService.java
+++ b/packages/SystemUI/src/com/android/systemui/CPUInfoService.java
@@ -60,14 +60,19 @@ public class CPUInfoService extends Service {
private int CPU_TEMP_DIVIDER = 1;
private String CPU_TEMP_SENSOR = "";
+ private String GPU_TEMP_SENSOR = "";
+ private String BATTERY_TEMP_SENSOR = "";
private String DISPLAY_CPUS = "";
private boolean mCpuTempAvail;
+ private boolean mGpuTempAvail;
+ private boolean mBatTempAvail;
private static final String NUM_OF_CPUS_PATH = "/sys/devices/system/cpu/present";
private static final String CURRENT_CPU = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq";
private static final String CPU_ROOT = "/sys/devices/system/cpu/cpu";
private static final String CPU_CUR_TAIL = "/cpufreq/scaling_cur_freq";
private static final String CPU_GOV_TAIL = "/cpufreq/scaling_governor";
+ private static final String GPU_FREQ_PATH = "/sys/class/kgsl/kgsl-3d0/gpuclk";
private class CPUView extends View {
private Paint mOnlinePaint;
@@ -79,6 +84,9 @@ public class CPUInfoService extends Service {
private int mNeededWidth;
private int mNeededHeight;
private String mCpuTemp;
+ private String mGpuTemp;
+ private String mBatTemp;
+ private String mGpuFreq;
private boolean mDataAvail;
@@ -91,9 +99,12 @@ public class CPUInfoService extends Service {
String msgData = (String) msg.obj;
try {
String[] parts=msgData.split(";");
- mCpuTemp=parts[0];
+ mCpuTemp = parts[0];
+ mGpuTemp = parts[1];
+ mBatTemp = parts[2];
+ mGpuFreq = parts[3];
- String[] cpuParts=parts[1].split("\\|");
+ String[] cpuParts=parts[4].split("\\|");
for(int i=0; i 1) {
- return String.format("%s",
- Integer.parseInt(cpuTemp) / CPU_TEMP_DIVIDER);
- } else {
- return cpuTemp;
+ private String getTemp(String rawTemp) {
+ try {
+ float temp = Float.parseFloat(rawTemp);
+ if (CPU_TEMP_DIVIDER > 1) {
+ return String.format("%.2f", temp / CPU_TEMP_DIVIDER);
+ } else {
+ return rawTemp;
+ }
+ } catch (NumberFormatException e) {
+ return "0";
}
}
@@ -198,7 +213,23 @@ public class CPUInfoService extends Service {
int y = mPaddingTop - (int)mAscent;
if(!mCpuTemp.equals("0")) {
- canvas.drawText("Temp: " + getCpuTemp(mCpuTemp) + "°C",
+ canvas.drawText("CPU: " + getTemp(mCpuTemp) + "°C",
+ RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
+ y += mFH;
+ }
+
+ if(!mGpuTemp.equals("0")) {
+ String gpuText = "GPU: " + getTemp(mGpuTemp) + "°C";
+ if(!mGpuFreq.equals("0")) {
+ gpuText += " " + toMHzGPU(mGpuFreq);
+ }
+ canvas.drawText(gpuText,
+ RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
+ y += mFH;
+ }
+
+ if(!mBatTemp.equals("0")) {
+ canvas.drawText("BAT: " + getTemp(mBatTemp) + "°C",
RIGHT-mPaddingRight-mMaxWidth, y-1, mOnlinePaint);
y += mFH;
}
@@ -224,7 +255,8 @@ public class CPUInfoService extends Service {
final int NW = mNumCpus;
int neededWidth = mPaddingLeft + mPaddingRight + mMaxWidth;
- int neededHeight = mPaddingTop + mPaddingBottom + (mFH*((mCpuTempAvail?1:0)+NW));
+ int numExtraLines = (mCpuTempAvail?1:0) + (mGpuTempAvail?1:0) + (mBatTempAvail?1:0);
+ int neededHeight = mPaddingTop + mPaddingBottom + (mFH*(numExtraLines+NW));
if (neededWidth != mNeededWidth || neededHeight != mNeededHeight) {
mNeededWidth = neededWidth;
mNeededHeight = neededHeight;
@@ -235,7 +267,23 @@ public class CPUInfoService extends Service {
}
private String toMHz(String mhzString) {
- return new StringBuilder().append(Integer.valueOf(mhzString) / 1000).append(" MHz").toString();
+ try {
+ return new StringBuilder().append(Integer.valueOf(mhzString) / 1000).append(" MHz").toString();
+ } catch (Exception e) {
+ return "0 MHz";
+ }
+ }
+
+ private String toMHzGPU(String hzString) {
+ try {
+ long val = Long.parseLong(hzString);
+ if (val > 10000000) {
+ return (val / 1000000) + " MHz";
+ }
+ return (val / 1000) + " MHz";
+ } catch (Exception e) {
+ return "";
+ }
}
public Handler getHandler(){
@@ -262,9 +310,18 @@ public class CPUInfoService extends Service {
while (!mInterrupt) {
sleep(500);
StringBuffer sb=new StringBuffer();
+
String cpuTemp = CPUInfoService.readOneLine(CPU_TEMP_SENSOR);
- sb.append(cpuTemp == null ? "0" : cpuTemp);
- sb.append(";");
+ sb.append(cpuTemp == null ? "0" : cpuTemp).append(";");
+
+ String gpuTemp = CPUInfoService.readOneLine(GPU_TEMP_SENSOR);
+ sb.append(gpuTemp == null ? "0" : gpuTemp).append(";");
+
+ String batTemp = CPUInfoService.readOneLine(BATTERY_TEMP_SENSOR);
+ sb.append(batTemp == null ? "0" : batTemp).append(";");
+
+ String gpuFreq = CPUInfoService.readOneLine(GPU_FREQ_PATH);
+ sb.append(gpuFreq == null ? "0" : gpuFreq).append(";");
for(int i=0; i