From 87abde8a529c8768f65ed7281d5e89eda170e0f6 Mon Sep 17 00:00:00 2001 From: Jamie Gennis Date: Wed, 9 Nov 2011 12:43:25 -0800 Subject: [PATCH] SystemUI: Disable HW acceleration for status bar This change switches the status bar rendering to use CPU rendering to an RGB_565 window. Change-Id: I45c03989efc9cc9ea71ff169fafedf048de9d612 --- .../com/android/systemui/statusbar/StatusBar.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java index 2e1803e67d077..2be35b73ec7d5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java @@ -118,15 +118,20 @@ public abstract class StatusBar extends SystemUI implements CommandQueue.Callbac WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, - PixelFormat.OPAQUE); + // We use a pixel format of RGB565 for the status bar to save memory bandwidth and + // to ensure that the layer can be handled by HWComposer. On some devices the + // HWComposer is unable to handle SW-rendered RGBX_8888 layers. + PixelFormat.RGB_565); // the status bar should be in an overlay if possible final Display defaultDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay(); - if (ActivityManager.isHighEndGfx(defaultDisplay)) { - lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; - } + + // We explicitly leave FLAG_HARDWARE_ACCELERATED out of the flags. The status bar occupies + // very little screen real-estate and is updated fairly frequently. By using CPU rendering + // for the status bar, we prevent the GPU from having to wake up just to do these small + // updates, which should help keep power consumption down. lp.gravity = getStatusBarGravity(); lp.setTitle("StatusBar");