summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsContext.cpp
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-11-16 14:04:54 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-11-16 14:04:54 -0800
commit7b159b4a634a3a2cad6d2a385ae2c4ebf4eb59e0 (patch)
tree2ad07476fe54990fe1ef34884a9eec68ef48adf4 /libs/rs/rsContext.cpp
parenta4cf232df8443fa3f2ef97082bdb0ac2c6dbb308 (diff)
parentec8178eb0fb10e1ed753be4d065cf7f004355575 (diff)
downloadframeworks_base-7b159b4a634a3a2cad6d2a385ae2c4ebf4eb59e0.zip
frameworks_base-7b159b4a634a3a2cad6d2a385ae2c4ebf4eb59e0.tar.gz
frameworks_base-7b159b4a634a3a2cad6d2a385ae2c4ebf4eb59e0.tar.bz2
am ec8178eb: Merge change I9c1bad53 into eclair
Merge commit 'ec8178eb0fb10e1ed753be4d065cf7f004355575' into eclair-plus-aosp * commit 'ec8178eb0fb10e1ed753be4d065cf7f004355575': Add setPriority to allow wallpapers to run at lower cpu priority than default.
Diffstat (limited to 'libs/rs/rsContext.cpp')
-rw-r--r--libs/rs/rsContext.cpp34
1 files changed, 29 insertions, 5 deletions
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index c835dda..deb9592 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -20,11 +20,16 @@
#include <ui/FramebufferNativeWindow.h>
#include <ui/EGLUtils.h>
+#include <sys/types.h>
+#include <sys/resource.h>
+
#include <cutils/properties.h>
#include <GLES/gl.h>
#include <GLES/glext.h>
+#include <cutils/sched_policy.h>
+
using namespace android;
using namespace android::renderscript;
@@ -234,6 +239,9 @@ static bool getProp(const char *str)
void * Context::threadProc(void *vrsc)
{
Context *rsc = static_cast<Context *>(vrsc);
+ rsc->mNativeThreadId = gettid();
+
+ setpriority(PRIO_PROCESS, rsc->mNativeThreadId, ANDROID_PRIORITY_DISPLAY);
rsc->props.mLogTimes = getProp("debug.rs.profile");
rsc->props.mLogScripts = getProp("debug.rs.script");
@@ -316,6 +324,25 @@ void * Context::threadProc(void *vrsc)
return NULL;
}
+void Context::setPriority(int32_t p)
+{
+ // Note: If we put this in the proper "background" policy
+ // the wallpapers can become completly unresponsive at times.
+ // This is probably not what we want for something the user is actively
+ // looking at.
+#if 0
+ SchedPolicy pol = SP_FOREGROUND;
+ if (p > 0) {
+ pol = SP_BACKGROUND;
+ }
+ if (!set_sched_policy(mNativeThreadId, pol)) {
+ // success; reset the priority as well
+ }
+#else
+ setpriority(PRIO_PROCESS, mNativeThreadId, p);
+#endif
+}
+
Context::Context(Device *dev, bool useDepth)
{
pthread_mutex_lock(&gInitMutex);
@@ -351,10 +378,6 @@ Context::Context(Device *dev, bool useDepth)
return;
}
- sched_param sparam;
- sparam.sched_priority = ANDROID_PRIORITY_DISPLAY;
- pthread_attr_setschedparam(&threadAttr, &sparam);
-
mWndSurface = NULL;
objDestroyOOBInit();
@@ -791,8 +814,9 @@ void rsi_ContextSetSurface(Context *rsc, uint32_t w, uint32_t h, void *sur)
rsc->setSurface(w, h, (Surface *)sur);
}
-void rsi_ContextSetPriority(Context *rsc, uint32_t p)
+void rsi_ContextSetPriority(Context *rsc, int32_t p)
{
+ rsc->setPriority(p);
}
}