From fceb82d4a71d094fc058b9cdd404ce9787292b0f Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 10 Apr 2018 16:07:02 -0700 Subject: [PATCH] Waiting until post draw before calling finish on the recent transition Bug: 77695434 Change-Id: I7c3c668de7c3986760f26890fa062dee0ddb3805 --- quickstep/libs/sysui_shared.jar | Bin 120847 -> 122318 bytes .../WindowTransformSwipeHandler.java | 20 ++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar index f5c6149aee0d18a1a77d91dc4835d4600b396ba9..fec73179cefac7ac364c83db9d6057640b198994 100644 GIT binary patch delta 4761 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
yKFM@A^@F<2UGFTN@eu29Mq{j#u4(2j`XI0 zrP$9{4n3&=O=^*Oy&R$2ceB>iVyig9P}O#)r!bOupu`p}sRBc)+*u$?nDKPNOrZp; zET@n{9K4*R2uSuWok*92q2f32l^6x*PY7}RhN!@KfL zoe?n)6O3VTunSW%;Vdd{mbamZfd^(a*aWRZLWOs4`~ zrII44;r~{#QIowbi7qx9))i-s2q@)u)_+x~tdTypGJ~wo?D>>rtejPt{Ba~LdH^7n zb%7}wQ$e48u?CKO=pYo0kDZ??iul6(O96j(QJlcO4EYS6PpiR5#gWVUln4dxS%!CkfUcT^s+!#u~uqQc+ zP2dCJX}n|B8l?ArE?`l%6bjfn3!R{fJ$M*dpfwM0^vlbjnQe?PgRPjZS^;_F%+Ppw z^5-H-X#ySEW)^9OZ$pC8O+`GFEHY0Nvb)I=R9G(%EGLNqE0od>%5--)l*o{|;C5b~;q_2&B#e@yflZazO81!JAEWJe|!xVeQWCA^w5E zo?*eeoFcbI`R_0b+~OY-ll2eZHEK)M7q69U^DZ)30U*09U)KA?=m}lbmZbdrH=^{> z!n#;NakuY+s%0bI_9tiCznA{#UcZ;_F4YVbbUhw?)wA%)>576vg^@Vw#O&JXz+jL$K)Mt~e z_DV4S{NGpnRCHUxboseR|AJ2S6<%YRhN8+x=iX(#J=4tp&x3*!=PDyz={co!<8K0N z>|&)vXlHlihImQ;e8IY^N9$`ZwHA%{(XF%guDcd*=(Ih!b8(nx#MM{6y0T|`g2&UO zl!zJyrvGqQjzByG@DipKYOcD zVI{3m@2j?cqyFx?>Tbbkf1cf<=*FUklo zr^=?a%rID`f80n?U{-%<_t7iG>TfdllqY?Sh6V#R-Vgc8dGuGI{=B%nz>t%v8X?WT z`QKZX74G!RcYifgO=)415dUlMe_<9JR%Gt?CeHs(g2BRHhflw!&BI1iD{}c7@1A;$ znmRw;+&_3Z?NqPm(BUM<{+XUXSLQxne^e&4_2TM~wXG`#O`1w59npuN5S>Q};O5E~ zIPp?n6iV@UJLGu0&%QAxjr{&@{6bYqf+#W)G=35C<;j>Nr@>P8ZS(2ni*0An1{okB zR~B;>S)kY5phvIDg67X>2>JA2zgu(Q8*;bMc+~9KRUV~a%>+QlN?{2Bjis=f0E05v zMnGB_gc9(v3<3!VpgF09<|O-aEHT$@emNW@V15Ne5|CX15dc#R~efZw;_OJ=zfPQ@cINWzsoV%6F})6?jh5befK!&ePd3HA}2ubW{%0hP_Ln*gg8F6aCft{YQZ@kwAD z9%$tnKGw?l+1$o?ZfS!Z#Kxr^XUG^=v~!HG1GW>Upo7~u?M{5g7@L$%w$GVeT)($> zK`6O`C(oe`dfo*V3X`rFw6qtriHF`Um@akm5UOniW5f(5(y9PeBDqSibl~VGNgLfg z3<6Xl0Y#!$Gy1WNNxEh?7!%398%s@@pQO2jEn!$*F3aK}HX*ET4`z+?SQd}45n+9L bF-xCi+3a30RQBQd@T5(6ytfwse_s3vKKvB- diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java index fe9f0c3276..06e6556b53 100644 --- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -31,6 +31,7 @@ import android.annotation.TargetApi; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.res.Resources; +import android.graphics.Canvas; import android.graphics.Point; import android.graphics.Rect; import android.os.Build; @@ -73,6 +74,7 @@ import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.RecentsAnimationControllerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; import com.android.systemui.shared.system.TransactionCompat; +import com.android.systemui.shared.system.WindowCallbacksCompat; import com.android.systemui.shared.system.WindowManagerWrapper; import java.util.StringJoiner; @@ -645,24 +647,30 @@ public class WindowTransformSwipeHandler { synchronized (mRecentsAnimationWrapper) { if (mRecentsAnimationWrapper.controller != null) { - TransactionCompat transaction = new TransactionCompat(); for (RemoteAnimationTargetCompat app : mRecentsAnimationWrapper.targets) { if (app.mode == MODE_CLOSING) { // Update the screenshot of the task ThumbnailData thumbnail = mRecentsAnimationWrapper.controller.screenshotTask(app.taskId); - TaskView taskView = mRecentsView.updateThumbnail(app.taskId, thumbnail); + final TaskView taskView = + mRecentsView.updateThumbnail(app.taskId, thumbnail); if (taskView != null) { taskView.setAlpha(1); + // Defer finishing the animation until the next launcher frame with the // new thumbnail - mActivityControlHelper.executeOnNextDraw(mActivity, taskView, - finishTransitionRunnable); - finishTransitionPosted = true; + finishTransitionPosted = new WindowCallbacksCompat(taskView) { + + @Override + public void onPostDraw(Canvas canvas) { + finishTransitionRunnable.run(); + detach(); + } + }.attach(); + break; } } } - transaction.apply(); } } if (!finishTransitionPosted) {