diff options
author | Romain Guy <romainguy@google.com> | 2012-10-03 14:53:25 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2012-10-03 18:07:59 -0700 |
commit | dfab363807b3b44be4032e410f016e0a0d018426 (patch) | |
tree | 36321005bce97e4177e84b628371268a2b84490b /core/java/android/view | |
parent | a762dfc68afbbfd439af064e2dc833d712c1eda8 (diff) | |
download | frameworks_base-dfab363807b3b44be4032e410f016e0a0d018426.zip frameworks_base-dfab363807b3b44be4032e410f016e0a0d018426.tar.gz frameworks_base-dfab363807b3b44be4032e410f016e0a0d018426.tar.bz2 |
Fix rendering artifacts on tiled renderers
Bug #7275145
This change fixes ViewRoot and adds extra debug information. It does
not solve the problem entirely. Another CL will.
Change-Id: I7e604ba38aad7f421769783dcbd998d6905ab2d9
Diffstat (limited to 'core/java/android/view')
-rw-r--r-- | core/java/android/view/GLES20RecordingCanvas.java | 12 | ||||
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 9 | ||||
-rw-r--r-- | core/java/android/view/View.java | 1 | ||||
-rw-r--r-- | core/java/android/view/ViewDebug.java | 10 | ||||
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 15 |
5 files changed, 23 insertions, 24 deletions
diff --git a/core/java/android/view/GLES20RecordingCanvas.java b/core/java/android/view/GLES20RecordingCanvas.java index ba8be6c..d2df45a 100644 --- a/core/java/android/view/GLES20RecordingCanvas.java +++ b/core/java/android/view/GLES20RecordingCanvas.java @@ -236,18 +236,6 @@ class GLES20RecordingCanvas extends GLES20Canvas implements Poolable<GLES20Recor } @Override - public void drawRect(Rect r, Paint paint) { - super.drawRect(r, paint); - recordShaderBitmap(paint); - } - - @Override - public void drawRect(RectF r, Paint paint) { - super.drawRect(r, paint); - recordShaderBitmap(paint); - } - - @Override public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) { super.drawRoundRect(rect, rx, ry, paint); recordShaderBitmap(paint); diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 99987bf..37e0a36 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -507,17 +507,22 @@ public abstract class HardwareRenderer { * @param width The width of the drawing surface. * @param height The height of the drawing surface. * @param surface The surface to hardware accelerate + * + * @return true if the surface was initialized, false otherwise. Returning + * false might mean that the surface was already initialized. */ - void initializeIfNeeded(int width, int height, Surface surface) + boolean initializeIfNeeded(int width, int height, Surface surface) throws Surface.OutOfResourcesException { if (isRequested()) { // We lost the gl context, so recreate it. if (!isEnabled()) { if (initialize(surface)) { setup(width, height); + return true; } } - } + } + return false; } /** diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 2d083b6..ae51c1d 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -2904,6 +2904,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ int mOldHeightMeasureSpec = Integer.MIN_VALUE; + @ViewDebug.ExportedProperty(deepExport = true, prefix = "bg_") private Drawable mBackground; private int mBackgroundResource; diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java index c013d85..023e58f 100644 --- a/core/java/android/view/ViewDebug.java +++ b/core/java/android/view/ViewDebug.java @@ -923,8 +923,12 @@ public class ViewDebug { private static void dumpViewProperties(Context context, Object view, BufferedWriter out, String prefix) throws IOException { - Class<?> klass = view.getClass(); + if (view == null) { + out.write(prefix + "=4,null "); + return; + } + Class<?> klass = view.getClass(); do { exportFields(context, view, out, klass, prefix); exportMethods(context, view, out, klass, prefix); @@ -1064,8 +1068,8 @@ public class ViewDebug { return; } else if (!type.isPrimitive()) { if (property.deepExport()) { - dumpViewProperties(context, field.get(view), out, prefix - + property.prefix()); + dumpViewProperties(context, field.get(view), out, prefix + + property.prefix()); continue; } } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 438f792..be2d5b3 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -52,7 +52,6 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.os.Trace; -import android.os.UserHandle; import android.util.AndroidRuntimeException; import android.util.DisplayMetrics; import android.util.Log; @@ -2817,10 +2816,10 @@ public final class ViewRootImpl implements ViewParent, case MSG_RESIZED: { // Recycled in the fall through... SomeArgs args = (SomeArgs) msg.obj; - if (mWinFrame.equals((Rect) args.arg1) - && mPendingContentInsets.equals((Rect) args.arg2) - && mPendingVisibleInsets.equals((Rect) args.arg3) - && ((Configuration) args.arg4 == null)) { + if (mWinFrame.equals(args.arg1) + && mPendingContentInsets.equals(args.arg2) + && mPendingVisibleInsets.equals(args.arg3) + && args.arg4 == null) { break; } } // fall through... @@ -2882,8 +2881,10 @@ public final class ViewRootImpl implements ViewParent, mSurface != null && mSurface.isValid()) { mFullRedrawNeeded = true; try { - mAttachInfo.mHardwareRenderer.initializeIfNeeded(mWidth, mHeight, - mHolder.getSurface()); + if (mAttachInfo.mHardwareRenderer.initializeIfNeeded( + mWidth, mHeight, mHolder.getSurface())) { + mFullRedrawNeeded = true; + } } catch (Surface.OutOfResourcesException e) { Log.e(TAG, "OutOfResourcesException locking surface", e); try { |