summaryrefslogtreecommitdiffstats
path: root/services/java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-11-05 13:08:35 -0700
committerDianne Hackborn <hackbod@google.com>2010-11-05 13:45:10 -0700
commited7bfbf6c87153c3f2f23d6856db4180d4bac429 (patch)
tree1d566f941ad814b9409d80cb107e21ceccc35edd /services/java
parent2332a74c61fb0c5041bff4f0e361364a3378b4c7 (diff)
downloadframeworks_base-ed7bfbf6c87153c3f2f23d6856db4180d4bac429.zip
frameworks_base-ed7bfbf6c87153c3f2f23d6856db4180d4bac429.tar.gz
frameworks_base-ed7bfbf6c87153c3f2f23d6856db4180d4bac429.tar.bz2
Fix issue #3163426: Screen corruption when using the watermark feature
Change-Id: I23f76f04fb52bb272eccbbcc55606c09404c6ca9
Diffstat (limited to 'services/java')
-rw-r--r--services/java/com/android/server/WindowManagerService.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 817f0b2..90cdb4b 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -65,6 +65,7 @@ import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.Typeface;
@@ -10709,7 +10710,7 @@ public class WindowManagerService extends IWindowManager.Stub
return val;
}
- class Watermark {
+ static class Watermark {
final String[] mTokens;
final String mText;
final Paint mTextPaint;
@@ -10725,9 +10726,9 @@ public class WindowManagerService extends IWindowManager.Stub
int mLastDH;
boolean mDrawNeeded;
- Watermark(SurfaceSession session, String[] tokens) {
+ Watermark(Display display, SurfaceSession session, String[] tokens) {
final DisplayMetrics dm = new DisplayMetrics();
- mDisplay.getMetrics(dm);
+ display.getMetrics(dm);
if (false) {
Log.i(TAG, "*********************** WATERMARK");
@@ -10821,6 +10822,8 @@ public class WindowManagerService extends IWindowManager.Stub
} catch (OutOfResourcesException e) {
}
if (c != null) {
+ c.drawColor(0, PorterDuff.Mode.CLEAR);
+
int deltaX = mDeltaX;
int deltaY = mDeltaY;
@@ -10863,7 +10866,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (line != null) {
String[] toks = line.split("%");
if (toks != null && toks.length > 0) {
- mWatermark = new Watermark(mFxSession, toks);
+ mWatermark = new Watermark(mDisplay, mFxSession, toks);
}
}
} catch (FileNotFoundException e) {