summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r--services/surfaceflinger/Android.mk1
-rw-r--r--services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp7
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp7
-rw-r--r--services/surfaceflinger/main_surfaceflinger.cpp18
4 files changed, 20 insertions, 13 deletions
diff --git a/services/surfaceflinger/Android.mk b/services/surfaceflinger/Android.mk
index 81b0d14..3888d7e 100644
--- a/services/surfaceflinger/Android.mk
+++ b/services/surfaceflinger/Android.mk
@@ -82,6 +82,7 @@ LOCAL_SRC_FILES:= \
LOCAL_SHARED_LIBRARIES := \
libsurfaceflinger \
+ libcutils \
liblog \
libbinder \
libutils
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
index dcad390..cde1e3a 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
@@ -116,7 +116,11 @@ void GLES20RenderEngine::setupLayerBlending(
}
void GLES20RenderEngine::setupDimLayerBlending(int alpha) {
- mState.setPlaneAlpha(alpha / 255.0f);
+ mState.setPlaneAlpha(1.0f);
+ mState.setPremultipliedAlpha(true);
+ mState.setOpaque(false);
+ mState.setColor(0, 0, 0, alpha/255.0f);
+ mState.disableTexture();
if (alpha == 0xFF) {
glDisable(GL_BLEND);
@@ -124,7 +128,6 @@ void GLES20RenderEngine::setupDimLayerBlending(int alpha) {
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
}
- disableTexturing();
}
void GLES20RenderEngine::setupLayerTexturing(const Texture& texture) {
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index a151142..9fd3f25 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -22,10 +22,6 @@
#include <math.h>
#include <dlfcn.h>
-#if defined(HAVE_PTHREADS)
-#include <sys/resource.h>
-#endif
-
#include <EGL/egl.h>
#include <cutils/log.h>
@@ -640,9 +636,6 @@ status_t SurfaceFlinger::postMessageSync(const sp<MessageBase>& msg,
}
void SurfaceFlinger::run() {
-#if defined(HAVE_PTHREADS)
- setpriority(PRIO_PROCESS, 0, PRIORITY_URGENT_DISPLAY);
-#endif
do {
waitForEvent();
} while (true);
diff --git a/services/surfaceflinger/main_surfaceflinger.cpp b/services/surfaceflinger/main_surfaceflinger.cpp
index a609b6f..b161480 100644
--- a/services/surfaceflinger/main_surfaceflinger.cpp
+++ b/services/surfaceflinger/main_surfaceflinger.cpp
@@ -14,6 +14,11 @@
* limitations under the License.
*/
+#if defined(HAVE_PTHREADS)
+#include <sys/resource.h>
+#endif
+
+#include <cutils/sched_policy.h>
#include <binder/IServiceManager.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
@@ -27,16 +32,21 @@ int main(int argc, char** argv) {
// binder threads to 4.
ProcessState::self()->setThreadPoolMaxThreadCount(4);
+ // start the thread pool
+ sp<ProcessState> ps(ProcessState::self());
+ ps->startThreadPool();
+
// instantiate surfaceflinger
sp<SurfaceFlinger> flinger = new SurfaceFlinger();
+#if defined(HAVE_PTHREADS)
+ setpriority(PRIO_PROCESS, 0, PRIORITY_URGENT_DISPLAY);
+#endif
+ set_sched_policy(0, SP_FOREGROUND);
+
// initialize before clients can connect
flinger->init();
- // start the thread pool
- sp<ProcessState> ps(ProcessState::self());
- ps->startThreadPool();
-
// publish surface flinger
sp<IServiceManager> sm(defaultServiceManager());
sm->addService(String16(SurfaceFlinger::getServiceName()), flinger, false);