From b7357b1711f5c6ee1afc4b7f3af5efb9fdb16a92 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 20 Jan 2011 17:23:23 +1300 Subject: [PATCH] Fix crash when canceling download, fix a runtime warning in osx. --- OpenRA.Launcher.Mac/Controller.m | 4 +- .../Release/OpenRA.app/Contents/MacOS/OpenRA | Bin 72772 -> 72772 bytes .../Resources/English.lproj/MainMenu.nib | Bin 6774 -> 6774 bytes .../Widgets/Delegates/GameInitDelegate.cs | 51 ++++++++++++------ 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/OpenRA.Launcher.Mac/Controller.m b/OpenRA.Launcher.Mac/Controller.m index 7cdf231367..93a0242e4f 100644 --- a/OpenRA.Launcher.Mac/Controller.m +++ b/OpenRA.Launcher.Mac/Controller.m @@ -49,9 +49,9 @@ - (void)launchFilePicker:(NSArray *)args { - hide_menubar_if_necessary(); [NSApp activateIgnoringOtherApps:YES]; - + hide_menubar_if_necessary(); + NSOpenPanel *op = [NSOpenPanel openPanel]; [op setLevel:CGShieldingWindowLevel()]; [op setAllowsMultipleSelection:NO]; diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA index 39645a7b5356bb89e5e46792973e35f1992abf27..15581961d10980772af52ebd2dce0501d3200a51 100755 GIT binary patch delta 263 zcmX@IgXPE$mJJKU1;lUr^DVnpDExKb)8&hnh>33AAihad*{9p~ybuF}XSe+>Mg|53 zk6zOm;tUM`MJEAC!vimLfB*l#xm8zNo!N1V`Q*(Zdzrs%G2dJqDySrxsj}&5td|vc zcv7iP)s@^?N@BhEwZhms#)_~c3i{o?^0mfb+pw$Aihad+3>&%&)@(5`*ho$5Mp5P z?6%*<$iTqh(Q7(UoPpuLXg84D+^Vas&g{L*Z1U!iz0AtH%{CW@3Mxsi70aIDwJ6r; z?W3IY3N3sMtU!GMK+HJ#{73!GXUcbpslK=jGB{7u<_}KdcnqjKXg@C!2NdXG8Y-ibA1cjoSMo`z21E1+64}a{fYnI z)a=);n83)uF-7tJ0{aE^|C9Ir|L^_(52p>#9-9UR28#s@jLk^~Dh(|TD;la97`*@e fXWsnezO4bX*)H$tDgunX%x1flw{H<(oWKnLNSbvp diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/MainMenu.nib b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/MainMenu.nib index f14d15d3628b8f4ccf1cd4f93333547d7526e1d8..de7b42a725cd1181d2f8bcdd0a7336caa8ef7c2d 100644 GIT binary patch delta 2345 zcmZ`)3v5(n7XHs&v3URg{`23tvuSz7feP)!(gM|12Ul9CwLGRpru1z~ryb~+X{Q}p z(KRqfi3{kix?Zf0sM!TwY)}anL=hDqut<=W_E%T< zV(c92gDl7f58K8LLk=5&T*!l2Y!K!^KI>%xD1bs1W_!U4f_(`NR*8j}iPg9q%WxXz z;X=&8CAbuQI2RkR5~rX8Yj6cB%)$W9!+b14y{e)!*s-km7;`c&n-BA`WINjio(jmJ ze6uLiUiKwB2ia_ZFv|#Y3E@=|LOx|%jyWe-h_$jHTS)+`paPb%Hg+59f@Q3awX+Tu zfofW{w#l!x4|3=9hQxDN0nHTE;$(_3s@lQ{xY!vR8XCfMTx1V&&x8wDZDX(^_B=5; z7GO^SbRqt`uP3(Fo!`*BRtcSIDi-Wdm8J4How!z-7Pb#<%?yoBM`zXg2 zxQ`WHsx=Rclo)T#BSdG?j7xO!@iC$QpwNl-kZ^c@kNq?7EDJ+Hvg_Mf7rPVdY@bYz z)m|X5g9z+|m#~TIUxkfT)uE2o$eN4zrdaL4l4nS1q&OBJ^~6==xD=^3NQxKs`v8kz zdZNt=?EypDkIJdB0W8@Hg`{dPsjwOYC*b#Z9D$=G{S=S?5|3TjoYG0nuu?|0tn{MF zKZWRTRPi}D5@ti^E~ht-}wq6ZYb1QqEC9 z3DtS({lU)WXmfWYI&=1@>p4v-V^nZ)Akx$APU6%TcXozDEzR+fj;IXgWA=VE(~g>x z>=%`28->+&w0mktDjWNbFVqog5B)i4Pd0P)T3>Uh z!ySLsUSv+S*QvDZBmiGkOkObR!Z)_kOtpNPCdvL(X8IgN?0XL znS%|GmFGY{WRr7i@q*z2snMUSciOX%5wYC0?sV!6MO^B#ob-kKmLR9^rveZ55L6vU8S@m~yof>D6 zo5z2HYPtz$On6IWm~cw{MSX8Vr)p3SnA%cPTc9ixPOFW|tL|10sYm*quJ5$illrsz zHvJ8Kzy7xVu6|HIq#xGb*FV&c=*RTq`XJ{#gHPmF@~J$NPv==Yn|pXJpT%$CRlJ7R z@dn<=TX>MK;>hpe+xZLpCBBQl%wOSq`D=V1e~Z7v&+wo5kN|PH7%y}ogcM5rQKX9r zVp^`4E#`|7Q7X#BBHo&x}*XPsX4zBrliar7nfMRu;+| zzhAUDbT<=^Cka2P|S3!D{p(S)5hy=J{`?YG{x-n9-|?^y%Z2i8Z{QR`#tKh`JK3F~v~8|$QX$~tR( jZ~bWfWSzJEZ~bBox|r(^u5qsMF5M+u(xvQziABExySBDL delta 2282 zcmZ`)32anV6n*zct^M!+H}B7zSQcxhAYD>uZHtUjD8-giN;`$Nl<7iC3!^O=I$f;< zaGndGfCBlUNMZ;A0u=?Z7(!hTQ9^(yG`JvQUBC^fON>Tk@%|a6RFrwi%e?vb{d>;6 z=brg}^zWlrpO}yhlOPwSKt7Z~In+T5EP}=GC_D`vunsoCX4nZ`um@g;eb5c>!-sGj zPQ&ML2F}7c__m8f`7IH1WS*QWYr2|l-4783cqo;3B=mNBSTg#=&^VkU4Uy94=?dVREFLAv2{a z)8#B_lT~uIoFL<5vW%8RGEH*nl5Xjd#j@}uX(e{jM&>~#X@>_OOXebqDPB3*Q|xVi zxPFeer3VAXk_TY2%-&edZPo7L@RI^>Lt76?BcmY?rk1*kt@9?xBd*U#J()|qyaoDeLKkb|W?GSVKndiAO_lc|Vp4F$s^ zumDjm92ht~6c#0?`OGi)AX8F4_&Oo^uPn>VPI_lxIhhM9!sL;7Jr;K*JOd;8V@*tw z<#88JoYPwGZz#ipw$;wZ+R2ho=A1CdaPG-fEuo0ejj=Z)y&h9U_7~XvMoau(G+W?B z)YiCbt=K`D$R1f1ChZB;C!9L}x>zzP``;H?gtGA%>(+7z$sY%pCTRtTR-SySi&K)8by8s-trq@eFp#6j}y>C zeEl!`6f3Ym)`lv;tvBkHM8YMgG3)fZ9KAAo3+V_=A6l*2X|{#Nd+g>S{_`P z_=|P6p3DyJinRv|4#O2D>vr*>=oBH>2w1j}fsz|w8^n3dIC{}IItCbr4d>{(aTKDB z3^Weqnsub%j3jfv5n~2;gkG6b@AJmBI1Aewyv?S~o@91$yP04gO8YU5 zN;R8|sPt>lX4W^%^|vQfbH{+!7T5XPofCb&gaNG5$_i@g8=O{@Io^oUDnb}7y(gIE z_P9WNP-NZM>`AEI3^JJ=lNs&S^gCNnG1d^U(KToxWF&)5&S2<)&Reu zWbsP=gaHQ(Xf&YNfQyDQjo;5Z_~U$)Ko_+>m-$$}#(*EY?2aFlz*cp;`jYyxx>Mb& zzN5aY9#lV4zfjMqKT<(sXcE1L-b-Edewt3l(+oO+X44#6Kuf8I`e_qwp>4FCE}#qP zVj7^2(I@BW~SNa?Mlm1OFYj zGJUzeQh!cApdZu^>qqos`Um=P{e<45f1;n#uQ0+Cb_=_W-Of~IV+Ip!7@NupSP?5> zrOd<1StYAsbC{R;*h2OsTgq0kHOypd**dnBy~_5nH`u%EJ$8s4W+&Mh_BA`tF52$4 z#hSH)cBFZDEpOyY_(tB%FY>E~YD60eMxHUtXf^`IdZWwOZ=5pD8JFy;J;pxD?y|eh z%)z@Sb&EH}+v0#YC=Q9k;)pmVJ`l%6k2onl7N^8%aYpotuf$pLo%lhV7k%Ov@tgQV W{3R}lD-PmN9MqvZZ049Dng0NhnyFg= diff --git a/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs index 3403dc24e5..7412f6ccf7 100755 --- a/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/GameInitDelegate.cs @@ -89,18 +89,21 @@ namespace OpenRA.Mods.RA.Widgets.Delegates // TODO: Download to a temp location or the support dir var file = Info.PackageName; - var dl = DownloadUrl(Info.PackageURL, file, - (_,i) => { + var dl = new Download(Info.PackageURL, file, + i => { status.GetText = () => "Downloading {1}/{2} kB ({0}%)".F(i.ProgressPercentage, i.BytesReceived/1024, i.TotalBytesToReceive/1024); progress.Percentage = i.ProgressPercentage; }, - (_,i) => { + (i, cancelled) => { + System.Console.WriteLine("here"); if (i.Error != null) { + System.Console.WriteLine("here2"); ShowDownloadError(i.Error.Message); } - else + else if (!cancelled) { + System.Console.WriteLine("here3"); // Automatically extract status.GetText = () => "Extracting..."; var error = false; @@ -120,8 +123,8 @@ namespace OpenRA.Mods.RA.Widgets.Delegates } ); - window.GetWidget("CANCEL").OnMouseUp = mi => { dl.CancelAsync(); ShowInstallMethodDialog(); return true; }; - window.GetWidget("RETRY").OnMouseUp = mi => { dl.CancelAsync(); ShowDownloadDialog(); return true; }; + window.GetWidget("CANCEL").OnMouseUp = mi => { dl.Cancel(); ShowInstallMethodDialog(); return true; }; + window.GetWidget("RETRY").OnMouseUp = mi => { dl.Cancel(); ShowDownloadDialog(); return true; }; } void ShowDownloadError(string e) @@ -138,17 +141,33 @@ namespace OpenRA.Mods.RA.Widgets.Delegates Widget.OpenWindow("MAINMENU_BG"); } - public static WebClient DownloadUrl(string url, string path, DownloadProgressChangedEventHandler onProgress, AsyncCompletedEventHandler onComplete) + + // General support methods + public class Download { - WebClient wc = new WebClient(); - wc.Proxy = null; - - wc.DownloadProgressChanged += onProgress; - wc.DownloadFileCompleted += onComplete; - wc.DownloadFileCompleted += (_,a) => {Game.OnQuit -= () => wc.CancelAsync();}; - wc.DownloadFileAsync(new Uri(url), path); - Game.OnQuit += () => wc.CancelAsync(); - return wc; + WebClient wc; + bool cancelled; + + public Download(string url, string path, Action onProgress, Action onComplete) + { + wc = new WebClient(); + wc.Proxy = null; + + wc.DownloadProgressChanged += (_,a) => onProgress(a); + wc.DownloadFileCompleted += (_,a) => onComplete(a, cancelled); + + Game.OnQuit += () => Cancel(); + wc.DownloadFileCompleted += (_,a) => {Game.OnQuit -= () => Cancel();}; + + wc.DownloadFileAsync(new Uri(url), path); + } + + public void Cancel() + { + Game.OnQuit -= () => Cancel(); + wc.CancelAsync(); + cancelled = true; + } } public static void ExtractZip(string zipFile, string path, Action parseOutput, Action onComplete)