From 983e2d571814ffaf9a88bc6cbc976ff3445d4aae Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 2 Jan 2019 11:35:38 -0800 Subject: [PATCH] Add a logo to the fastbootd screen. fastbootd looks too much like recovery, even if you're carefully reading the menu. It's not obvious the device is in a flashing mode, and it's too tempting to reboot or unplug the device in this state. As a first step, this patch adds a big red "fastbootd" logo so it's less obviously in recovery mode. Bug: 120429730 Test: manual test Change-Id: I73359f1fdfdc0b1694993f760fe7f35c5713b24e --- recovery_main.cpp | 2 ++ res-hdpi/images/fastbootd.png | Bin 0 -> 6916 bytes res-mdpi/images/fastbootd.png | Bin 0 -> 4607 bytes res-xhdpi/images/fastbootd.png | Bin 0 -> 9293 bytes res-xxhdpi/images/fastbootd.png | Bin 0 -> 13755 bytes res-xxxhdpi/images/fastbootd.png | Bin 0 -> 8107 bytes screen_ui.cpp | 14 ++++++++++++++ screen_ui.h | 2 ++ ui.cpp | 1 + ui.h | 8 +++++++- 10 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 res-hdpi/images/fastbootd.png create mode 100644 res-mdpi/images/fastbootd.png create mode 100644 res-xhdpi/images/fastbootd.png create mode 100644 res-xxhdpi/images/fastbootd.png create mode 100644 res-xxxhdpi/images/fastbootd.png diff --git a/recovery_main.cpp b/recovery_main.cpp index 6f508023..7fb46163 100644 --- a/recovery_main.cpp +++ b/recovery_main.cpp @@ -458,6 +458,8 @@ int main(int argc, char** argv) { } } + ui->SetEnableFastbootdLogo(fastboot); + auto ret = fastboot ? StartFastboot(device, args) : start_recovery(device, args); if (ret == Device::KEY_INTERRUPTED) { diff --git a/res-hdpi/images/fastbootd.png b/res-hdpi/images/fastbootd.png new file mode 100644 index 0000000000000000000000000000000000000000..5127b3b3703603e8a203ec31566403e761132907 GIT binary patch literal 6916 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 Zy<+~~45PAWlWPWmiGhWFo31PJ{{YW&;xzyO literal 0 HcmV?d00001 diff --git a/res-mdpi/images/fastbootd.png b/res-mdpi/images/fastbootd.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b7bc2fb529f77cd4bb742c295b006bd948867b GIT binary patch literal 4607 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 U^s04OT^ImXX7;AlNN?OV literal 0 HcmV?d00001 diff --git a/res-xhdpi/images/fastbootd.png b/res-xhdpi/images/fastbootd.png new file mode 100644 index 0000000000000000000000000000000000000000..e3da85ad750a6601c5d034be396bba6276eff315 GIT binary patch literal 9293 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 AX8-^I literal 0 HcmV?d00001 diff --git a/res-xxhdpi/images/fastbootd.png b/res-xxhdpi/images/fastbootd.png new file mode 100644 index 0000000000000000000000000000000000000000..482dbb29c4b969459dc4ca6a77b11c71c51ce378 GIT binary patch literal 13755 zcmdUW_di=-{C{k*M{Ti3jas!gHEXt7qgH~JqJ&ztf`r(!MUASWDAk}PrAiW`s-;yW z)exbjYDKGN$T#oL_xsEDhwmToy?G?}=G=47z4x5geZ5}i`F!3SS7%#JHc>VJ0KjQ) zXLS_-U_j8en^@^-zj@k?0kjoku!WNa0MJ>)PJuAd{!0bgU3CHg5)}Y|G+O0jT2b0B z03cQa0Qe0C01PVu03m2i-xXup4(0#{TPxa{wj5pRhtXC*sGZkc0DztUzb_r2sz#Vr z$P#1kWX-Zd&&tM4kBlsvs{dEkr%=SO#k7p?*GBPq(Rhb&58#pt7c&o~sk3*y21~6bI5cqP)8LQxV$&-1Cubj7>r|0@f zm$j9ZTxrIY^&F0;xHjlmpzV@E;H#rS;)`OcnFCo;W?+R%&D`_FEm;!Iw||*Mv7{nl zmp|Gx2EM?63SvdI^*z%D;h%17v6nO0IlWRh|8Y~?F{`(v23cLmnRYJuY%pu`Y)hkE za`qd0lZ$YnuZ31`H+W{r8hbe-<4OtrkZ*F`m^UG3ze{cU#8J!K@T&MrLfScdOv~Om{-w*M z@k`9$`fk7zS*4f1bACCXPdl)viHnHCsH zuJsA#RApSD6*4$APncOLhe;)8|1d7?3OAxvqO}3OLaQ4D<=uXcj^_NVB1}8p0CisY zL1-1+H%l!4L74howhQw^a{ry~Q`ME$svBrlqjMgcqeuH*6_@%4$6ttCfAl}?XJyd# zMv)atpXgqYFNW8mYEkJZk+^gVS&ppF_*)q^Hc4GKgaP)$-y$EOeDlZ~m(Sc!kF9Jev5;5*Bvg3f?gcf0Qe`3kP=r(oY#6Y@+SaBm$y z27M4pz6HgHVh2l;%!>r0)6jr;6Z=cS7cT<$0cQ+9+&xY*tP{CtErK}7%08F&#`O%) zAgaLh5mS+IYW@7rQfw$hIG@oU3K+*ow6yJi%^eOy@OsL+qV6baFqVe;KesD-0>1Vv zkU5TL_6Q*epi8w#jmfXFAL0I@Ms+wu5!NZLSHZ1ILNRF z)2@~26p|40qM?PjvG?S9fmQ5p5CW{R##M~ilf=_DmuLH38(x&g=f7Fq@M zr{HT=wB?x%hW0l*`&z-|(+cJDzhhQ^ul7%s_s&{gkOLpFpxap`qKo0~c5R8ZpeR=s z9ajdf_Jw5@Zl%UgY|j^7iDPYHt}Xi>gGKEMVc)+7x!1IFzKjV3l|NR1{oGQ2`<%0P z^*gla8M*LfXygPgv1HrSSaRIf6)=8ml&O<4Oo9b>m6%-eO9r- z!LRia3PX>xyUiKopu#=Rmz3S$x3FIjLKE?)oEoB|;4i3gng>YZ%(4l=hCUXk0)7X} zwkxVit4gu_gPa!W&j~9(UYb#7#sjst`56 zZqkG~7aq+*tUz9Rths$EMzZ?=0XY#95|{_yVjp<1uR!SISasQ}83R$Np0Yo{dYf|X z(#G6Ve2-+>721)HibdwYa`__)0o`CWT`n;$hR#GNN@$<22WN;CO?X7+fPmWN!=LYu z3{Fc47Zt!o@D_N+aK<2~KIR)>ZirC0RD1dZL^DJHVgd<#C^KkSnOX4ba8##xrDxtR zO&XtrZUs3yiEb*W%G{SP$%d0Oc&l?hjy{E~fTgq{z)kthv{+OIDx0hgVQQB?ulyi_ zHnPf3xEAyJ-z+^nsyy*!NJdl@ol7o&>mUwF`x_=|3*qBXzU`23E?su9s-m`iAwQ9= zV*~Cs);!iC-m`qzeN+RzfVZcKcz$g@C=-<7H1hS;;B3a+AQE+-EN7exOC!tGHyyIK zr1u6&Zf%ZEuY2r3822A$>~xErWfHhmbgRBFjs-TaI1h1+GJ`?aS4xhky*Xq#(hEdC zxrlfF+OPM9UnC2$&O?P*P)5N>7ZF0zEgmtSAOR`KSU4gRF{><4?{q;tqZR?m{5ay2 zb<71TRX?=`z}-Ea5~?&LsXU|-HL3&)W(*oBx4vAKg}j9FHjMZVGKDTd|J5(mK> ziVRrktfE-b%cz-}%f@Ml+x$uNv`^rnGEig@wF}n~`&|mBx`a;jxTl+@lc71M;|Lel z59#fckU^HEm>gb60c#mnS0=J-hZ9~>7Nl0)bs3F7MojUVB<@41jPK0FtfQtmHx1()q1)}0fXLNd^cdeP#q=|Q3MifeF(oZDL2FYP6l2hDS9uTTsv~~ob*q`0A zy`6Ig=eQ|V+8q^78cc`fqk5-rz6(Rhq7Ih)zQ0mf*iWj-b{clZnB-EK*G&-H_pI7; zEok9~t<=l&PRYl|&*@xn3S~8gDIlsWWi?dja-s<>+BZ9;#V;>fXqlS%dzJru^sRai zIY(NBP%j<-d*2=*&apE*fD977b+hlRM^7YoAm@iZ;lOS%&)++JW9K$kW*9WMWG40w z%XRnk6;zwuDnze%Qt{e(DV@qZ->iNfJsy>b(HA|s8XQR%$D`0YWs4d9ZVzQ%>PakS z_9KEUk5Ws$GWXzaQFlB2mj-iSZ}bWeUEl{LZweY=bI;UHkSwH*F_6u%!Sq_2ulD)^ z&4o$+TngG$E_H+cd+_k}#BrY{e(>tWvOTv$#ff<;2$3QjFKs^<5Z5Y{bjsh^*7^`h z)m|qi22yL)Z|n1&@QrKgtGL}{ZppkG#lO_h2$Q*=66|eKQ{-zM9de|0BA|n#wH{h1 zHSlOJQlNU(dFlM7XlYp#r@)Cl*XW{kwEn)qH1S`DH1!h7rQ{9s+WWb*>LtF?5^_}X z3;#u_>y5?@(?U8!Vx5u2H92i z=IouvchY}3b)Bl&2I`fH7c~&1YmxWR)pnD)-|v7TS$%T)bE;kopf^);U0H(5l95$^ zJLlPwtw286C%QT>I`BA%LR*t8)W2z!jWCp(;;L7TT(J5x|Ht~t!_B!U-SIW(McJ#5 z|MvrF@Q&`#Fht^LZPh2iN+p~ zIeu%WXBA@XW3Oc*bDqFXwLdn;d~d+`VX>1D^|7?ENBsH*U{PvUr0~LoAW9H1?Mo`s z>CE9gjyS)9+H^4y(DY6I+DOa=xjSlI?zY&UXiSvk{iaa=%ZH#d?!&LBOcYD>(qlSi zaKn=4rV|>T_id1X7^wXbf#rXJE*7U$l0#S?a+-*9P%X9kx?e0}Y_M~7k~@d*hQ*Dq zj2rw`9rzi6xAwI4WH(~H@QJYj1;m5fC1=i+nUCQ#Hm?#G5I5yxkC6eAaw5Ktd*!cw zfKY5yMu&atXogNq9|61r`vZv2kYt1Kk;tK8kFUE-6Zby6-T!Wtou za6$~Ya^p}+(DS;?b7sUd*$FMd6Q1#aY5F6z9*hu~xO3R@;Udbx{`W5gToLFmzwik& zgTSa^yLtUb>=Gm+l1t$4@5G{OQMo9=IQ~$u6fLpgJnb9}PZvHw^<{JUE%RWVg})0N?r1l@dvc8mIwC*tc& z3L%J*^#tnHZv);)#)s_Lw6#mAu*Q>M>986U`;EV!yMI>P$wz#FMh=1UIF%K;3|M*r z@%(QQ1^!%%IZ1ak9qK@D><-z_nh`8y?|OMyPq794D-A&5$YPq2fY6|tappZVH(!U` z)-S6=!GuOI+EjHrNi(4Ys+W3m_d!n)J5*7~E!`{0(;6)aGa~U)Rw=LD@2K3f2~Z3O z29GT(fET()+^jGy*DS6$e0<*(^p?x7s9Jc=KtxrMV4kS*mTZwtw?70&-2CBQ;#1g` zhh7BWI=efcWPDDAN~qn6o&__I@*0WQ_{30Wwv8nP%0+}r@rOL&r)jJ^ZP;ROvHP;a}GXS~f^5nH(7ui{~9*`W4a7yy*OgJ-IVycxrUAU{Wy@ zC6ro3i_&$#6HvQzy+|BZi}Hf}Vr)Pt-fnNxg8vQt$J^4`8u4^r%jt6_9pXzC6xed) z*v`TIqjNXFLX;|U()300j=TYzp$QEVm{%qNNV0- z=AJsD@afGS9zp(8M#Uv!x)HLmZuv^9@f~ofDMYSDtoQp2n4csXO1`hMAN;EeGeFE-F5g zmyu0mV`r6A7$_&qqn|O*JC01M{nrl-mxR99u`Ri!8@>!8nL zTlxtM+rMONj|+$WBu}B0*r{Dfg_Ni7c>As+!t4iq9gP#UxBszN_Ubb(=5NHLgpPt0 zNjB5!OM2)2DpixrXea8(i@?h?830maWqjjf2pP^SdAnw~ia5I^OKjxw?9@GBpfyti zKPsKKA>bpq`RWwU0hyoTcKGg5l3HAv!tgzL_(#NsedI<0@-p3Xav){S?!aoy#oXOn@b6;$QtL^yKS9}~G{c}G<)`O)6UuU*s}>8b6Q zvfB~?-7yBfK)TyF75m(tm<^NJP8#p201>-a)ZlX@W-E1kf;d%x(sR{JjfIG#zR7On zm9eHJ?gRd2!jD|`{SIAvVsE<$nQj2F&(IH#ZwS}AxXrg3X8V*^@ae{qj=f1Gzv?k0 zPfCKPOZgBzC4P5A;rskp;-T7lADVe-sS?dns(=Q}ofDG2Bc06T|A*mvbw4Yyi2Wl& zK6WyPYiV+%ppd=sDw>IEUNO;?P5%0;NvHs7vD*gj|DvyNxV>&T!S^qATCE3phkSwJ zcEea%pkZNe`h@Aw1R`R(^`kKScI)e3-`}uK02POQzk)*$m9MX{sC9J5dkRhI5*+c? z*OZi&2o z3gM33|J)45Eobq?ei%1OJ#N{ZZd4?eg|q|&bzu~ zQ<%0h-^u$IkZ%yUcjaAXBh!uY^z)kM&VT3Gk=)$?y2)Cq!Ev2+LdlHJ(%n#_*;Z`d z0^nosJ!B2g?9|olC^R4tg_FtnEQ^YYf^Vw;VVhXKMUO-Tne}WYJI1a6Dzm>OagXt{ zd1b*@^Ja!ou5$iubt3m`TlK~V3^fwbR`0_jHCe`N7l{n*GQ*oQTu|}t>3}#rhkJLj zkSkh~qT&QEn~YrzPN93vsoAJ!?Jm4UJdbklqvsye-GXF}!B24F?WSsqLwwkbuJW7m zB=xB3zv7O#0;QGUiYYrc4D0A-FY(7oW?|6&HRa`-VqIa1VJ=f-L!VF3dTN&!kv?Q0>DgugyR(bEwkDFhtX z#w&79@l>rWf5y1#r&VWg7FEyrvAA3Z2OL>gI!-5Wmvz=N`Ck-&I(#9H!2VaowOkRn zu{?X18>eva4jiLD{1VyDCHWQAA}%#!pCc~pmuA#3b^VVkckuFC`;QmoB*$tq3)Fd;Z+bc61$*yB=(`^}ws!Ii@T(YKPd5)0XwRu^ zoq8%HGZnt!%v|>5FJ_B|23a8N^gb~wl%$BvTr%NEi^5w8=W%9APgj)2w^XB|D8Aia~LK<9DO!lBO&>&i&8^?>fP1~JtRJz8i?hplYdRfCo zBOQQ@huTwAm1{@J-qsdE00HDJ@w(u+iB{!OuvR?sC%%e#4Z5BF6X8QR;thP%}^7uiJ#`XwB~`;%YvH_!HwP>Iy!G zXNd_LfOVr`QDZ=t*e!ta_-5u-6nirNdDLVVubB9O_1a_Abvb{fOwP~h61nmq#s*-1 zc52-#*Lw3%6X`!S$LXJLci|%hCG+Vwl--dsH=DuNjyqJfjDROege&MA&kK!5ZwG@X z{UbBgOA6Ef+WWK$ecOM*VFL+7eSsK3I8~(yc~l0{J?x`LH-IMo7dLa0n&5OGq!1_1 zUB=fIY}G1%V+HfvU!dY&#NMKUgHDamcl2wAodYIOYENO0<7m-E|AW-oiR=#tnMAxrJf6 zufSSWBcyvEAol##I2tgmE=pIiw0KF2sbK;8o?%4!P-9&*K`|nPP=$4Vb=?w_k5Q8` z5Yww8hf!Wk#5@5LNezt3jhry{@|U{DDRI}s&ASYaNzW8y zWN+);W%8adRrdHleOuFtA0(;C{cuCG?*A{~E`T^9~ zX)~TUkNz2!+{3YIET)AwN+bDA2a2+aYGr^J9JK3#;!=guRTl8T;@5Ftc;ccNX|IX1(am&QhZE z(&mN9bHajgYNE;9u6kR``q`o8%=-r;W1t{nZSJ#6|F)w6pS1_}1mH9lsXH&nil2;P z@8J{Ves7u%KvGbe0lEl#^6q&@sC`n` z@vqNT{u;8kP4A`7bUwMH>{ia0Wv%!7Imp(``lkx0bgIWa4u_I^@>6URu`01YeEk}T zYjSEUdoP*xEVv}dZi9V-h# z3Pmcy!+m;#)t`^9dtFV??BhblCySQbx%^N5a|No_Asz5|1QUw=`XhB=H+&`iJj({e zgcOB_e@c_2w+(1sF2p_!ywrKv)I|52^jvOG(fBhit1vM;RYSGI)D1tg3tM2SUMUoK zo|*GNg(4y;>8Ngcp-%!zZ+K3ZcaLuKlss~| zb3JizCF zdY%7Hi1-}kAngsDc$V_&#WjY%DCt_xHQ~*)OkY#eR2D*pnLxa2a7tXl?b?9M=(701 zt_J};;_$rI3P2v~M<)Mn`ts$qxN`A}<{yo53oUO%5qlq8Nh&A_w?G%a-sn}Po;0N^Vj9I zte*hCFP8(kaEpjARkx4ghyk^TfmfKT*p(>EufI_@TakC6W$$N(jxj{i@z|E%ye0Yt z3(_x-bz`}Fk!!>+k5g?7IXhJR3)g0q+eDid8RQjmg}v_-xyK_e&^xMjl}nc|nuqOd zS3|t|%F{Tc6%z+MereP;yky)oCY694t|dDpI|78j z=k`-eJIvfc>8A|#9|UFK1qh-|FM_zFHzKe240*83wGpkV!$lKk7)NXk`yIvx=lLJB z=^R_M(S`QAwt%2!sgc7f3>;%;IYHOPC7Fky36aBw(IurcUfnN(J3LPe8Itw|igP%X zf_I}-?3rzw3yb#7Ln5tsuj-5B5yuuvEHres9~gLg1Zm8R>Q#z9HsjbC)d6rV<|f@G zwC|qusR{j-|wnMA4Br6&<}`qzIv(0FF8+d-L?&z5Od>7qoiW2dscj!GmGWZxQL=8(4gu$5IfDKXw-& zP=km7AG?A2L!W$ah>OoT`kIXD`2u(YokBpJ!aeQ?S4}F4ZZYFT)xNoU`1@v-|LBFT z@ctfulF)MCjp&}V!!o%FQr0;yS}t*;G=AmxlZM~l$=pKUI3#2Ug+<9$?Qqx-jl{TG za#Mu9Vx>b`M0D;Eh{8#2yL#{_GT+bAx2P7m@&41lh(o1RTY}3tj&<`!>A|^sLGyNp zJljOOtOrRwwn38fVv5&ktfWbVPq3aoToBDkjS(_!6L|`0UXoe)48i*lbUkf;?fHDN zfC}zk30<_-din0;73MOQN-{D@Gs?WB&o9&skV=O~$u7N~EX3Vw;w973NF<%8R(Tkl z$|=2CxubglN*9r61ueb+3(rKZFuVER7LJov)0znXj^x5RkB&mTAt_b~n*1GdM;@iX z&+ujDJaV1DiSB0@)Ptr)JckHbAYvsN{#J79@8f$^l)9Dm*JYBCeWq^S^~K#n5}p`TSFo@X@! zL{BKW2Tke}f*8kLBV4lqiRT(| zg{8+L$|v_ZM6@xQ_*XMNj?+9sIok*^dm2L#%B={#+i*}VnN`j85yj5ef@BWKz-X|D z6$#)0*DN)vTE|vN&X|uQzdL;q0G%VVZMvU6V{y;vGeoG-Q&v2zdW z81B56?{4y8q&A~Edn+y6&Dq5LB+i(mOrxGs38uwHaIw`JBGrf+)O zy8>p8V~gOL<@oOJC-~=MgPC~lDgXFax!|Q`#R|@dF{0;(M0koElq(|HM`J!4R8TM) zhxKc@GuLA~MDjE_ms&~SG{7oF9X-?Hgfeai5wzQx;^1&O;o&eRrh(Op>P^!x(GfDR}YSCB5*6(WfPE7uM3HX(%mUrRC2fUTnP8awhY}IG?AN-s|f{|(C=V5v? zo@9ZC;Ok!;zWDaZ_SgJJ!y%q*f4!bGa$RFxff$1Qs6f@0R5-jP-7eLh1wvIX)k{>N zN;G)IN?d-Nd&oG0Va8HRJJeg3{sN7F1)qb@(J_Dly1PFEojb6v>$;?Rfya=B&W7)& z%{?2e)~2~ZI1&-_Liyh_L7s>q7?&9DfU;C3V^+Y}n>Xi9&Na8}Z-O;Rf17&JKiC{< zuM2OY(D0IX{v`8FaAo(PRQq$)U1A9ssg?hw{Vtnut~gfmA9Lj&w*PXKuc%NMVYaPbQ8i>n(q2HELgueQRVUK! z63?z)$qgD&NQ@;ZDP-2IDB@UJbG}JS-2FHrsL0+LDRmlFF^D)qOqHcR3QCSKzOmRP zyqQj;S~7Nyg-`eqKM_yjlbq2xdliS399k#jVz~IrRqBu2hhyP85fmZ&_=+39LFBOHDK8g6aAfZXJ5dS{ zcJcOj8{fsGrCStO$+p_Tw{Fd@sNt!y#T$jcKH^@`JgBc^#h)i{II2i6`$4O|Zt+Mo z0vhR4o)*1J>z-cng$I!wC1D9xmp?W1-6~;A%p%{OUQ;2iZ7JRQc^2N@5;POGRMt2+ z)clpzienoGt0By*y~#l)<=T_{ZYvQkCBiZTSy|ZsBWu*g`tKm8iWjH1c0+U(XgZah z`#Vuj1m5OR9ec#1pL0q1Ti?oQtdf3A*-#GjFWs4ClDS0>X`Tyi( zlF@pkvc?A+%3T%>>ZPWdZe90<;C^;>F}i8I;j+zit8Fp zeY$=rntYM+^+)-&$JEJaHNQ*8l81+tfeL~T*`E#wkRj6>b{;VfYqdk}SXh~#MFhkk zu>oL)p+2J*BRLeq3uv4(LnF64IC*C23gyIpN6ECp4N|>iLqXcrNqfpyr^DS3`OmbX z&GL-|20W8!b~iD;kT-R`EBL+gZzU}9UCN^vx7S3N9wFcV)0Rp`ISy$LvzxyVY2Ga+j`B3ql{YMEX5Qx~JYj{FdL zRZ)7OaRRJkY$IIYG}$clD{<@9&<JHP?Gm|3==>R=2o!co2_p^L?23XQi8-80#>NOmj#J+jrQ7Cs(_2PD-bdUxnO$r zn=24?tfer^7w9YbEx4M4Mj!jz93o&S5nYE8x&=P%|D@3s!x9Gc$HADX;qqf;^zB(@ z{NTS#)!d3d)0^X z0*iUHX(;b4NZ{o=*7A%EL(U1=sB;QK=T#NVW>V#sAR=eX)9NeVXS1iUer+^~r8&*; zFwjjWIet{*0!H@*rOcddaK!9-dKjMLfLB6#1_KV4a(DXxxd7Dnv_~oQZ%+dG^1!)rZEf8s6~cc>5{$2q02AGo0>+ITc6t9P?^0O zi8ujX(BKlw7-?>Qul7#_J7st#L=!Epj0#c&`S2EpZ0m(_|BiTQ0!u^T3{JIMhlD?n zUu@V&GS%jooznCE+Jfo+P#NO;?gT5RD>s8fC^J{+VIIaz8+spDGC@IEZ8)R<9(z+3l)kKngGFx?XFgwa^YlO zdU((_^}Tk&tYqP^^AIQl#Nifo=aMYwbmqJ1SDXzEueZd?9wJ#)`c=vt=*I%rmYs38 zR(>14UFzBR=InX-Q1fiHaIFA|$wXgas(y$O#K!Nw;BY;rC4LXlE1d>-srD~z?=ucr zSYbozQZbsDZsW{2P5dtY3i=@)Pgx2`|DNKGxP@g)5Fbn<3t?9feb{wn4U=+3?RAY}NT6({k_$;d0uL0#|l} z5QXq`A+P`hNbM=7#`ug0;C8&DBM_=`S_BoJGVp?jpg8PmsXWk&3b@% zh2S)iGFmmS%=n014Y-KX)R3#QX%LCy^Gl0GG|`aZHZTana32*DJeY-(3m4QCGh!8E zVW^k9g+ihjW@-24hG+(=0K;N=T4Ict8f4T1U0Gfo84&gr<)40HyU-+I<1g^7J=$?95`UyyoRaw6 zLO9og_6ExTk4q!>A?(AMJyCOY?!Wh(Kkh682-<;p@v3pc*4K`>wr6vLAP(+`+pxWsySp&I{;vB?QGRy3C{RmJJHLz literal 0 HcmV?d00001 diff --git a/res-xxxhdpi/images/fastbootd.png b/res-xxxhdpi/images/fastbootd.png new file mode 100644 index 0000000000000000000000000000000000000000..a878b1f060458d32792058bfa4f0f6bb2bae2942 GIT binary patch literal 8107 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

kj52DGTKRZ+}QVUaBUdFWHU_ zF69-Z%U4ya4;6HgtrWC>_eehynNGnqPCJd;e3yJ$-=@hz8^JbG?e8t>{dqZ!MJKyS z<6CLa6q6srZi4rs(m+_=5-rF>kNE1B@0AT{syd2$PY5E9hwY1*W}oia+Dz@)+Z!g* zI_O`l-jA<%x+gy@Oi`_wWy~!h6`w@k!Tj_O@ut!&!!Hxf!S}V99lzbAWK##`?X_w= z_T{*KzfPGNJB(jBS9#&7UXPAJ{$6ithxg)prqH*gb~N{LYP^2oDY#S+ysz`W?uM9V z8RUqQzIy(zxmE*?PrFztdwf#gBz=np7u}RGZdO<~YZ*%yYtjvf2nkCG2#W{^i|GkV w$%u){h)4+tNy!Ka`BheS{a*r(PF8j{kN^JyXJ%n8Ct<59YuzZkZXWP|0D~aSfB*mh literal 0 HcmV?d00001 diff --git a/screen_ui.cpp b/screen_ui.cpp index 6c00a223..6f2b68b4 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -701,6 +701,16 @@ void ScreenRecoveryUI::draw_screen_locked() { void ScreenRecoveryUI::draw_menu_and_text_buffer_locked( const std::vector& help_message) { int y = margin_height_; + + if (fastbootd_logo_ && fastbootd_logo_enabled_) { + // Try to get this centered on screen. + auto width = gr_get_width(fastbootd_logo_.get()); + auto height = gr_get_height(fastbootd_logo_.get()); + auto centered_x = ScreenWidth() / 2 - width / 2; + DrawSurface(fastbootd_logo_.get(), 0, 0, width, height, centered_x, y); + y += height; + } + if (menu_) { int x = margin_width_ + kMenuIndent; @@ -890,6 +900,10 @@ bool ScreenRecoveryUI::Init(const std::string& locale) { no_command_text_ = LoadLocalizedBitmap("no_command_text"); error_text_ = LoadLocalizedBitmap("error_text"); + if (android::base::GetBoolProperty("ro.boot.dynamic_partitions", false)) { + fastbootd_logo_ = LoadBitmap("fastbootd"); + } + // Background text for "installing_update" could be "installing update" or // "installing security update". It will be set after Init() according to the commands in BCB. installing_text_.reset(); diff --git a/screen_ui.h b/screen_ui.h index acd44c81..5cda2a2e 100644 --- a/screen_ui.h +++ b/screen_ui.h @@ -345,6 +345,8 @@ class ScreenRecoveryUI : public RecoveryUI, public DrawInterface { std::unique_ptr wipe_data_confirmation_text_; std::unique_ptr wipe_data_menu_header_text_; + std::unique_ptr fastbootd_logo_; + // current_icon_ points to one of the frames in intro_frames_ or loop_frames_, indexed by // current_frame_, or error_icon_. Icon current_icon_; diff --git a/ui.cpp b/ui.cpp index 14b5b094..c12a11b3 100644 --- a/ui.cpp +++ b/ui.cpp @@ -59,6 +59,7 @@ RecoveryUI::RecoveryUI() brightness_file_(BRIGHTNESS_FILE), max_brightness_file_(MAX_BRIGHTNESS_FILE), touch_screen_allowed_(false), + fastbootd_logo_enabled_(false), touch_low_threshold_(android::base::GetIntProperty("ro.recovery.ui.touch_low_threshold", kDefaultTouchLowThreshold)), touch_high_threshold_(android::base::GetIntProperty("ro.recovery.ui.touch_high_threshold", diff --git a/ui.h b/ui.h index 4924fec5..b387ae3c 100644 --- a/ui.h +++ b/ui.h @@ -168,7 +168,6 @@ class RecoveryUI { virtual size_t ShowPromptWipeDataMenu(const std::vector& backup_headers, const std::vector& backup_items, const std::function& key_handler) = 0; - // Displays the localized wipe data confirmation menu with pre-generated images. Falls back to // the text strings upon failures. The initial selection is the 0th item, which returns to the // upper level menu. @@ -176,6 +175,11 @@ class RecoveryUI { const std::vector& backup_headers, const std::vector& backup_items, const std::function& key_handler) = 0; + // Set whether or not the fastbootd logo is displayed. + void SetEnableFastbootdLogo(bool enable) { + fastbootd_logo_enabled_ = enable; + } + // Resets the key interrupt status. void ResetKeyInterruptStatus() { key_interrupted_ = false; @@ -200,6 +204,8 @@ class RecoveryUI { // Whether we should listen for touch inputs (default: false). bool touch_screen_allowed_; + bool fastbootd_logo_enabled_; + private: enum class ScreensaverState { DISABLED,