Loading core/java/android/view/SurfaceView.java +17 −6 Original line number Diff line number Diff line Loading @@ -264,6 +264,22 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb updateSurface(); } private void performDrawFinished() { if (mPendingReportDraws > 0) { mDrawFinished = true; if (mAttachedToWindow) { mParent.requestTransparentRegion(SurfaceView.this); notifyDrawFinished(); invalidate(); } } else { Log.e(TAG, System.identityHashCode(this) + "finished drawing" + " but no pending report draw (extra call" + " to draw completion runnable?)"); } } void notifyDrawFinished() { ViewRootImpl viewRoot = getViewRootImpl(); if (viewRoot != null) { Loading Loading @@ -729,12 +745,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb } runOnUiThread(() -> { mDrawFinished = true; if (mAttachedToWindow) { mParent.requestTransparentRegion(SurfaceView.this); notifyDrawFinished(); invalidate(); } performDrawFinished(); }); } Loading core/java/android/view/ViewRootImpl.java +13 −9 Original line number Diff line number Diff line Loading @@ -2330,7 +2330,7 @@ public final class ViewRootImpl implements ViewParent, // Remember if we must report the next draw. if ((relayoutResult & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) { mReportNextDraw = true; reportNextDraw(); } boolean cancelDraw = mAttachInfo.mTreeObserver.dispatchOnPreDraw() || !isViewVisible; Loading Loading @@ -2731,11 +2731,8 @@ public final class ViewRootImpl implements ViewParent, /** * A count of the number of calls to pendingDrawFinished we * require to notify the WM drawing is complete. * * This starts at 1, for the ViewRootImpl surface itself. * Subsurfaces may debt the value with drawPending. */ int mDrawsNeededToReport = 1; int mDrawsNeededToReport = 0; /** * Delay notifying WM of draw finished until Loading @@ -2761,7 +2758,7 @@ public final class ViewRootImpl implements ViewParent, private void reportDrawFinished() { try { mDrawsNeededToReport = 1; mDrawsNeededToReport = 0; mWindowSession.finishDrawing(mWindow); } catch (RemoteException e) { // Have fun! Loading Loading @@ -3772,13 +3769,12 @@ public final class ViewRootImpl implements ViewParent, args.recycle(); if (msg.what == MSG_RESIZED_REPORT) { mReportNextDraw = true; reportNextDraw(); } if (mView != null && framesChanged) { forceLayout(mView); } requestLayout(); } break; Loading Loading @@ -7351,6 +7347,14 @@ public final class ViewRootImpl implements ViewParent, return false; } private void reportNextDraw() { if (mReportNextDraw == false) { drawPending(); } mReportNextDraw = true; } /** * Force the window to report its next draw. * <p> Loading @@ -7360,7 +7364,7 @@ public final class ViewRootImpl implements ViewParent, * @hide */ public void setReportNextDraw() { mReportNextDraw = true; reportNextDraw(); invalidate(); } Loading Loading
core/java/android/view/SurfaceView.java +17 −6 Original line number Diff line number Diff line Loading @@ -264,6 +264,22 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb updateSurface(); } private void performDrawFinished() { if (mPendingReportDraws > 0) { mDrawFinished = true; if (mAttachedToWindow) { mParent.requestTransparentRegion(SurfaceView.this); notifyDrawFinished(); invalidate(); } } else { Log.e(TAG, System.identityHashCode(this) + "finished drawing" + " but no pending report draw (extra call" + " to draw completion runnable?)"); } } void notifyDrawFinished() { ViewRootImpl viewRoot = getViewRootImpl(); if (viewRoot != null) { Loading Loading @@ -729,12 +745,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb } runOnUiThread(() -> { mDrawFinished = true; if (mAttachedToWindow) { mParent.requestTransparentRegion(SurfaceView.this); notifyDrawFinished(); invalidate(); } performDrawFinished(); }); } Loading
core/java/android/view/ViewRootImpl.java +13 −9 Original line number Diff line number Diff line Loading @@ -2330,7 +2330,7 @@ public final class ViewRootImpl implements ViewParent, // Remember if we must report the next draw. if ((relayoutResult & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) { mReportNextDraw = true; reportNextDraw(); } boolean cancelDraw = mAttachInfo.mTreeObserver.dispatchOnPreDraw() || !isViewVisible; Loading Loading @@ -2731,11 +2731,8 @@ public final class ViewRootImpl implements ViewParent, /** * A count of the number of calls to pendingDrawFinished we * require to notify the WM drawing is complete. * * This starts at 1, for the ViewRootImpl surface itself. * Subsurfaces may debt the value with drawPending. */ int mDrawsNeededToReport = 1; int mDrawsNeededToReport = 0; /** * Delay notifying WM of draw finished until Loading @@ -2761,7 +2758,7 @@ public final class ViewRootImpl implements ViewParent, private void reportDrawFinished() { try { mDrawsNeededToReport = 1; mDrawsNeededToReport = 0; mWindowSession.finishDrawing(mWindow); } catch (RemoteException e) { // Have fun! Loading Loading @@ -3772,13 +3769,12 @@ public final class ViewRootImpl implements ViewParent, args.recycle(); if (msg.what == MSG_RESIZED_REPORT) { mReportNextDraw = true; reportNextDraw(); } if (mView != null && framesChanged) { forceLayout(mView); } requestLayout(); } break; Loading Loading @@ -7351,6 +7347,14 @@ public final class ViewRootImpl implements ViewParent, return false; } private void reportNextDraw() { if (mReportNextDraw == false) { drawPending(); } mReportNextDraw = true; } /** * Force the window to report its next draw. * <p> Loading @@ -7360,7 +7364,7 @@ public final class ViewRootImpl implements ViewParent, * @hide */ public void setReportNextDraw() { mReportNextDraw = true; reportNextDraw(); invalidate(); } Loading