Merge changes Idcdd2978,Ied564b31,I6179126d into eclair
* changes:
Fix 2233444 (No IME).
Revert "Revert "Fix notification bar performance.""
Revert "Revert "fix 2233092 - Notification shade gets stuck half-open""
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp
index c371a23..86c3df6 100644
--- a/libs/binder/IPCThreadState.cpp
+++ b/libs/binder/IPCThreadState.cpp
@@ -14,10 +14,13 @@
* limitations under the License.
*/
+#define LOG_TAG "IPCThreadState"
+
#include <binder/IPCThreadState.h>
#include <binder/Binder.h>
#include <binder/BpBinder.h>
+#include <cutils/sched_policy.h>
#include <utils/Debug.h>
#include <utils/Log.h>
#include <utils/TextOutput.h>
@@ -418,7 +421,32 @@
alog << "Processing top-level Command: "
<< getReturnString(cmd) << endl;
}
+
+ bool isTainted = false;
+
+ {
+ SchedPolicy policy;
+ get_sched_policy(getpid(), &policy);
+
+ if (policy == SP_BACKGROUND) {
+ isTainted = true;
+ }
+ }
+
result = executeCommand(cmd);
+
+ // Make sure that after executing the commands that we put the thread back into the
+ // default cgroup.
+ {
+ int pid = getpid();
+ SchedPolicy policy;
+ get_sched_policy(pid, &policy);
+
+ if (!isTainted && policy == SP_BACKGROUND) {
+ LOGW("*** THREAD %p (PID %p) was left in SP_BACKGROUND with a priority of %d\n",
+ (void*)pthread_self(), pid, getpriority(PRIO_PROCESS, pid));
+ }
+ }
}
// Let this thread exit the thread pool if it is no longer
diff --git a/opengl/libagl/matrix.cpp b/opengl/libagl/matrix.cpp
index 21ef50e..3c50977 100644
--- a/opengl/libagl/matrix.cpp
+++ b/opengl/libagl/matrix.cpp
@@ -741,20 +741,19 @@
void point4__mvui(transform_t const* mx, vec4_t* lhs, vec4_t const* rhs) {
// this used for transforming light positions back to object space.
- // Lights have 3 components positions, so w is always 1.
- // however, it is used as a switch for directional lights, so we need
+ // w is used as a switch for directional lights, so we need
// to preserve it.
const GLfixed* const m = mx->matrix.m;
const GLfixed rx = rhs->x;
const GLfixed ry = rhs->y;
const GLfixed rz = rhs->z;
- lhs->x = mla3a(rx, m[ 0], ry, m[ 4], rz, m[ 8], m[12]);
- lhs->y = mla3a(rx, m[ 1], ry, m[ 5], rz, m[ 9], m[13]);
- lhs->z = mla3a(rx, m[ 2], ry, m[ 6], rz, m[10], m[14]);
- lhs->w = rhs->w;
+ const GLfixed rw = rhs->w;
+ lhs->x = mla4(rx, m[ 0], ry, m[ 4], rz, m[ 8], rw, m[12]);
+ lhs->y = mla4(rx, m[ 1], ry, m[ 5], rz, m[ 9], rw, m[13]);
+ lhs->z = mla4(rx, m[ 2], ry, m[ 6], rz, m[10], rw, m[14]);
+ lhs->w = rw;
}
-
void point2__nop(transform_t const*, vec4_t* lhs, vec4_t const* rhs) {
lhs->z = 0;
lhs->w = 0x10000;