diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index da25a27..be988e7 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -43,7 +43,7 @@
 	}
 
 ContextSetPriority {
-	param uint32_t priority
+	param int32_t priority
 	}
 
 AssignName {
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 @@
 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 @@
      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 @@
         return;
     }
 
-    sched_param sparam;
-    sparam.sched_priority = ANDROID_PRIORITY_DISPLAY;
-    pthread_attr_setschedparam(&threadAttr, &sparam);
-
     mWndSurface = NULL;
 
     objDestroyOOBInit();
@@ -791,8 +814,9 @@
     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);
 }
 
 }
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index f3803a5..fb878eb 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -95,6 +95,7 @@
     void pause();
     void resume();
     void setSurface(uint32_t w, uint32_t h, Surface *sur);
+    void setPriority(int32_t p);
 
     void assignName(ObjectBase *obj, const char *name, uint32_t len);
     void removeName(ObjectBase *obj);
@@ -198,6 +199,7 @@
     bool mPaused;
 
     pthread_t mThreadId;
+    pid_t mNativeThreadId;
 
     ObjectBaseRef<Script> mRootScript;
     ObjectBaseRef<ProgramFragment> mFragment;
