From 3b1aef842c0fcf271048595116ce4bc12c4c1e5a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 10 Aug 2006 14:54:23 +0000 Subject: [PATCH] MacOS Classic is no longer supported. --- CWprojects.sea.bin | Bin 476160 -> 0 bytes MPWmake.sea.bin | Bin 22144 -> 0 bytes Makefile.in | 2 +- include/SDL_config.h.default | 2 - include/SDL_config.h.in | 6 - include/SDL_config_macos.h | 112 -- include/SDL_main.h | 25 - include/SDL_opengl.h | 3 - include/begin_code.h | 3 - include/close_code.h | 5 - src/audio/SDL_audio.c | 4 - src/cdrom/SDL_cdrom.c | 2 - src/cdrom/SDL_syscdrom.h | 1 + src/cdrom/macos/SDL_syscdrom.c | 543 --------- src/cdrom/macos/SDL_syscdrom_c.h | 146 --- src/events/SDL_events.c | 4 - src/events/SDL_sysevents.h | 5 +- src/file/SDL_rwops.c | 53 - src/joystick/SDL_sysjoystick.h | 1 + src/joystick/macos/SDL_sysjoystick.c | 301 ----- src/loadso/macos/SDL_sysloadso.c | 110 -- src/main/macos/SDL.r | 58 - src/main/macos/SDL_main.c | 647 ----------- src/main/macos/SIZE.r | 24 - src/main/macos/exports/Makefile | 34 - src/main/macos/exports/SDL.x | 206 ---- src/main/macos/exports/gendef.pl | 43 - src/timer/macos/FastTimes.c | 348 ------ src/timer/macos/FastTimes.h | 28 - src/timer/macos/SDL_MPWtimer.c | 161 --- src/timer/macos/SDL_systimer.c | 195 ---- src/video/SDL_sysvideo.h | 6 - src/video/SDL_video.c | 6 - src/video/maccommon/SDL_lowvideo.h | 104 -- src/video/maccommon/SDL_macevents.c | 778 ------------- src/video/maccommon/SDL_macevents_c.h | 33 - src/video/maccommon/SDL_macgl.c | 203 ---- src/video/maccommon/SDL_macgl_c.h | 47 - src/video/maccommon/SDL_mackeys.h | 141 --- src/video/maccommon/SDL_macmouse.c | 136 --- src/video/maccommon/SDL_macmouse_c.h | 36 - src/video/maccommon/SDL_macwm.c | 47 - src/video/maccommon/SDL_macwm_c.h | 28 - src/video/macdsp/SDL_dspvideo.c | 1480 ------------------------- src/video/macdsp/SDL_dspvideo.h | 56 - src/video/macrom/SDL_romvideo.c | 762 ------------- src/video/macrom/SDL_romvideo.h | 30 - 47 files changed, 4 insertions(+), 6961 deletions(-) delete mode 100644 CWprojects.sea.bin delete mode 100644 MPWmake.sea.bin delete mode 100644 include/SDL_config_macos.h delete mode 100644 src/cdrom/macos/SDL_syscdrom.c delete mode 100644 src/cdrom/macos/SDL_syscdrom_c.h delete mode 100644 src/joystick/macos/SDL_sysjoystick.c delete mode 100644 src/loadso/macos/SDL_sysloadso.c delete mode 100644 src/main/macos/SDL.r delete mode 100644 src/main/macos/SDL_main.c delete mode 100644 src/main/macos/SIZE.r delete mode 100644 src/main/macos/exports/Makefile delete mode 100644 src/main/macos/exports/SDL.x delete mode 100644 src/main/macos/exports/gendef.pl delete mode 100644 src/timer/macos/FastTimes.c delete mode 100644 src/timer/macos/FastTimes.h delete mode 100644 src/timer/macos/SDL_MPWtimer.c delete mode 100644 src/timer/macos/SDL_systimer.c delete mode 100644 src/video/maccommon/SDL_lowvideo.h delete mode 100644 src/video/maccommon/SDL_macevents.c delete mode 100644 src/video/maccommon/SDL_macevents_c.h delete mode 100644 src/video/maccommon/SDL_macgl.c delete mode 100644 src/video/maccommon/SDL_macgl_c.h delete mode 100644 src/video/maccommon/SDL_mackeys.h delete mode 100644 src/video/maccommon/SDL_macmouse.c delete mode 100644 src/video/maccommon/SDL_macmouse_c.h delete mode 100644 src/video/maccommon/SDL_macwm.c delete mode 100644 src/video/maccommon/SDL_macwm_c.h delete mode 100644 src/video/macdsp/SDL_dspvideo.c delete mode 100644 src/video/macdsp/SDL_dspvideo.h delete mode 100644 src/video/macrom/SDL_romvideo.c delete mode 100644 src/video/macrom/SDL_romvideo.h diff --git a/CWprojects.sea.bin b/CWprojects.sea.bin deleted file mode 100644 index c7348848ee619d6df9a86fa301d521dff7c947fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476160 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⪚DMEkmzr21cbTL$9pxF!F^^ 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 z�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�!Lf@dB_QlEaJbDv#B}dzjSEi1$z=;95rk&9LLgZB_s#c?Kf$)3>S4i zeDDBqIX5UBD65uRv@QtWPeKajVzRebHImh=Jj^bUihprZKbq%n{8jo}O#?s8ro(eu zQp~~s6TvX&!43Hs`UjZq8455b=p;{gcD*vqhOsLT0rP-HoM19QVnqM6!&XA`AjYe= znzpY^(YqRCc!{yoaPj|PWA(FlL#NiUYK=M>obPK_u%;OmrUWE)pv zNI(wz>4>2DvWk3WWxFlkpXG~nsd8+v;DkTF8?RR3B?Rp3=H3=0#!Z5NP&fU!kJafJ zqopNZY1cOq@dc6(pDVsSe9kHdxx0DCA$}>t^hAJubO=^;FpIq)0$rU)^w}7~R9_iv zrwzqh;YVH3O_qp&t0Wv?4HG7KNG5a!L?7ibVba--Wgz4Krt@wnKh!!{NthiJ!K)~d z1ByzrfS5>TuWL%bHo%rC4z-N_c4-_ur3#dTiP>jTp@M9=L0)fb}{+(Fe+lXg`^ZlRm*LeUy=cE2Bc>}m7nmWj1AXkPXZpOS1_jW%tm0`+6 zXL`0UbbcW*JE%6tx>gHm{wn64oOYBc^w32Nir8#B1$|;BpTwnn4JS+)md8kVPY!gJ zvV&b#CjN&=lU#J@vn(o)6Y3@%EwFcVA9hoUCiw3kYX0xcQ<*=@(Ck$PW8*)kWTr_7 zULadw^(PTiSK#@S0rG2x&)zuM-!F208At?WZ=@DV>o6XLw0dlgaLd2R9zb+Pv*y1m z_akni7c*w^jr-^q!EEWl7*~KjdnlXKvf(C`&pSh`zwMO~CyVG;Dmr6D}ysEatAFq|;)}@T11o%M^oO z?g`&gUL7SClYJJ0FOu_dV>C6%D%7P4%I(Ss)0-37OQF^Eoo`_63z98uvD}V1p?f{^i`1gJ(L9p({!pv zKeBh!jbQ!9`=OZXlIs(H+G*Mj@|D87O*&$&(Ey!5hfL$Q-yRLixDUt@lbhObtuNMO z+ybIo!n^F@Qm`3qur*8YiCEJvA?CiezXdJbItR*O=o=qretOtKJEG_Uz=ViM!mV~O z=B3Vno9wFc{geM>a}FX!ALeGan98B>EjL0Mtxt*(r07lsczVbMfs}l_owPF`soWJw zM4RF|#xJ*7^P^9S>rrj${VFN}Lfe#_Haubg2h2*af#Ug`sQRn8^z+hXaaJ`Tr;YW> z58>b`a>ZsyOC}%kFIwf~EPh~Hfa_rAv@-(m6(~4A;;A}tRk+|L7T4oUUDio`*UU}L z*LPNYQ&TqVOJ36`CjJVi7SHT8y@9`MJTSkIkt9oE3-6k`^-EXL;DGu^vp~_wOVR9!~xNdssBBx`<6j z{Wi}J(*>)2eL#^7VO4CPE(6J13A3qyQ1anJt*Ywi%glkHg2Ff)sP(@$qKH0~w!!`* z;(DS;wlRSGI(GNGJ+jS+u31HOnMnXzRKR7)mBR$pw8ZCVL5)TD3t2!VE_qwyB+7VP zJWFww1{uj+k&H_&(s$T(DeSa&CQUDmgC}{~P7eEnDbnkl0zASY)z;dIQTH9EgyKlT zy91CmNM!o}m2wwOt(wLEa$u#`Ukyt(VSrsWJ2%7w8|?i_T@PRAt6kqJ(VUi0u{Cw_ zU4efaNv(ChB@k%(0gHdS5rJrH^j1vfz=rwC`yz-G!Mi@J?^&ib5QrehXK{@zgjlx@(V#SNDEt_hLTwEC$N;GE zWQ8C650NAd(EFi=WS|GE4xjAnew^8N*{0Mh7lW!wO& z1ey#Ys6HwQXi$!~uhDq$UP-b~4qv~jBMwF_W+l=2Ki{v3MN-h%0+V**R*ci~dxB#o z;U}t*xIIbU9WMQ%B~0XO^`%QQ8l!q`|<1aZqW8pHP>1HTm z-hC?}3S3=~&x;z^I2Vht2`Mo6T)&K%X5V$d)J5&pzLFZlnr#Asbjto#4Jkfm5!fEx zB6=S1s3f2kvDozt!c|$yS=OC_jI&#(7WUVd8NDpirv*3nw2m?v5LS34s4xD ziSHFr-0BT&HJCfxG%bfl2fT|xj_7x+uvTet2GB&&+L@z~+oO)nDP=mW7tuJX5+E{? z+o$JI&3~?#mADEgnEVjqkbwU^zcnwr#9}H(;cwDPMlW0 z+&GH>i1XC?+8`54&{YM@f;SwIBaK>xg4~h|1944*6!8SawLe6$^wvg^v4GNU$ElZ4 zp4-9YP3s%VeRiysIyMll-`z8cw`L-klci~_Qz|&RFKxmmhL|z`K>i^ZY0`6rF5FVD zWPuND8k`KkV=l-|5er(8pK!Nu5f3>rh|nE$Z#~H#|2_@icIrlyVx*R9jTMKuQ^Uf2 z4L?IHXwUZEa1O@fK#K7V`L*VL89p@8Vf!V;<})}&r-U)VPvwZ|JJvPVREob8Fc_3} z;ZhkenYT6z#IG)|bESqUr9iSB{pX!&==ee8;)Oyf-mXA%X8*#3m?3;sW-DWtPD3|D zHfDu}*!Wjr1s<(yTa>4XNP=ho_L#I;g^v6UF5xO5GTlc>Iu_wM4@OH@pjJlqzr(>e zvy>0aXYvlHuzMS3UiPh$w|fKRc&nK`$)-mtCgQbABlA(hcUAC^$6`jNb5CV_8n7gq zMT;36d*@EeqD$Bn3ACY9^RzI|!%%DCm#!UT@|rv?{>jM!TFM$8C;3g#dnw#6+IhoP9-qPvl`IFKJtb2jv^1y`J4Fyx zfZ9&pC`RX6RyeO&G)Km-0yOvQAp4BTwwQ-~3xyK^ag~k#J5tRnUjGlhA$v`kle(wh z<^2*gQ@|QRj`6e}O=jtx@H#}Q#+KJcxyOB=xG+6bj*=93;UuFIH|wM)@p_R>`1zrl z3SRs=&Kq{1b)X-aL|g|XTi6N$iKb8SRXbOJxpYJAA?yWgrIdm;JjWxp#OOfsJtKo*d2g**sosKN-K5J;}sf*;Oq8=hy~!G z4rn>_5;L|>k|*j6vct7pVm`}^RUbhF#d89F%nLxB*#|LmGq!gPn6P2jVqq$btr^~( zhvrzLpT=6EaGIRPsR6)vm1at?iC@e}D^4DkDU1pz^om=AD6B+9p;m``q}x+Gy#<3* zy}@9cFlF!{x8CrAOkE4LqZ$N4Ca{3c89n-xNulw{VA_S0ANJa&dRT=3`I)#5kFX2N(i;?M7el7sJKfZhqQP?@*Q)Wz=GDi#%*3VATorr zp+r5c5nwOBZ@FV*$^ok}F|BH4wKKV-;XN*;AezOq{dh=Lj1qB$plcHn@lRJWF>9Ee z6=y<5{mDXC*x&vpnkev zj(X5aeDQIvM^-W>UUAjC#}1yynfxvOE=_Zuw0QMvdBAvc5-I#&m+GLz_(Wx?#1nVq zzn33cQeSFUx>XR5v%0yoFlln=O^&};{LH%hhH@=BWkzxCP3MfFqAtyImPepusi&Go z_x*!sY3Vu!zV#D~4;=ypeq1)svQ3EssFb`uyq_o+lO{qFTW@&Vyi2(FtG8|3caKnJ zZ>hz2aJ3q+yFWv9-=vpzY?A^B+Mx^IaJ3AA$U!v~p#t zS9I#&^^Zrb)sWFfrB0G^Sq0c;`ABeeqk$XVswLOa0NA69081O>erb)}u^bKLFLf8S zjp+EENOU5rt<+(tB&uS1ULQ>LiI!Ix+EX)L!E0&4$u*EYD$;17hVuPr@J8{{o9sji zU=i}SQ+`A=7%K*dgEi!1F>rwbpc8btAvn49n@i78E=7!%>Up^xk0HkfNQ~@BT~O+) zE|)2s;+E}(W-*x=_H>qx0i8Wr>i#CdwF{MUaj4QCox5>?cKN`r}2 z_mfi+ZB*GuR#o9S7bY!RPwlr4S-ew}2kvch&J<1QV}*izZjLR<^P0;!ClhIQIVTS? zyY_4k!v-azcHc241y^r?7aG^WNU8K-2L2fo>%_5TW*$O;62y(pIr$Ou!#wAttV1na z0*=CM-5p=&m_n_vktsN;qLFvO{oNvN_)z_t~ssanj`b!;8&NnN;5^HzGUIz)e0TWMcteDeube6#oNaSbiY*`hp# zN`AKUpekIlgVXJn;wb1{Kt`UTJa*#@G=KZGXH~Nr0}G&wrQdk>@{?qe$!Z>HF(XUW zJ4ro;G2R4{z0DV$yERAaH=xYFla5z~1m43KdF|V_cZRN!bW3G#-m@pWUH+bGWMm2- zUUkk1(^wLgd<02#IS1;(%ZTX#ojQ2p(7Rer_A0?g4TnHMvsInqH%a!#sTJCY#`n=? zbXxvFiw6<2KNIKkTWc>Z8A~p!FIw;0rX7l;@{>(R2oHbItkzJ2S1q!x?Pg$ zmfaud9L>yLy5GCwZJTw_f6u7|>=Fi~GP`(ML^0A|{0iOJb>xcVbf@^a!eI4(F!qf> zwlz(cZQHhO+s19%ylvaIZQHhS+q!Mrwx*xwjhXo-zL=P)A1iZb=H69t;{2$p$Xwab z|KU&qdd2W)JI7BmG738+N*aQkqwN;6bHlgE6EX2#IvBTLhy;D7ml*LOYpHCI6>Zbq z_6u}zymUd7WaGA020fOT7s?IEt9QTnDGw8>a&_`-s$ugyADn?+&CT1 z=e%>kN$)8BSJv|`+GAzJBk+A!qP$1icuv!;1~9tzv&T!7r$3oCFubP3Q_Ytn0tF{*5&QSfPIAI|QY-+Fkjug{ZVOO6V3m5HNF?qxcZ@-zMF z$v4@biV6IU4|p=R+e_D-ZzZf8scnL=M04wzecFMnT)ZpZWxhc=^f^;2tK0%_JiltXGNaEEu zZO&_aKm6~-j^6+=2A19x9G)p2sG5V}OaI#0`l`6Qb61D4dH2b;v46SowU1q&WEFCb z-GGi7MZ=iaYsstMWG6pt3$}72>EqnJ-uss1%2Qq9mQ|~pxxt@#ww#Xz00{Q+IMqoq z2Z{aM!JLjF>g{um`bX;nM778#knu{fd}6ugNP+q#CNbMIImS?G8jwodKYro8-2>@D z`;pA`k{Mz>AB$q(9dq3jfN6!=P8vGv2J~ar1kyn<@T3{Rojbmre-gYY0sd736@UvR zHLp(E(MHzH1Y*f|u7)(*n_WX7fU7R%$TAoCP3$MuRKvO_L!*feG*s}ZOEYa!*i9+G zwier9UxI%L3-~tIvk;4nX<-Wz7ynckm31oVDeRZyT zY2lTCkz8tF6(Wx%8$ant#(@i;qxLOwT(|Tb?vgoPe*| z7!TS#gBDY<<+>-kI3$sIQWjCS*B5hh`n#oMJU8{<$x%bfN1n>13-9V1iub4)mtqCQ znX|?2+Qg*(Mk!~0RjJc+i)u|@h02}vCztKHdkhM-^F)VLc{AsGj4<`{z_3$zGtzss zGL7@Zj32A$JqCo{_NygqdeD3{71Q;OUmq4ftNLY$lOmS zRsL9iFqf}#|Nd5A?~+T#*}-Xg4|D!(l?5Y$=E$i9L z2U2L@D2BcM-!)-GXcRq_X>A4ErN~htimxrN5QKM7N#w=MH1gk1jP|E4^7KEXu!8bn z4BX)B;LWS8BmG)Ewn)B!yQnW8x0wnO=U0-%@}wAWAPsE9tK%LDgdBt+NH(>lB#Z_j z`0|)U{=&?PB8(Rs0{t_h^fotR2~eiju4yYnu&kKS_W4MO#2=p7<*0i0ck_)^Q5P?Z z&&1$eWguzl1kLOAZbYPbJ}N z!Ktd@LBUloC^|H}Ktue~NwIo)uOuF@L!Ja2wQ1Nv2II?_4;kq33NsQ z+E!0dZHvzm^_Z1|&NNUWAh;YK=q&&@`bKs)kS>>>`*ZzPt(Ixc9azsWETTi=Gdv&f zIRR+SU~Ej_CE?r0r&b$({pas0%nrrsfk_H0j05(0lO(_O8{GV%qV5<8YqJ0|Uc_Gj zI6kp>x(~6N{pClmb%FOl>W1i~H*jr+zR19xl90)LopqA8*loXXla}ZWWSZ0WMN0gO zA*fd0p+SSI@xs!gv>5`O76Vp-eZQg6Y!1yOy%Sl}+66(2SPx{R>5;!-Tcv1J6x1q$Y;j8V z;@Q^)^T0%QMG}fV?CK1$mbHNGuDgzMq=6db83;>akKojQP@Qs(?bJy->BY`4$7NC9 zm|!JvWDNeU*a~oh`?GPYytl2Tx^6w{e|}Kj@DAA3L=Sxkn3m`Tkh8BFpfSd-FNDV( z?g8cUOBaAyF~6WUHZVeDFx~ydr`nh(u8p!!9HD#|@gt|AxX2NqYM5E!ibHFnRCDxJ zlMY(v@$o&5)&y0~u?2)iSH#+Y2fy!a4nvmR@YJCHaq${!5RB;*8(1r{vShQ@42jmTN|z?0Cllk9X^36!Nd+#>7|x>SZ!T zenIV;uQE@mVhrcrkfSr%nNkt92uIB9O0}%SsoQvz7Z4z)WDs5e%nrV4Io+qrOcEV> zs2p#1%#sOYf*rnqg-n*AKj(;Zy>WXZzzT%)!f}}k)x)VY?C;v$K=wAev{HP?yp`4H z1dCI@n{QDLI&R^T`jHVXO&iI40-f0T0$F#^cVBaEkEEsDAq}_Oa7?Rx<}*E>$?sjn z*dpiF2gn3L2vR80tR{3kL*=)v;hl#h^!Mc<64I4EGe{i;PF1od8{qlK{?I^r!zXLZ zzr|5Es=4a*iHVaF0O#OEvDjv^-XVf`aGQKEF07wF-9rs|tdm@`N<6h}>wo##*@il` zCsx7?xXI_@PLkKshKi#}?JQE{={tMK{77$#fl{mQIr^-(Mx;gVxKHo}90lxu8D^VL;-UIGHQdagutEs>g3AVJjS4x zM@V4pc*Za3LMO|aiJCoCyVHF!yow8!5UkPQ%O8@!T@^0@N!pjhf=&iu(-)3t-x)@6C% zAe8s?V%Q{ytrpjhY!MJLhanH4J`I$;S00jUv^*J(T4#cnrzqv-)qPZ#Uo4>-nYNVK z$d{mt7Y-G8TgUQ1yL`7*47=X6=S7Cx1|ZKCm{OXZZe=!kle+Z0X%#yW+4oK?GetD2_(~iy2Ii>CcE~%9bu_2=n@6 zWE^$6T^!Zb!~;y0g%ZJ++u<=lGC>9Nm`eaBs_69T(P;l~Mps|~bmDS!Q(hRK{`BE% ztNUtRAp658z(LG}>_vm*iFO13N@6+j9y4X<5V}BjUImOgrA!+=5 zqzSIw{9FRxZ8R>I!dtC?Z>f^#`{XRjeWk%7dNgq$;v=?MyV)_i`{OJ=p|(c^ z&GQ{_mmP%S+Rdh+QCCXtpJ5{DkAyY;-LfDK13f6-BR#s;jrYh7`WQ|c1W*kZd_jak zQPAMrzY|iziOzSl3%Cf1-Rzp0>^k<_()&HQ^%##bi}Y?@lzstyh9TGJvwoP>OB>84 z+N-@6z7OE#)_+c%9lPxKPgZrbNyTkmZ}%sB+&40_d3xKk$-wXeyyv47wKnMA0b&Y~ zRZ){Qhx2X|hP19M=9ZSRTudvel}w;A)8d5g-U@2x79fl?p`ct6eX4KK`M(nWe4-}r zay3*;+*7l?o7$`RgJroCU#ir*RB!95{GrY(FwYKJWiqo{H*0-g#^UD=u)QvVDq;3D z_UJOKuJCyGY_R=2skqDe#rGWdu6pJu-)`&dQ$H0VNiN};e|#^r{Qpkwbei?1mmb8}NLoN^+mkR;jcANiAj#~a$HYd2Y5x?&e17>3u)rDGN zoC{Cncx$x8^4%RW8T#hD!3qnYl&b-tknPaqmRmt`tDrR)2@-|pbL#eT0vfaf%s4Mz z``G*Z{kId~g5%fl@cYi56Ktjv1EGd{YBaUS_tgES8Uji%&d4V~J@2p9J9t8F2l~fq z7y>-N=lj4NAm&V@jhXSDH|ep!LWHDpt(IPbVWBIKFTw(0R{B8dJ|x+5cz3phA>>BS z?a3SXI4uhcV-oQ#f${U_*UBRSqHbrjD;G0Hps{qRJ4Bhwn)os3cJI&FfFn*0N!gd=>ZjH?)Rum< z$f=}k=ACNAyT{$URO+__5tZ5pv-`4e49 zK2Bgkfzq>Vp60_Y z1E1GuKO+>b)seK$(~qOqsIIu)9~}CjUrb-?9O^eWVr1lBZe141>rlIkEfVvc&$dM5 z)Gi2aB*rR_v+a!qZcC9lFNbl$YT4+v>@9=4annv}-?}R&T*cgc0b^O^n!3T>;j?q^uBZA)sfd72*60i1DN z=59!2!uRd$Q*jpV1czc8>?n!Oa6MjNK)so0Zhse^l>Sf` z{_-|vZbBPcRWxjimC;>Rr8`O>)A?O8ggx~)LDr02i+l#cvgbIG6PJ%^+ zC72{Buzh&CeFe0}zhg}AwbO68SHa}ac)i*m8L%Sl^#Qd=-RQ@IOQbAiDkZsoW2VwN z=(95z2UC-w%{&?#sfxyMPB=O@;2@$ZfEavZEf1qWSMi(D!z(?~fcAkRxJg=!8A6Gm z?f~tKH1BvP#j4$){b_Yxvn$BFs%6)Z zfo&y(9kjr%Gk4;`0pE?GZ)BY;L%_ig`ZfOnW`By5f;))R@eh%V&uupm zo%;}BwylFiJ*bUY5qlzZ8jrA0_p{XKm2w^_j5Sy`cM83o#nv(-6yG4|_(Va*z=_>4Edb$qw z#T?dC-FbXpex4yU0ZtuC4e8u4Ez*sGDBPH0?7R(84@A?AD`qc`a0NV<2fZdf{Y4YV zQ};hBlB~fJQ?6fBQ=)tPwC)#j3^c#vq{pOXI@l31k?&!$44m22mO&|1ZZ(wh6%2?rS*Qs>gYVOGBzO&evx}K z$dNt~OzBX+o*F(E*AXy;UJ;AZC1`R#tVXHz6M44hX&ysmw0$$NnFTK_onI+>1L=Eu9s#ZjQ>?Bg~?D^giK6qGp1+u?^kCF zR-iQOOMz-T+ZPHfsX{8ab}1D!-bxxeiP`RrGzLOHicRR%v%+{tRDy+le-#_F<481t z{n(`%MBu>XVY$lWh5`OO0}w9sY3pJDk&~w*n5VAc-ztv?=8s1WeAiH;31>E79K%l< zX5vUj1O5=xqIsgWXRO0t{KtS!DoyVASO<|4O!!ImYOdXyB2F&fI16=$Jfa$x`*nXS zqp9@fWLCgwjNC~R^%Yh;haVep|5zf@D4~Ykz;%X=ChpB$F_rp`C`-hL6Cd19ua5TN zpqwP%N|YhwK|&N+&|{#n*jhN?)eh}X(bqO8_jo<6{Cy?!BSr_*<#Iu09&X^NaM%L~21e%yQTObRdU@Pomv+(lT`^E%?cy;6eKeVr4e^cCv zJoU_wz|3dfKc+R|Hkvl27Ny)bJiH*n__i_ed6 zvIXei_rpEwGG3iQxYm_KDqhDbgmMpKxS9lYwnIew=SHs^x{>DsoR6&VP{_wQ|1QgX zxwc?Fib|+5faoAoJ8UpXBc0s`4I2OB@~4Q~hzPvzS=rP~nWA@{GCmy>k#nTCl!>*l z;0g7*eS@k)4)54!N65SMN`XHve|nI6L(qvUjaOeT#Dt}&0NH@Gpg#z&7a9&cfB(uf zH8zpsCi1`z|53n)c*DCpHu8aIkk_s#tnzTDbsBK5ffFdxj2KQ&2dHd~Jry7afWJ*t z>Nk5juCv_0ACBa_PTw1eD0AZmH$jr6GibaW#@}IeOxl0h3k#F>8m2J`%W-U9%UHEm zc;0`v$aZous*@nnTvW#1W^h?>KYLk4t3elw!g+JFSw~PD5q&bz0p44D+m28F24B|j z@mp)|yq`}tc~xheh=VRUyKm5+pXzf|s1MtFP8iSW?iI{)(Dn0?si;>wNL5*`DXG?j z@|nE!jI|WYMl75*^?%|ixrC=MuJmM1Az{5kfuZW=f}#HK2(ee@1%-MK>0TC4>;@|w z(t6VklzPWBEuCRHhChjpoFk?8H`7nJC4vz$LG*_3Mxl?*UWxm@vA6zhsI9c|$D2}} z^Y(PW9qOp7n#c;}^|46}Ax1pVpw$D^Qpdu3btYF@Cq^(QNYfUEO*g>MHp&P8_Z9i9 z-&Ff`9xvasbhjP1Z8CikFGNROGuSP(L?C${oewze4R=`?dtSB|IMg|5-MP50$YAA^nn@<7Wd5ptC7jMeP^sQ~=ZEEeZwocZ>B~f{K9D zyb%E^+WG@O(v;k~p*!T16=(&u2_D)?s=f6FO|9sPn%L>{r;{$bSf5_Vye7nVUF*cO zY48S?`}!fRYV5Ma?L6E+0l2Oo>wI&7Z2B~1S|Fe7hveKX-V{y)ZEE|azKN`|b<9L7 zuS$~3CAnXZ`Lj<8_`bB^t$9b)XC8Reme)#Y^ByW|zeDATvkJFzA)u^pFrwU?O>`xP zmUC9{5+h1(uwg{H&$=w5YK7-^F<#|Zx*!J+RRw!3rjE(Zt1R!lE$@FQS`SgwRW~MP zgTs-9sO;M$yc0mrKPrS-*PHGfJgL>+0V3A$BLer{P{?+xp}Nh({Ft_F8^QnC!HYIc;F&`||3Tv3k+qYzKI}6eepu_94w1qd~1V40`-^ zF6CHbv*$_?DK`x?< z+DQ}8Z6uS0g+lz^_&M`|MLmNKf%=1-E>olIwq=q^_PVF{*zmfxYE>nVREcw?%A-Ja zFo|)zl%3RTbeqNuC>tmn!%>dfR#rLs1<0xIiP=-`RY7FM^Vt$9@E-Q;dpuF@X^30n z^;|NZTwEQc)Yv;Ay*CK-_Q=%d$04Czb0bA$)X>I{`%5k9Vzd(HaZ zm{5#ee3qhk^PAy31x6zrSRe!;WD>)+xy9iHS^+zByladbx|7izHe|MxNE*&Dlll&l zvG%E&daai`>aH0CmQ8@fA$-||=LY-p&zR%@F9M6CnP`PfIB6sKNw1rQbv%305n=3t z0h{Y?=dLir8;2r#gZ(u7)ST+>DrO9VEt&7?q4z3s1tknT#06R z#W&r(<`&$sPbmeDvG`ebi-(1jw;nL!H`iHGN2N~P@H~|2QFS;xu{;_ zm6%OgDX;x0XZTtP=m{hX%o-W$nOj$)eZjzKr;sQpx`uYZN>6t_5e|F-cqsUqB3 z=8rEc0q+80n!S;e@}0dLmXj6PRqvm-T6Lvk%h_F+8jSP|bV1Oo+CQAc4^di&71_^Bo%G9!?91s?Df*o$4Y zP5M=-8O+{8(1Q8}Ed2)ltAdxW8S$R0rp4Ps@idqDC759A^1zud1`5@We`YRrKuF`_ z-DnTI#2T=vu)CSFVYbrfZzp0tkou@w8$e^9lvvEXAn0t&y($3&@Me$onc5|+VjW+T z>w8Ie>^qM3^VYMw=jyTeC0u+R-Fmn8!quoZe0|;4v-h#mcJD90>2FGb<8B}vX+U+R z-qe8UY!nnAl>s9vWEQPK z9z5zMY4&qc$PfSmR+WR@1yS{z!Co;8o$+L>;#3IKbz6=Im8Ysd^~;5LoO@J^HCKP* zA89vld;-|39q%3+64wd^zs)HP?o_JasHC!}P?r!8$zMJL)t_~oC{(pDZ3yrMSXH?X zOFb4$c*TQIrPP4z8inDTyfJ{INi}K5S$<@ljZDn0_5j8F)C$*nRJjhyEhw6Kbw+6e zEc?x+3QZMses|mZB{r=-!^O>;e)REv$nU?1Q%KrKLYGa%Y(AYJY7f%~{#Go@% zxHN0Rk9a+x0IhT>_TXq|MO{9zqwJ7-(q|4u1E8%3R2YO+vyg`*h`d%t>62 zt}ax|3%okq>3};&AzB$UqSe4+M+7Ih7zpGaAD|v?4ZkU2DcHhbtgY9EU2|wsMGn&K z0_@y*-X2V?f7da0I%{sbYCj*wIT$QsMgU8Wuwm#m3;+9qPA*^2S3mkCES7EqHykD3 zz-Sa;_b-JqZAqel7u<9VwiuyaK&JVTzc12620ej3ca2?;ayS%*?A%%r(bD-0nNqh8 zfzVRuHe-q@flvo?iWPa#YR1bq{Wq&M|LglV@DIHqEG(#*l{20B|D8#(gySddzm9+U z8G|JR{dXqCI(dtu|HY&Tzy$O2(i{K)RJp8gq}_i$P`vv;nG_KO{1Y9D&HhSUpPe6` zlpo8;&fFC%?n>VmH=BL7)6+H*$2>3HEzMM2+NzMk5+p4$FLsE(lawykQL=wsUEsJQ z*ZzW{k;`5YYIOu zPrEd8d@tX5bQJsbl1j@F1_~%@1poN(FJa@$kUQcCBL~hOkn=OI%q%;?i(QJvc7Z*3 z5L~d}PhQPt2cECAa;d4aK6yq>|2Y}G*1u$cKR;lBACmD7BsY_OE0WxcVyzFa7)JU| zIeGFf`{42LGBXAAD>D&xRYd_Ug+ zaqqabL*@qGcu5ehfcl~9x$ya9dOmYM!}Mie8$(oJ=#3R8#pm8m{-MmJen=4b@zXOp z{0+Dn3Rm`eKhU?QAK&YkV-WZz_y9f}9+8=8HZBg%$L!0@HoUqYfj^U(LHo3jAAP~? zLvlD__Y&;$18~OMh@p*K{BGf}ki>Tebr!N)DfEC~i}hR0sGa(C{rTFMQ;MOyhzX5J z)8Y0mtsK7Wl|}x_^4MUZPJ}mY^hiSqmTaNM0(;xv?3Ma!jp=qv-Gb_^&n7r{?og`% zeR9d+#arA&s#Knt#|}CX2|8_6y~v0SW)f$nGEttHU~!q3?GdA(ahw8KCt+?zuz3OO z?)^#Cn#M}lkODe<>V!G9zhs1yg_dk<3Rr;d)|3NYLIsKn_85;e5DNET*uZ>*z9crr zq8b^XA!TC~#xSghI=xQRVZV6|OvBR)w!GVMz0M(>DbvN5n=X|c-|SIa3gg*2;F|^q z$=V3fgm`+D^X0@wjVeqMt=w?r(_NL0$hII7-Puj>F4HDEDeuQ)UW-imHW_pOPMUEa zHD;`CF|M;VHX6BD9{ms*aXvp7OnHqMQW~iW3Z(IXXQ&_`kj?m;qJjjCJLYMC0vg=m znEyXrnmpiZJmCLeCtsgq-jrkB@c%FFgdGcn9`_;6_`}Wk6XyVD>(C!?&hB#B4LRlw zI{r7W%lx0v9B%O(`6t+P1p9*DAqC;QMg(WXuhyg_dP7d+P#0)##TQBAGTdn3!Z55( zvi_*yYdSV|5Q&&|LnM>II`RpT+qSmiS-T`$%Nc z4=63z>WP>}oJp{Wn1!XVA{xU!%aO)mY2}PgGacF)h6He#bw0`9UYHT0btKYhnbwFV z^R%n6{+#z!7BkGXqhHb8nig=Z8dD$2mj1G2}xEE-$Rqga;mzP$db#y zn}Z}%-FCAYz4cr2ib~*I9|)zLyQLR&u?%@;o47a(=iHk)6o)+F6-~FmoB1;#i1=~S zjx@$@WqZ~82lt$4Y~RJIN}4xhdS>4NqK%+I_Xdu2EMS=gs6Q-(;lQ@jY??8_Ehv^O$*wEicVj0;e;KWU-%IZ zux2SaB|WQCB^y*^JsS2uoYhnzg56WtD|Dkj35Z_o>bSd3+g=u`B4WDMo&3U(i5iek z1oIMGda#J5y6-y`7wBY-^CI5GmbN|GwX9lpPN-`ITmA_Zw_>WEZr~gl6qPw4&Iivb zO$8Rn&Ezp#m>Cr`wG$AHWrL4j%%=0ApgC&JlF1LXZz2dH2dT=Cj;&a~kN&H4ln_l9 z<=?{prD!@A`y8sAr17x-Nr-Ba^6BRKuM2N%pAimOQ)^{Y_fmf3!m^@9wt%DR6O+-N zRb3bS@7H9S%;9uyQ^g5Z7F1Z_mu0^0t5PxvO&r=wO&P_g;WO&J8H$rFO&hjuZM&_b z#(DL#kot&X`~)I0Ti|tZe2XdCQ)HU3HO=|m`8p=DsX?!L>0)T%On}A;y3UT(C)+$vw3Mw(11A%5E}WA;1Q{Tkow{s(A5g>MmuFF~m4PgSef>i5!)J$(WPAgKYi z9>-(fbO(LC0IZkDUb6x{n(Ddnq}p1{-$4AxM;afj$pBC9a%ltbs4q@T(dnm|j}V&Q z*nr+W0)JmcnF4*INSG9!!KNck$B4fmk;@2oz-dg5z)J0o9W3btWIirB?;lvxf$_Em zT1w0jd*AH#71FvwtqzDC#+U<0gmgLlJZno8v@r*B?fWY0Y)@_;jCjwm!c2T3X*rI* z-L45I?Bh~d1i#re3^CY?th+2H|S0-4uYKSTP6YSMtiCQ5huYz>u#+jP)V=pw-Fy$xg~ z>6FaqM-eQ3X*;52-^0qJ0de^7ZkU@J7YOYm`EU;EdV>mUOzw`#S5cL>@p&;%U2Uc7q0@dOJ~9+>dFiG~#E887PRAO^aNK_6W=I-qa@kQEo4 zccJcJet~GU_@gpS8$(5V_CY1NXEm6E>gSEAQgw+(KD`I^nN;;{f1QZoI@)(2Toi(V z;Q`-}*pmUF*Qhe4(d)G{QirmEbNqwCIrItyeDTV?PwSHTZ-R;FAuH$_C2iA|xIo zq-GlAi`o#hy*OXPPTkXQsM5o_U}wjN2hHdzPZbhfzx8;ISA1yxoqh0{Xz~rrn=heI zhjClgM_YzSPLzm{<2qn|j=3A#SRx zn(kvhWwt-g=*-c(@FZxxiB&EJ+EuG$BD~2$C3XveLuKu_DKvqM;tQO7S6J+=3fI+= zt4Qf8br|bD21DnE$FdO6)6X5$ z2WkvH!i{Jnv@7NGLUYrS$OG%!I9VF^lLfD|Aa+;mE{Af^IbhdF!9BhY>K%0%nVaf4 z6y;hCTAmbn!#War-DGXZ=2eIH=;j0H{M}>ib~Fi<;PU7^6SmI1sdoMQ4bQVx)JSPF ztWCB}4^6@smXik77T6c}tTs{*2G;id95LjH#GAX4?I5sfBMv^IwL=@%z|Nn}Tz;}+yn}Bb9GzkQ zyD<5hFL(e#LMUN1I|o}!6C)?b|GJ<5KlNRJLLf;X{vRXYzkKQcctJlGe=y|71pfUq zfOq=B5R&>LI%@uL0?4xcD*(V^eEy^SgM>*01duWoh7JY}7AF6f=}dBe0_g!@0U-hN ze>A{<=K(9L`H{u|V2Q^6%=csW2i~cU`K0O#WBq4UKZEV+KN3~yKk^?GaD;_Ll(#dn z5tsSTtnNxq&W6@j|2qNzpegvjKKxsM{_Gf`5zt>0Du;XEcBm~ zO!vC+CN*C!QqIdGFgkr%PgUqqxXQ?h=f6#_y+taEBLgO7sOTdB!1nzHK9-%B{-F#n z%WCmP_sNFqDsgdvCHd%XRJx69rPM!(65w*9s0D7H=AYa}|-ytfIPK12R%;r%Tl z&`s6^+)!uO2|q8Zev+e8VG{GTSd0&oeI8Ww&+uQTk|@FGX$GWm7Tv_tHdZPB;C^+q zYf55V_TMI*g8yxEc9#CQ(^y$CM znbxx-iu1K*cso-2;-ZHj4su($ za-GP9Udn-Qp4OqdDCmb)*AB*uyZUjEOuKBH=5Y&H%@3%5$q0cGr$&|gQMPd>$^_=k zUSwPytcpp+&eRB=9K($ujU;L4?OeibDP7>=8Yn#^8B#5wo(ub!VNw?As~_qIxO`IJ zi0Y?=hse~jG_j<}mEDeeRk0ren1d-R%LB>E? z$IvNP9}vU<%JkcCDv_N!dapZ}W=V)fZ+zwoHMHYTjFeZT0awNfBYGySld-0kx5m#| z)6H44k=HRl059QC=!CR@rp*}XJ7O zvigDLtl=^prE!y{DyV+*N@E7p^9W3{>39uJ>3O731Wbk+rUBC!e$yD6$!u+X7)-x5 z>$R;AKGPh@eEJ7Ae+jc z1g0BC(~#%El&bm?6YZP5sDMp}?jn-HhmR{*IW*Lb3Qpp+e;p12CX4y~(FrC=@Q$p9 zDdbhYuT+EStF&}_v@B?JlF@7sRk6hLePCMF<6fw;CcOTw)VKk~X!kVThB=>%Mz60dALJ z^j}P-c5jOfolpN@|w|B`&3(UU8=f6k2Xl-2s8qRHd@)ADGg7_KToG zj_4;q^KZorG2A~$@-LD~N2_n>x}lodeo9C81pKPieN5wPW9irYFE!Y({{_=A;-j&HaF>77xw*${ei> z4cZCv8VU}K8$zfmFgd(#zW(E|L2LLjODIg>HSFo=G41r)6#|jr* zW(dbB8{!Xo+uftJ+atdJRQ-@F@1UB0eCOualw7SMW#dkm;DMxAjeb_O=71Q%Z~#t6 zf~}x}4KW;KcmraBGWANBZ~@sSIGTuT2Q*Dsh7){RoF(87ujXRWy{+J4QR6@0Xe%W1 zDJf~>%$7(!WVeemW_%a2#n7?1Rmqv|Iw68_>;JB>Yf7Oeyjk%*@-z;H71T9T9riWdc(;VjK=v7^^t?R z2JY%k8FvNg6yIrjobwp7APHISWDzYxIyH*XN`ym5J_QdTpcaUMURyo}u__HER=c9- z%~C)I;?t2~JFA~3m5slW1GG8%)tnPxn-Qi!7SNv!#RU)5(S{?URPYWSY<#)9yRJFV z**6BE?Imt`4b%Q?GgKqcB0**}6QIiX5LJ`^ z!M~~h>KXKsxIe*1|AxK&i*PFcyiR11&=GYO%@~@Y;;Zy6g83Y=b- z9ECtL?s!8gLgqiGmscp%OQOkyPPP!pxN!~{Er(~2zP+Q+$g7)6C&d%JZfsVI$u~vm zb^y&SdaAV=DlgsrGVj=+EU6s8gl8K)PZSE6P657qDZ$ela17}-ouHZ?ODWA@gh`ei z@w~uTiLMs~Cp4&eL!TshN6S+S^wYGHwAJv+)ODOGIQz)cSD2{pWIqjL3#}?d$JjZqa6(A>8aFD*({cH(|=N9Nz@5>SLqEiqnXN@f0 zx>RCkXPvYSDl5=M+9^c-thZ4ZYi5HcKk^y5_1VOt?VV~eI~-H1*kmmqiSO16(l(7C zKNK&%B)5b#?N!7Jnu~Jn9-*J1a2m>)Te&Y`@`E}od@74B4tq3GlZnTQP)K$W`8~#2PdHbWS&70D#7x-;D7(H{> zUZ_C6Hq~B9O=!?#G97Gl499I3mUe7(f8J~RYt}g=$fY-Sb)D3163JLUA;=RS_$vqm z&JEAeCCqkucdz#i%fgGFroTP3Z!~#K0H|l1FuEJ>rCvvfSBsRxA|MF8hwh77FX^Nm zne?IXaQ^N{JOf$#k@`d{Ooo?W3z&}S7TG40yi{V4>)^HpcU~b2bW>iM;Sh;i0A6eLc(82HrS1#{jb zj`1s$McaXQ_>~X%=8e&=4CGNR=(CEkK2^gF2ovZx{u*rc4Dkg2 zth({u<4Gw9Q=Mi2v+KBSJvIY69)K#*VlfmfnmYI(ITLKDzq3eb0t&JW7bELqseZ{&JGHZSMrNhvC|Qf-z@ zJoiNSzuR^!;NO3x_RX+OyiQ17x*#>eBv{<@UwXNNt~5Y&=mobW=aV?ly8lAbvYrH{z0`_- z-N4{9iedGIwy^6oIVCpc6Vv&!K&TB@#)`ovqEX_ANQe>@)qyv-=iO{BG(nxI@Ev&Wj`ldT*3EwS*ePUvn3`ro=@XnzI4 z?>z0G@3;Xqu7q6XG96Qd2BS}M`6V2$aCX!NE0^;x`5yYHF3cxLm`Eexc;G%iKwc`u z`9Qw);`W`9bazrx*y{pWztGl}B?q_8^FeXF7WQvWH7~g71;yzd+;W1j*(L36ye7qB zH=SFXhT^NA;EQTZkW6z)^Tod<*BV9xdPRvS=^JeIp9tPMAl-dIHT<{LxDa{YVUVmac?X^O?4tUU5&1=Z!V3>q3J|I_)||nE}F4N2UFoJ zUbe*3ZjD|vf@bguz(G&EVKLXy@qTt_+JRBpki4aWGgCJ%*bE1j$B46=p&xi<^|OPn zk|*;z8T;F9@Ln9?8T^8Hd?`0N&xORTMpu{_$Xj*%JnrBgHbedfwx7P_e3eL?>tfo# zA}#9@OGwz^eAdKUMph&%@~9$0xoZ-egKWRHt%;kDS0vVZ*Ch_*D%$-20Axs1er;oB zc*jM*sa!=W%%^T#_8DOi!Wa_AQcb=dooN$rqH?=Y*!-YSZ~Sq+_UL|O95rSp|J<~LmS%Irutu??ft7WS<;W%B%U zkHnfYkTT1Ese#V?!^bw9K2TYHYg_h?e+soE#`Fd0N9WK6-45~)_F?46Hc7(e-bB8 zW=^5FCFP8;bO{EkUb4sxmzC!LueTc$+nm|I*}c26b?s_vzVTK!u+|rS6PWHD!58YH zI?(4)ZL+SsPw-k_EV(o<58`=MydiK8pLSoVk{Klt*?exqMcVrJGJ!k;UyzymWI$Et z6>VeykAL-9ll|Fj`$C_b`N_5lrfZx5f;{Vq>}W^qOwXWlkthrQ;|2)fs8l)ky)Vr^ zs@&l~yXsVt-sut~`#)&=3aC1^Wn0``g1fuB1$W=Ly9NTmgL`lf?(PzTd(hw>+}%Cs z-z4{(`|iExy!Xc&|MwUz1A6t^4Yg~Q%&MgoZ|dJv1Fr_5u#w(BFTJ!!dK5g~B1g%! zi_00Cg_WWdp)iu8iah?aDZMSZX)OxV+yJ7z=So!(-5#oPm5pvGm(&)$;l9I?GVK-~ z%e4k%u_WjrES%4KFGLP)k#Sf8@q;T|9rV&ti*=(koSvO+_D8_%&~U?=P>EKZyZzZ0 z77p9vGda>Fr^CiYj(CD|)gN_NE~Ffe@b7laN`kP8K^|s%!gT^Owzlg_4h((-jXwFi zMrnKOY#dhvx9N&Tf);XI5Vvi=>l$k-`x=sY&bWRLTGvmoI>PDFCM;mDN_JZ(LD}dh z4Oh4P)Qa!%gO`!h?AX58pU;{>@1}+(ua(Zjg|$L1=d4n7MAnppgY$)rr}bWJzoFmC z#4dCtz9ja8cGJ2WPfgzs3d)Jas)-4Wd6-tN>6(_Mr479fW90XAA8G;wF82vezU=)e=q9I^fcOqrk#jzkO*$tT8CKpN&J@qbn`Ennv%kIKq=Bju-upIwxLLT+hBcA zp#sVE`E3k(20YHGFCnl2TVY@CLrMsq0w$koqZNBhKvl0TQAS1V&+|IvAZfS{L@?(f zZ+2YtH$82-+7YYqz(#}JNKjqMqMO^~3j0&@<}?m(U;a0d+t=tRaC?n#{x^|Z+uxB? zs65SIcmFyF%lvQV`!&yNr1*8-zl{|C)qHbO#Kh35PNt&3xa~hb#lK!jwE`otIrAmDsbW=5uF zj(-!E1_5y@0X|UybQz2q+yOWa5jY1S2-H^c?{mrXulamIKwl%_?7P7I>G#w9RDYj& zQ~#I^1VrHlxLT=+llyx!M$2FE@V|&me?|P~{lBhW-wCQ}@Achk)@s%P;+gKZ%M(f_yF#Pm(9fREjxuD{+Vj8P-#trF*QvS85>3hrR zYGK_ihV;xRadHlMb7Nt)5^S-a7 z-;Nt8xuIaDMD-J~iI-><{49}xH%G=)#`fjekJbjh8GJ5?Vhrf;er%q7`VMh7FGJpz zMmuX&{QJC$z^U-+s52@zuxgLWqQFh?M($2YuWlNuJxO{cXT6<%8V#}te5$cQ-}ucf z9tsohKq4Lm>~)(E4Th?W5g%`5u{#QHz`!wmYlif0;z{f{&9%7lnNA!m9U2ouMtEz2 zT}#}%6k}60rpsyiFx`zdg9N1?yt9Lx6D#plM35QgnX2OsrUmggx`oPDRW^Le7!{?J z3TB@-8l7*PADE-^)cENbiqJokRV}`AG0vM-xc(v+P!PGienJ?1Y^$P$QO$*_Z~+2C zHOXYqrX?d(UhsjfG2Ywd(Uaz>I7z`Q_nx!}aGj7P-NDnwX4{cOXgVb87$k-LAk+MG zzoqVB-;l&8lX0iwW_Bgg?0j>fe!s5C%d(&oe|ac!U-x-LXJ67}UxD%JR_9ApN6=Mx zPnBK4ZU1Bn{w$q}?B$J#yQW}4BsZfQWIU9fuC78`hA=z6*ZKMLuEP?{;1_Mpi9>jm zr*2I}3CS{*qEb9@$57&_qlU{a zqN9wGA*V~1I~n3D!=G|9MqtYB3x948o)2Csj$5z-kl0hc;YxPPO!mcJs#6FODPL|~ zVau*CIZ}L)wDMaDRY3=+V3sPC;FqF;$=&-Uq#_v*O!Nh`Nfb-9^yHBZwEGI}S_*C@ zND$*8a%K(2KsQN4EW|n{B+SYn+V!ogz1C%3TV&c z$fs^72`|N2M`tLSupExzZh00-tpga{Qo(;t#u34!yM^hRq!Gc)d|`m~$xR!1s_;Kv zNv|eT4W!Lm#WFX`$gzgFg|X~p3#8pWMP0i<$g#s7K7$6Xkce`i zuAIT+I8)Od6{-`ugLYiH;@g;*UfY-^#ca8KKh2Sp|0W}SjGCmBCzY=l`v^7|n=VS0 z3Vd;WyoDQT)L{l(tlz;het!d}+iv-wITyIa3v?sK^&guwIa8s^BdN~YrKW*9@^YhMvFMqdu#+@RC}IQMpTmE_EIsu zr3=^ZRq3inOY?t8(rNpg|{F9!|#MJCS_?)*w_jg@gW-E{k_ zZq6tL_q(p&RC3Mj_hf~9yJyeCIicM12|>4CPetJBz*-8D6}ZFW8k&;-!n}F3!-hN| zJ*-a<;eCHCbG71ssoucXWIwWY_>m^>1sSNM5D}r?894#Tlz*$~0rJ1K^q)s4AeumZ zHU6#XYmNS?>A#4wynWq)aK{dOG61OYfjLNsUY$(NqTi!CkX|*t=Qom2ye?H@8V!xq zltf0hdURZ#C=SVEwu;VAD=JJNTf@YxBcGGjCsw96OTBDm+gF!AbpHTxAfb8(i!l=Q z6qpCL^$wa1F{QkyGIm@TGXTVZ#kArzBbz_1wrP_@bDayPM%NNnGc57KAeapvQD2hh99I=m2brqNU ztc>J5dp>j7JI7v*9o=8y?o=F_Unrf95?QD!x%y@#4glys)(S)J=duPAN#sdfRxPM~ znQnCCT3II}!`7v2khaLMi4Vbm_CZg~vgg)wvw$NxyM26@9|B~w-B0iCrhLfTnb0`>r=Ii63fY`73Aw{tuy&j0cs>x)F@JFL)ZF zFOY|t4Br;PNJuqTAFz~sQ=h*~;&r}Z1GZZMFuHowRxASM$jUxE9&3c0yT;Eo z`b}#2tRbU}CIG}$FS+70&OQ}NPDx%}rW(3pPgLKwkvE3orq9lP@-rB)wC@?7M>|Wb z&P^DnihSWnn;!b&r{}KV+&fw!r_8Q^BVb;5nM;#J2;Vq9xR7=xpGW_g0WT^0N!2+2 z0Ni*KbK97t1mhD22Zd514KQIPR(~%Y=LE~v<-4vQUl)#E3ssFIC*1c%GXt1`$op+0T!kX7-T9(TkjUsv(lgtZg z>nmz|z^jVoK`&_){p-8K71p^1jIck-tG*R#h8_=?dA z6X<@J*DkblI|amQ>V3QkU!7}Y9gVE0p|I31L?E@yp@JX)fR_73gf9L-)s!8mlqQYeYrx5>Wyid-RVbUjj$wC42_&=1%| z&AP2zF0zQMpJ5%f012{JhbeLp1|~FFh6~v!qta{U)tO(GaB zwggatn!P*g>lSFKQ=i@YMzl_We&umy;p+aC$NbHYsDRJL+cOrAai4P5odOebTAG4NWP9t37`L{8sTEUK3yd zEl38!^)f?D8PDYr>_@DM4J$pXbk0@u(Qbji!_V`GsY#Ghd6E_6?^EG}KXO)Y?#ekh z*KtP&f$ixB)0sw3u21=om1D;1<4FNZCa8_M%AJgxBo%iWK`Z zjFlY@fF$*^6z?b9agtx-d*dT_Uyk$}?yWTYLqW68E-(@WznJz1!|OdHl`$ZGV{#&S z6cue+S-9z|?6O^5^KSBPUJP|b4xxVl@?sDXVHKQhZN<#Y87+aFo4@ce0@(hGc1cqOyouJt?;moxN|GQY@#>N}_!3D!XrVS2BSqZ+aEN~HwOe|Q@;Q%$b_ z1`eZ8wS>a|=55sU68w+e29p+uGF%DsU>{@vlz{{*_?BaKh?W*JL~A>O&p`AOGsYWA z*!ZiM5s7CxC~$)BP+t6I14cw~DWaKM`GCmg8h*7r=~&QvWSXEsOjyTlra^6qT~KSG=s08|+D+IMEjawg#cQ9n-hIu?3Bf z8g74b)c4dC7AQqmbX!(~?1R(w;0RKGvvR#^IU!~}kL-kMl?}t-MPo{C|jwV?Y`16&!Yg z0pIdfl4wSD;juk&)=i-Xw%;Px)f&RMdEq?A5Iq=C)61bz?vtcNKBgc*@g^bOyA8$k z2$Hjf@DECt;5wVQmrBHwf^WSe+kK~+oDUBrjFbSr1^=M*ZCCyc+^4hl8iF&Fx^D!e zKU6Bq4C5~wGPDbz@IgwF9@nvbP&8Oak2lW|1-)be_yDzVv9RaYSLmGCf!%tXw~oEbCFvn zU;dnQ;IN_Z)6udUNC)b;bn?YpYn*wMk)5dyj?&*)m^6j`DExAxlw-3sV2X4fL!&ai z?OXQ_l6{hximq}$XN)Cgn?lKoxqEtpxf%f-)n%6(^CzkFUQ=>{@9beX795k7_pP-V zsBZ@4dPa$9-Ja58F_4ONPZ~i#nUEkKtXm<6h-xT4#KQH75)Q!DC}BG0oa}XJJ(6ia zs_Y(zxk41|7Ul04yg|p_R%(x`(no|2cd#M+Q}9L?ocYQAE?!b|{oiY_(W7OB`>8j; zvMYu2El?O%U)V$hb+SWO$5d30KxrsCojMx|+hg8ZeF7XX6yF)&b1V>^M|T$Aa)s`Q zY@(V@GYkWFH^(DbFzl3CGMM#1_e0nSXMs+mXh_)<>R2Q$W^CUVD7>865&$f`CiBG4 z(E(Evqx4;xZZQjYtBETMT3o2Sx~VC_h|$rgQXeXM>>?UKD;UBX%dd@uth0Qk>W@-68;g?^lG!O`1 z#)jkYVD8gApT9VOu?)Ld4c-c044| zm7|1jy%_8BhdmcBeKl`pxGd28889dYKaUx-D1DGq!C@xt?sIq}mJG%I?^f_Uuv$|@ zt9WYWbft*j7T&JYVtx;$6?3jvDcg{2-)sn9B;Jb}9gFT>tA^f8oTMZ}Fa1b~$)QNs zX~Y^hQ%M`GX=Tzvq6DVwEGMEU_?f6ke^;o=q__@8TL$!$Y?zL;B7O2r?j*LgeKUB< zM0peCX7fzS$gciw<77$!4JAetAc&*j_QmFds)fJ>XCSjb{a1{#dNC)#Yp~c^ss#lu zbxXMvop~A1_`~q7>UwR3D#4Ex8i})L=oY7Cb&0&!2G3hge0sVc^Wum0Zc4(TIubPJ zS9xc`0$g(;clhUAEpt%_32!ty?6|XZ^*aQ;#@q+|73{>~V5ubQp(|34eNvCzpf}tb z_m?M+LJ@9c^#7qj{vK}%fw%7i_v5186{z1s34H$4 zApc>tFhY^_SW?H{+!h4!|A99JQ+HlS?YeJEl#vKOoJm7R^WAm7kP)Ym5ILsqgW~o< zNbn?7ZI)^DbQv$DN`{0r81T{n2P1_bFA^Le~~^D>agB=0oYv9{F7F8~T!fPavdWwILO zTo$!!JjIXspWpsoC+(aMz;I~`r^`h$iElzT+k+g~Z`@g3-DSOFjl&`S3@$J{eH4;Y%`BaqA7aaSVZn;Mr^&guNh6B%5HpN_K~7a*Jsr7Sf-4_}5YvEY6vv1S z!NZLd!*nEyn#H9>EeD4_#fI?9hUxrKjvV8fbKoKD!3py~D!7FNmccNBfSt8?D7tQ% z10cbey|4&`f$_MOVRPkZMvzdg((l%8+ABlJaipr(sPYz$hCsk?{YeqMl>$`tu%22D>?JvqbCA2?J7>d5J;-LW*7MoJya z9`PWVKAPcgu{Mk$Y$}t=RB1iZ*w}ax`%EwQuqo)}pYtuS^4-JLC%V%;9h?k{!H9U# zJizXk0#v^;BvP+QvXt6S@kEFwQG(Ke<#M?*4hf+VTeQhy4r~@En62KUQg9)UYms>4 z5Nk$m-@2+g>yTawdw%Gm!2g>e?Ix+@;VonRY{ufJjI@1tcQEt58rYb%BGq!5$DcP7 z^E1(dGA(9JV0S`wyCQM_MzZ6d`WUEm_w96^wWU^BiT2fcz&3h49k0+<#j_G0WD0ZH+f<&B+ z(>V!JN0O4&G8dVtwMS|9T#?>z~LpRkBSLbDtd%5<@{ zMa>NwG;av5^KN~m(g61ou6@paeC0BA?SvX(VI!9BqPQtR*D)}S(lU9QqZB?RL-Yv~UY(fPz}X)yRkB*xeVYKN6Ou3Qq* zz53o@(RUa|D3>UyR0!gTaFHyT>!~5EwBdb{7`ab-_+Dl&jRikxwJU73=zv43$QHn2-#A}GCB~Vx0)u@ZG3XJ1-hF5Aka^RR&jD-XFRcc7pUE6@veH;-_i5^B3wdFnX6!6V`#WwLASs{fPD{t$n59AQ=*>;McqAf z>}EvY6|RhDz!4?Xq5zH(spCJ#ug-28g^k9sxhxbb!Ya!(Yo`n>abKo`>T$V9Ww1YL z(HqE_L7OVYREChQCydCJlg9_UOFo*vh3cvEF7W)q@JQ+<`XFfiah5wk|IJbIw z!n1A-q9|K*{T(s^cYBQmI?L&-F@Wh&2&@+8f}|*gFq_~vvNdu|KjJz&|K9D&tsjFxT5UYTA6p=E$I`%fx8aC>;5QbN+16AO;j=F^8T$V z9u~sRmuJe;{ops+>w|BG2vV$cEULofPO9rh`MsMxDl6*A}K%-STMQ;jFCPf(UHij3T&^ zcVZNi)^8!((1_pcM&)RJ)~#ihq97J0wa@(CX}5&JV*CIK^zER5m}+GYOlACyG&Y|9 zmZU$AP_KA8o&67KH2SMZ0GJC12mugJUo#nSJb@uniN8lH3A{?9XBSCm3onIQ#U%OY zVe9ZkLJ-;0=Efe1G-OYJ8+k-q6RR0__iI>*{;9D{@GHe{(e#Zh*pRqscoEZgKf zuKQ>)O3!e+kB&g`^>nF7ap?<~%o8%`AEJsOGQ{t@gl+Z_O%bvxi!H9(ui$P2>WY58 zT0fE7Uc`g<1Xo%RbFN#FVb^|Jw zfbN-*^xBI8A=i*%0K|}vtpAN?J?FyF#RX@J{4AsWs?59eH*CIf#ekTTF|Y3%2B zo5#(jX_&%7+J4RVP%Z?nYvu-~@vF^|M`S%-rq$61oLba5a7PG+A2)@3B7-}#2BG{` zaL*g+m**GJjBgLC?Aa8k z5Fj_PV`=jyYjD|dUlOfbCMT~e@ave?qc@t?2kO8C4}(qnXKb~?j%Imi11eTsl>9l{mB}QcsBFajVxv3Avn!+ ze};w}pwW=s&dWiT;s4cUEepBGn>s|JNEim#v+0Fe2vSykXqEUBWvd(dYSa6jls{?; z)b-kJ6I@X@`4IdgO&aqAC2?>y5`v8J7gU2YU=2$aoKG>UA$LW0KEA8>|Z=8Z^|vUa@2AipYG?GIz_EtqOqQ<}6wsn6*gRJFKEH+MACWXG|*d6Ww!r zTYhLyvtVs4ULpt=chJXC1}876uprNNpdDkrp-D;~S?j!a&7EL<+*E2-88SXd$q()h zzcrPz2Pk(03JEZ*-^#d6$`{bE6LpO(TwYws@S6(5`q&&V#xSc-R(U<-axe09v;-U6 zyQD1@&7N5>eS|K!!t_i|Q=UMFoQxkAvg}wrc2+RZ-luazIgve`3G|?X)A7%oMeZg} z)9-dgBE%YcA@Ig|$tJyIrsF3qE|?FLSei=-Nn4ONJ+4j13?mjFZSEi;aB;n{8wvCm z4{vE(Y_JA3&X8cmpk_#0Slw!bQ8Gl~;nk}tGnU{^YpKAA%!@Ay5x8xb4HM+|J3 zisnFgO=68I>O`l!E*^JaWSzFdED0aQ2Fat0G)`Pa@AvuKN891m_=iz^rw`{RY9hw*Eh=M4WhqEuv-Ha_ z`qIn~sZ&y#$6Z{S3>m+T-Izo`IJoMx?jy^{*Yo0$HH7*3r3Mzb;IUT~p87*LGR5{IgwD)YlO+&s&hwWOkgVZ!t2-Z_3Kcu+tQ z2c5WuKY-(8Mrm65qnr4ax95YWbGfeQ_{u-z|G@KiZChbCs)Fn53ZoMlV z-kTLYvFGzCapPe$4`1@YirN&=@K#2>eu9px&9L`_VLw)yymrf)O_CkIiK^&`g_&um z4GS!?4o*_r%+h{soI&83|E}p|*XVch;M68ceSQnkdOu3@ZH8rJ%8!-r9 zIfh|#+vg!sDFJ~cl%23a)aHnYa~+gmI!*!-J{!Y#)<< z2KR5fXd-F96k%}4hsL_UFS)1kZ1L5j6F$kdf?sZZ1CN1?A5vf2i*!T94);w?b96da z_wB}Rw+UcLnGmYDGW7c~I-jd&txnv=F2#1x#c+vykhz&yz|{+v)8M^iwf_!Qd05Iw zR>!_k`|ch3%^eXTuI%SoNNphvazVZgvIDFpn@3hUBwrE%+EgJk$Y8TmT37f!-?w;` z)5Mx`Oj+Id30=9jO&GjHoTHbTdCfh@(!zfQ+w|f8*Z3PNT#<`nOF{bF<*L{ zX|}$Cl`*B?aQoe6F6mJDdKFUFmf;}=`-cvo|r1y z&z%uq7Cx3Szf+jUs#$1T7||<^p7-_>=!BFHeWtGb&_S=TKf z#A#o`#~pXvv|A@~upd9Pf`x7&mf5jA7;PJ^VryD9-?c@?HUrE8c z(V{u)x;wiMM>2@1#!(C|zR#uIu z+Jo?F0Va(7m$@3|Ha{y1`eANZkVU69MMWq@5bCQ9e^{48+I&nJG19^x;?D>H>JzuR zDZWFILpji4D2WLdY3GL>3Ke1$Xvz&PR?Yo;d{)4T+kS{>ImP>}X6md*+N(2uw#slx z&{@N!C)3pgG9hPqqe5kakaz9db7|0(I{2t8-amp@1{3^J(J*ay9%m*kw%@4hGW6Bs zwxVGrelJlX2hHYNZX~H>sIDL^wz3!2yWO7x=cSsLX@TAg2~DK+v7DY(5aD25f9w(_ zz`}b5u0Bsl_Fh1#EV6`9iASfz5+#=S=6WVn+dYd9D%jk~$3ySxiK5M*72BRNYlEoG zq1!{AQFh^lAN$11r|bPw;9AQMmX{su3Vldb{zqW)_*W*!$<)@$_-}pBN?cO4?(#7em~)(+!$`NDS7DuAbwikc zqxiCn{S(_z8e3Bgw`(Cnk>vf)$?iXL$c<3MFXjq|pDnnCBg(WmkTkBpTErEq_ z-Y{G}Ejdi0NJM-L@!;`9cV%2aMyAwP+{G3}7vAc&mWS~+!grIK--{h$%+{nhsHcl5 zlkLQnAA~W)@jR(j@I~-%4e&FsGW#692){ISLXwl(WXlI*OPOZMg3?gps1CoUVMj^& zV*5VU)GX|5Mk~cEgnJ3sM*#ZzClk;qyB2jF2KZ`mmE#1piY1ES1sUh1`_Z?`C7s94 zyRKP+iw}jwa+b;=RKB>R;p{iRLk_$r}e$rjk+H5Q0O7e#5oEUukX?TA@Wzzs6Gecrv5ttUe;vW01kz_A5M4xdU~-TEQ& zEG$gEv+YD+NYpHrEcd1cPQ|jX#y4GZ7Er3Ba-qGNb~g#D9*Dw|5YunvYq{S7Ie9N6XU8gKKr zm^O>zEoGEQ^2=F-j01x-T^(u11bgucYQ8AjPIfeRV9PJi0@IS*)_BzJOI?$cA^Bc0 z+7IJy%DGY~5_Y5W2o*hB+7a{FJhA)~6gRL7qShbMnL^(XC1e^i&R{rF&cl3IjG!}9 zkm57aqC~f}P9+9dlJJ@`CX*x;y4mCNp=g-T+1rk7Q50E9NlNLeT|P%iHesYZT=jC)4*gh190) z$@nQ`l|DK*Kb_La=uod;vhyo1S=l_9IqpU?(xGBC&3uv)OGz&LVn0tieNOUyf4sp8 zTXWaxo`Ri%ETz>6?RZNW7sf-RXEBCzt&~U!ZPq%DWs(^C?A=#=yko?s@bVscWe57Ose_E+4kCQA!|Iu0XqE9 zg2}?(JaKdN<#$fU(aP@cb2_{d|AI%rT9?<@)9UZ|Q}$nT3&5B`Kw#y8hy)Ad7F?O#&Inj73R(!$oXE`X$hF98DlV z`>o(~_j=a9V#P076EGXYn6{C&@)wlYulGBy(gcJ5m8ueg1XJ`+su&AbU%RVEfWhGD)AI2y!Puv00VaF}|BfkoKTnOz3dEk}Tul>!21p(%4 z2AFJLGl#>o<@Iap1$Kwvr#KsRahyU)BK*79ih$bgj=@4d1# z=!^p6KrdM@QnMAfXsASO>kwL2DY(_xL8b)Rg zhNx%e6Mntq7u~~21lFWl7)X8xu~{C$8k=oiohTx~c%YP(M)ulH@>BRu@qYX04)D#Jt+6%~nCUCTaAT^;Uw9MOb+denjn}t zc9!t)GgE8b8rx`mqm6-|6Ut0WP-84t6%3m18gNh_#n%)cANH`yB6RO={Pc*+9c9?J?>~GBc=wjGrVW&fmF*b#@cso@p@pDsBxm)(={FPMFW8guU;ka(yxP9&&A;v6 zzt6qAvY3AH-UiVo(SZHLUbmX||0efxtiUVIYW4>cVXNv_kQ=J#T;%_bKzU>G|Cc}+ z@IRGn<$SILhyTTUE6H2jKsE_rB1-{vi5QmgO3lC_82fH^Pvpz zi!uuk%w*lFMjjj{QFK%(l~~ryES<<70C8VLq1^WujtSTV`PnUqaqb=;)SVyNq7l>R z&#y6d?SEy9(x=Zg1aT7cS?DJ-4oKQ^y}z$UC~G^)+4VmdZb8z|F;oNY?)7TF(l)3Y zEEa9N2lPAapSvs%W@I(#<~DhI-*X;r8gXt)yv02%kRV@*nahgJk70xcV`_u|dPeXX zqCj%nZ^5wq3&{w7{QY13^Y{ycwy1we#@b)w&};1;=xfd3I`B-8t%b<$-Uqvl?|t?(vu@P^dMh?8}~*dL`KmPnX<;2!q}yUAnRnq?t2){@CY+I>s9l4J`8_dD%H#HkIdMT&voahgiqS+*O8A}ekt+u3 zad7K1!U}8sNRFZ=4y~6((`lGUbE_5ccTFH)^nX)%3)Dfc8<0^6JO%^h=`VXUo(TWG zYuW$T`PYGK_5ZF%BPct_JQxz#YcEA$PsrEG)SnB$Gq56d8|HOB5Z~7xjle3{tAAF) zGW>%njxqVq`Eq7}S;c=;`kDa=#((u~DrWiT{lBh$Ro(uy{#AVo{J{rcSI6I#ur)T$ zZ(nzyB_{>~LVE`MBtXj!t$^_;uJQLX5HeoBO`bnULjCraXYi(4vKaGt5>@Qm3Z@sU zvK;O*TL@bh+dsBBZ;V2pCeu;(RPc%4yQf!QeVBcjPx1tQ!61V`N);f_$V)>q!hCM~ zcpgqa-r0q8xL>q~9Cv8k`bicy&*nC;R!#eT41BE_)nuUZu^{lQNs~Z)Z zNsCNt8oRVl|9JN`1iy7|kt+Jf;hGmx%C^0`W6}#`+v+pRL!0wWR|o;XJL#nxz4pmA z=3zG~px;nPke55vIIvmy(sQD`wX%*t)?5$zt;AC>xX|G6A$-h37*EQ{R{4z_WsR_b z`Di6%jO#|aoTB6GQQWu>IO`>I96S9M4oeZx4s3E#4P2Qqfv=Io|$p5gE~rPzK(*M7#^ zzDLf-roPf`!tnTJR^+B7-JZxEmuXDrsMSqjiP4kiX`AAa)N>tP>#qA|H}?4Y?KNnH zLv(deH31Hzq#X&2cGQwT)g8EX;T`tG4+Ax9*}-zrNpqjTC=(ZQx^34|AER}iOIOBj7n3ConSR%MuO5IyL;Rni^F?K6GD zuC4Fu(H~&jx0np^yd@O@mfLtBsWs2cV59yd7bc}MLQ6_DA-EhkVuWEEDzf@UPx3yM zU9o;G(y8ZJP& zJWG1)P>mgz&6jhIMK?CH#v_K@0d2^Q+&dX+-!_aSrNrDJPemG>C=bAOtk82_NaUV} z*E&IrHyAf@Cd0;9A;Ze^&XHVr${wQ7Z}09cMvVCOex040~K62eGKt1tO z@>x9HB==ye_L7VebRW{EhG;~Np5e4fhB!a5%~;eQ{WV6Exs5zgv6rnCs*yF^QMBib zKlo`Rh?B3FNwJ{?RO4C2lfN1Xpt$Ue_jeJ))q+$cM3R}1aP%o}NpJix$GoWYm@I~N zSiXFOyC<_L<(a`=U~fors@hN=pRSj%(!Ne}ZjsbZE`+clFIKQ<20;iY_hWu1&rz15 z732Lzx<4OO?Pup(1VmD$W-KVbF;}BX6@^|B*nm2p9Kh1dp>GO4|6GZ<5xk+TEXDIa>5C>(c) zK^1UqE5@T2c9EK+gLLQk`ecWnHhu^&!B;59HdmV{X~*sVgjcmaB!`RbtXhz@CQTVt zM7AQT%wvw+NFf$hG&K;tnX< z!5b6%Hcj8)4HsfB97LK=?oZ=co2$e{eLp;d;>WMFjQRW%7V2AB|0h8ffvRo90i1|S za;ffv?5v+UN;~B+nN$yo_kM5o2y;eRhC`4DQ%c2*)J(PR3RBrH>q@4>9|2jTyw~IE zwzcNA7kN?4l>;1rA2AsvQ9WwyfW(;+>vmol0>pPs+Bpi!R3&U@`XR}np2#J@?)%^L z;1~em0DpeAfhUE%IpGdSce?;@s`k^~+Yq&?dx#Cepu4edP&b%`yihMRhcV)vmf~B; z>C3Q#k1u+qp7&nX>xm5|lX#hG8OseN7g|`wnHoMhGEe(+ZMyG$w&M4vicvI{@RWW1{Qrh}_JaA5^Mt>~4!lw4w2lt{}Rqs?YH;e!e zFeaI$0#BH#R6sT=u_CMHKC>D6K>Ni4VAa*4cDi5#c*%S!{bGyj?h}@Li0YGhKtG3C zXK?+|HM^3a_{C%TXB;g<2X?(~WOBorK(Ovy>B-_}5*NZR!k(+qOB|MCWyTJIE30oS zzN@*9;9fCKIb6DU>W|>OAc3^*pyU; zHqUt=oeoakCM&jTIH0B%6Cjd|vL{7am31kbtT9k+gLf@mG2>I4yR(~l3Lq-E7^2vF z2Y;!e1h0Q6JZhga>s-7UQabm-Ywa#W;P9Px=5}ql)Cs_J@JY?!GGG8b4_P+$0d&hv z*G6yiRD3LKyy$!-8lMiOfp8UZ_zSl(CxXL-+U`jK4jl5N6%EYGSqX|j{me8-rQc? z?6U-UjCy62lln4*8Tu2)dL=S76AEmocv5{`#oL=70u85FiyMc<{=Qc&>p#D;03sjC{$@X}qIi#5n{T^2Zpihx| z4~V6n-EDi@RLZNjECw9kgio6k6BPx)TSRUa!%ICSgjOD6b{S`$zIpBS2yXpEpJ{lu z-0}c@(g{CpJ4jyj78`k4as{{_hoJa0(Gt0$-aE2+khYvDZ|V8!9|>m((biZ;q@Ff9CPc#;_st2wE^K9)nDTbmH({iSx2I_jV`j-{+5UDk{( zu>#One3Va`S)@!^qAR?e0WdFqBuvCBX^kFw2RO;C{X8UD;+Z}~256Vx{tjpt-BtxW zXAUVAKf+^fHiumV=sIxgDG*_frquZldC-Cb7_%=VXgegtE5-7TvRM^^*tW?5-XTLR zB}ciA@QG!`tyx1M#gC|o$f`f-F-M~>u>jmcQEsE=A+4WTd_=cRBHEK!R*NoN0nZt5 zRHGB4P3oD$n7R;6#;#Zi9Dt~t+NdEBTD)Q>mHmQlg5CQgoQGpaxaH8HH?(;G@AxJm zsa`vJ>a6Sw9`i@E#46RFl$a-GpC2aVOXfd`3M_p*IRUb!-kfE4gth{|;YOEd$F7COE;{7Hy;vJFPnRvjC*ocVuvd-u2|u5N#L zPZE+40t^@s6=jHsT$6wnQ4l8K79)+}qJUZrC`nKPkxK$f?L;BLdI4{Esnvitpw-4p z)l%CAw5?ie16s8{J~rTus?}hr1x4oFLHnHNocH|R^ZA`W-td{d*)x0gn!WaA)?Vwo z_FVYmrw!c))6VQ+@i%r%%8dT4X7S8H|zYgc`?_M;pd%;(qxC*%uow4QB4ne3W_U7nd(LHtrGK&)W6yua>jxKm2O!W~K9ziW_B54wX#y zx+6IAQE5%-Kl+TBaS8WxLbN1ax$DyDo5-q8VZodW37KbtW6o@hsd&e`lB(6TuK#`3 z%P~uyG$d_2mq{P^oJ z_k7j#adFVJv~G?!x#9h@wGpqHhr+i%Y`OWEIi^zQMeboeJHUN*py%!v5I{}&qVf-I zNom=0?Tz(a_wLN8xsehKca0fyZb4J&8rC%V$0V?TID7-Ld`Paq|8TtR8il?fqlIFXbN@y^1Y%Z?Zkv z`PZr6Z_BatfKQhQJQJ9e`(6EHw^}{6ZQUAen0o=ixKpOrh@PH5{%*rMZt>==3I;J= z6hc2WU7Ut;xYS&8Si*iEw?~+2Mg6%>4Zg{U)?M`9eFK@gHmxz?AF>>`Tbp%TBWZ?< z$2jY^df1o!fd}3xdmy;==RVqn$5mTWsUcUbW3id8Wh!uqyTE(%ar|N~cj+d@beutv zAKUivwryMS>7x8f?hj9WKqr=C?2Vhko~~B?7Vz%nf>hq*w2}wGlQYFJ^B>9XmKlD! zFt~ZotYc`(xS1Enc)zRhxs(`XIx{AvThj~PTe0U+#_LDoDnHlP6^VPmot~w=p_`Yu z-gzusRahNYdnWhHXQMk-eVs7HwIhxB8TR#2`{iB!V9_Z-l zT>k6Avn6(BM`-PhuvGoPpFJP1|BN4Nup>P#%U>XOPMe+kx3&vwmHfDq6}LLn%)k7H zzci2Q`F?#?`06(En2ssi8eA7V?auo#fH~TKPqlee2c>onZv#Gf`&j`maVNX)Sk3$B zzWFz4x#O#o(BcJEg?&HPM0n7J*`V)9O^QeH!YS_Z`19oGBK(AJh07=0uyq3Wj#ZY2 z*Ef9lKxX-z`ON>$nOsb}KFjT=hN9XTYgo_X@@JwcUzAZSKip%DPb?4I{ztR*74@^N zS$#?0Rb*Ct(;6J2_8XcJ@~pArla*Kgcrd=D*Ee|OxJxTPl@0H_bTzZrw`E83Q0R8Q zw94(579ZQc_=hFFkAL$wOgo*x?`Zt#Vd4Ig$nB?g{1|hi`=3v)HD`}TSs%|ge!ZoX zy4`#Gsk=i+h%Tf1tEV=>DHdO69{_S1puoS^oaipt28c=Y%{tyZkHP{>?Lg_~){q(doyw zAUrguT*RrF0cdV)R0 zM=I>B*)SDtPWs;UwOWw#!z#ak&s-ISs-pGthCRQYnHsmCBulXHaU~J_Q|G*HiK{2C zfX4i}seMEEf#O|@f7r|2A53E5d(VCE&EB!B)ev&J;lt$YgURQPEwJ4BBWlj~X4v`(HLR?ucjj-1@cT>xKVwhpMW!Fai$C7_9mBln)dHm7|KxWcHrBabTGm(c$6wSR-(4U( z>stP>x%kT9!+4(A=b7(CUT<6eW7l8RyL!)lvYQ|E{@#gKe&5Fl>sR+Jq0&a(c&B&z zN}usBx9UyLhjt+^3+qe%$Rd1+>!xq|=3V}Y{)Erzf5v&TcszU7XTNiP@EiBp!Pm2? z{*OwF8ipPV1vh$5t2a#hUL78@3NTjBEZsz3Zg>%WCS-DZWsd8w2mOYgu*%2gT@hXW zrK0$|Rpai&bbm8YJI?sb^X{toQ%-g~bw1qsi?}ya2o4*5 ze0*c!e!=dJ39P!1J&pE_9qU-6YG=lIeG-S4o{i@+YEEz-q~A=>Exf;=bh}*o&O=t< z+!JTy3u+2}ue^~pbwSX=mIo2-zp_G`e|cB4ts|cGLCA(y`{%oNIZ=bdn#|ifdRTXZ z*q@oVc5Gvv2x2#yKk9h8>;W3vDmc?Ie%aB{>{j#M-Jj6L1#dWD-q}&iQZ|oCH`jFR zW9Wkezz&^|C8zQ$BO|S?yhQz~0>PJ1Z;1*KFRg`$yW=mYj6+#~nT{ zheOzh?1wrQuqL*QnG0+3B}*Axb)+J(<0dO643^%qyVL2X;Ip6EzuP^9ej+sXu(`1# zmvuTc_JrVE$3s?(%c&QDfAR6cA7h^QY@W3C>W{#~4o`B8QW*XmbI<>xkZb*N^wn>ZKDpCW&uN`i&{!_Lz zniKrZ^wYl?GsU~xr(E`GE0@N59iLr#cIijv19!X6)?AvN8I|TwcGv$=5`AP-x!o;# zu6kc>KyAXMZ(C&Dd!`>)?)!3;^rOnc6Agc*HSXw%#cQPZe7`JEau#$vbvbXHRJOON z>rn7N?%msOTo|00JNRAHm(Jg&r`87Ecs#$!J>uSPwpf`4ni(z&hSX0>SY zjr;S;ehY28z4z(9^e=X?E@toe()#&5zm@GR+9Nk=eU2ABJ-1;n{JWFyojF&g5Dvds zx@|&;x@SB4quJlJ;Lkt9i$2xN*gj2mEHiv%r((?X6;6*|4?B=d{~HaeLyHN24o&0# zS%WGaSN<5ju|cfNt;qcl_i(bKLg-#}8UQKw>Wd3GkpmzO)rF;D(o_ zWxOT-9d*wsJOP%GU#JLAswgYTT~bzDlHu4+LO3_0EMr!t|G)qD-`x*D^Tw~wy}6Py z??2`EU=mEW6}cu9YbyD&+|sgq>3{zWl#6e2Iwhnh{P#KjE|>D-o1FB7jQld5>hIJ4 zDW--1U}_R*(qll|Q5760e)uXr_5m+LKKH(JbNBeVqBpwA`wEv}_2DQ!aSf&#F!dNiW z{#rj1Cy{td95F0>iOjIX5U+&O!C?D3r81AQRQ1wHL|^%L=K#NUDuHlYcTTXKm;;S#XFy-A;kE5M=l z!+Irt5XrYJB@PG+!Kdv<^lJPwq}WnK92K@A%Ph-@PlN@arM+3N!Yja;_Am66_?O5k z%Sxh6_%*WH@&WOU@O|)A`&oSzeiA9OloOu|b>MXSDZLgi0ms`<=u7cq$O?;wFbid% zzJ0Sk4d04nSkj3t!UklXC5zZ0oC~(MZ_{Vudys{e_lS>$i^0D3z4}G?e6YLyBmDw= z7m{PiCUy#I5wT?!u}(M}tZ)BNFTtf?Q+u6$4!#k2*OE$X5GI1^_8NT>ZbVWn$%H|; z1`$~jh_yl?(686Y0&g_v18y^WRj&S6^3dhI7Kq%c2a-19?dnEK73CE3u zE+bdbk^ixg|D#9l@)-$lLRb)RxygnhLa<;+Cmi&sBcVItIL{afX(MOANJx2;XXGyT zk&rPGI=?ArBm}e(iil$j1IkFqaD06kP-%{k>9|Ve@pz8IaRN*cCMKjq2K~J+??mt+ z@P*!Uj$08r1*K5{&C|u5oXFy%e3XY$n!tvU8$satH@8k%`8ItL;6Mf_8lT1qq2d>p zu-JMEj$mo@q1&B9jy4Dt4_%Ot0z@NsvyWBSi*NS1oXEXqV*@8z8vWHW4~~tEe9)Ut zzas4YU;t-!B}QGB!dIbm9{GaL1I&0HV2g{$mk2PW4vEzRk6JeJdE`)hEMNh=<-LTb zJ=%0Ei#@`2-a?nl7*iu;VzfVSq9t4A7#(;DghnoEqSc z`g@ZlMF3TL0uVcDMkt`|P8NR)?d|ki$$%{%8#@Z4iY@vfTdi(CWjB5cFq31cx09kn z0R>|uoQetsbPO~kiq9GCUo_y?6Qdb76QXMXn4S!1(-Qz?dLp2w{^~P;5LZjdA@M_Z zAJJicY+~x16uB6Pm@THD#aOCosoW_zFf&fGe{TSh5lj5IXSuC5{B`VZ_3P-}DILwQ zJ?Tk+6&?OMZm0V7jGf718aThs{sopPs1Z0>Q?N|9g(HPU!(tKvML@GAb7SZof6dBF z#Q?~R4+5Sortrn&5LQGEnV3K#QZ~w@ZNBp);RDYz>y&{sTy)qnn$JT4x6?mIut!+?y!bSJ9o_@_t|%Ed+BxpV)sc<+Iyo3wMIl^h`Br zU5JR$v3!oSZCHx2y)8lb!W*SXV+vE+MxG7AMOnG~ZHXAhYB9w5$(=$3jMQII;@9Kk zruSyeZ!Q))jymK-97np=RL9}9;x zwfUp{4*&|#X0yzW1t9=w{^*+hx%eT~$3!sARqR;6JKXr3!x?XxS)V@EijHGIkIkfrru)vwtKo?B@+N0aSy?DH@Ra)W<^hTyq*0 z710oK*pxaft^h^diPAQZD&Ucx+lGIw0+^C(onK%#Wu4FaI-9l zK&-gTr*aXheOaVO!tXC01X^dU*cLz)i{vN(A{_NO0j#(HTC{DmjtRlBv>(W)X_v@H zYd+Hl`u%Lbw=cb{Nsbj|*C{8IZ%fmN4!5iq9kzzAk!DldUf)}*x&9Humgv^~P40ea zTlgk8WWbzffTiFu!vSqDLOswyels{?5GT|M`ra2frTz+RH~K|K&dqKLKsgxd zZazv-yanNdVP^CD3U&H`rAaQg{Txp2_SL9gC9F9K{}C7=dVGX)+}17 zq40>tq=F@dQv=^!s-Y%DDCR~7zAM$x^5>R*pBk-kQYcaua5eNix+(yVV>dnSvd6(UPm#8b)VcRKvF?r5}1N}e(g@~;;Yv%29{~!onH&T)`|IX zGqDU458bu&)8XrIf~Cu%*5A!R&y{Qd^$X!k71qT4r5`-+~kDc;QI;82m&KM@rT-@+0x*-QXbfHr(nz#G0L zw%o4`$A*AUx1oHP|@&Bh3EJxxOw{%`Q3i(C(1DDb6w6!7hK3b zI^2sTcmHhJPb>begpgRyDbow6u1vf z^ED@yhV7fq#5A1ha4{L8!I+$IoaAXZERCQ^ZoWk$YZY=Qnue55(6IM!I$9EfdG2Nj zj*@0CT5sdMdIqRJ^l5WZ^RUbgND}h{z!cfy*&=AU4Cl;M%`#>*Rt@NsO<7p;IDFuF z`+JH~3^U09w^!Qcen+xc!8Ct~kdLk3067y%LP-6KKcsCFs|2ymAO;^~0j6m@{rIme zk$PY#rV6kJhNT4F)}JnI^NLHk9HSl#dqpGKVrimRbm6qPXbLAWrSqvsJs1=@nc)l? z-88^_V+J2cj{p&y06~BN;Jxn>>0(3I)2HNcH zJqaK=O1@CCBWxTBM?>+qPC{*h;ej`447gw@M}(6G)I_P zAPRp4LaRVE1hb=q6Jpe_Xc1>#(FbGkX*B1cakdwOlf~*mlh>p}x$Wb=li*N{tWyAL z2c~{;NpNH^KtqwGT8}_ca77p{iPm`guZWmzqU5d{M|W=M+lY4+N!xt19@p6_;6+#X zN`pY#m`?$Dbj5P9nlwn;0>f4#{`GbU@H(*CboC_=S2&{@mN%PV0P0I1t1A|v;i$L9 zF!- zCnGZ*i;txsdZaN<-#p3eOgjA9Bvf z>Mo>%Y9tr~0w{=ydrs4FavogE4a}?pn?WS`LfYnsb3M!f2qM z3;F{jM6rbLgn`;{^0xH|dDB{xLG;X(+$7{AH|U;?YP(HXCSYWZ!VUD-=dSZ!jfQ2` z$vaHhbn=R#t+UbYy$r>UN+^T@FD*M&T{r`y)vx6PzEfw`3r~KNml+9Zj4Rz!-`n(v zhV%YVoVgbzNvW17<~M%H4}ZlLoM6ek;yOr{;@I%1S?tppe^%$Vj|n=z0Dza9&zR-+chpd^D3rV~5$76e^-5 zjOCG#JW_m+SEgjKfJ{%$aJrue8$C#7wb@ZFj-gtDQi|rsA9Nif-J0Qh( zl-PhZ!PT0a7-kx@WeA(#~AIk*%@FA-p@|J}n zZDVd&Sf?-d=ws+V@4>=f+%ltUj=Z>|(5#wJFK46IZ>1l3aSK3wDjEl38NJC0`by@d z6gg!j5CTdHV9--QeKt)TAB%Q7Uq}N2w>5ERk25a|+_WO~kWF-C=q3$FlKW07lQo|0 z-_82{^-1f7AgD#)bK+wWp@l`vVaD-31+?x`0>{)t7sM(Y*D*ul!T{U4ia8561%(fp z<}!Wk!QS#rNs=<)VJW@36mSWB!f!a}4h9Day@@BgZ=F|D?u3oH9d{NHrVvh-`|=Lf zJAG~8v;o$iH0wp%wW^mZjtB`M*YwHDKtf*yW>$TGAy7<_3&xBauUbA?Z1D^q>b^@u znhEe;C_Z#khUc)=z-P#&2CNIw;X}75iS8swquG+y2S6PTfUjUcVJ8B1k!O@A7Csc@ zakJMHad#Jl4c!0=$2*z&N}+8u@qU3-X#Q5nMC3=$Be@^aKDb^-#H24eJdgCz+#-^OrsE!zO> z|4_3$R=O>!0%2%&-HMBFWNmGrWCp@DJTW(JXcGO&&5!M9jq%&zHGg2Ev;&WScIjhi-{{+|wo~#<>sK zWd6eSSI2b~Z*<@E*<)MMk)g}{qt9MHb9Wz8GdZAA5CUkX>2k`&nE~pQbnYC8-mL(V z1ZAFvv?j!X3glS{C|rMP?6Bkh{dL&8*6*#~3xZx{A{q<&No`)r({#^$xL10jAn|N% zA%VK>Oco>t#`Y;2YUOk*mEKUx1cIcX9{SGOGi!@!XADI%Fe-ai`r31gzg@t^J?nSn zv%?yT*lV9FDZs1+8A%E#@4aSW^mZ(yS49|O1!P$TqN37^;~x z^*!_tLhmi&N1I*UK$2L<;Z{D#*(efnJF@#r_A`YHb}_j7}k z1E>geyvD#k=LA_3<9GnAAIB~V0(cejtY{^Wdkc~! ziZ>#g=3#p9-uZ_p{`+O2D}{iH2eRj^HPFJsqep3hckXwhSg9UXo4XWEGJu_){K)xIM%uwX=SIW%5_Y zGf-l^n1}~_PH^Bk)@$_n)s%Ynr2HgOQ=r4W-ca&B{Hf4H4}u-OSo|h zR1wMFdnv8I{-=%Jyzej*OXf4XgH1>FCm;J&>4sSujYlX1*Ze-WRvsvP38DnCkJ7kS zsG>c-Q%RTXRC>x^B)kOJRVxj)z#1DN!e`7`u1HQVfacU7oiTL?B~x!J4wdOr=O$K zd#N0_MI-a=rSkxv38E2xy&8}bb~K1TbapY$Re5RzbOq1_6dWs~R&>P-ld%_C`KnA7g_A zC0jn3s-|T~0lxJsO_$H5<~q4G8eyKSRkCvG{DC#ZySWat?0PwgN1yU`w>&HITu;)mvCC5-q*3!+bKhCX<$Du}Y-`bj-IST9~oP&q7s9(Pciv z%0$UKbL&iTmo>l-H5w;7P-`q2k1IX#mSVFhdt=;4@@Q??jB;W2JhMr@E%> z6!A#Yc&jJbnAxfU^7^JchN0AD_(G2d(>7`^=Idj{SR2+X4M6<^=g5+z>B*&nEvX!` zN3;4+&VwHLSo*N4#{;#Evc3fDT%WShy_m1JKY9~$lUmn-kgUX6(&RZMf?n~%orpWr z$DD3=ari`IBJh zrnz+*zy~I0yUF>vpf&8ha@3~vych8*H*3J;JS1p+j)H~z`x`F`m|}kc3cTmm@ohWe zfgi2qy!AA3tK~DOne)?7%ty%qh1H|)h5V%*nkR$-ov%63esc5xn@8HQ3|lnuSV6%- z94+E|mRwfy1aMNHqIU9{Gff$=LCh^n%1EA-ngqr|omzA(fyT0LVRW%2jsDskByLZa zmF81GnKguHG4cEYQ&$2kB|rvcJw#q8p(&ZDr6v5aI%a^a>>VomDn?`Azggr;vU zojiAC))Ro5gPC((UUx+trIN3&nZCJs^4#r{=WGXlaIFq`eJ|pu3;Fti>6=F<&pkbP z?)iZq++K@!~57z!(*oc z-%0BP9}m>jAU=&QtC3@_a!<`@cKRp~V6lxF4X1ymWjFBSm{STL9N)3DRU-faZB9!= z)kC+3@lbQ|aH81-gI2C#I9haMI86BaFm^zWQlXJ(pgYmRx-D(%F6o;jQ4fO) zf})r4;ll!Hn^W!cjWiJ|y6z;tuO@x(?nA?%8hpj*I1d-PLgR`M_zCfr4g7G#AorN4na;_a1?$pl( zo(=QT_hk1p&5vl7s7bt7CQy@1=QuudMUu2_uz$s<=IWB=PzMU?TcINTWshfbwapcO z;ci)rw=@peVQpV%h*SV zL2eQtVg!N|yGI4mJuTT9Kc5dej!00tuqO0>!sG^!52IONSGOT(eN5sOzx~GY} zmI}fLo>-G(@BzC#?UBb?LF@VKI;ew^mR}{i^j=Uc_DHb4iTy+%R1G{82o-Cqn)h4P z_M-!jnqPdrb*-nsoZcyCb~>fY+}3)wPbWp!4h->4uY`$RE6#>4CM9N=5<_Kim6En zdZ*rkhXHzhA(Yf8F*vD+Br3OL#t2E()Np3v>$q)L$TnQuQ8Q$-iw2(9hhsf}of5rG zSVE`MMSv3{8hB(?bJ_-;Y+l)=*$^Wfcv{lKO?!~L+O)Gob_=ORo8H*eM2B0G@Z&ym zEIahLQ`rK3%P3*Y)mjn$y+$3U5#ypGWHKVuq>AFh2ZoxBSo(1Dhe3d$L0@4 zYc&2V+NTfBh`dk9eTu~SiT_xx*<3H_blN<1H3$nQJ3OSMdDJEWv|Gy~(QvY6xi1Z3 zq?De^OeRh`SdLo0Zxcjbxr58Q%s-(A&P)N;)b{)GuQRIgNKAq&J)uE^i2ayEHZ;v`iRGF&aLNN5pt1XRY{R(q+K*8xpA&0xYt?-ts!*Let|hibhuegwbPMG0zyY zv&%JBg1dFqMM~RPPXy)}e|r2`U7n;**q#h(q;0=+ocN@#@!Ik{;i%uOBe9XAFwAthq$@ znLFth&%D<`eR;s6!4xi!xY;!W@F@6({WlmiikciIuRtx_n&)|(Bw*f+KCkFdGR=&R z!6-SMq8=s_J;*Bp;g!LuX2y5KT{U^h^cY&X&oc)z&5Ub<*;&6g1zk~ko1ppkit>1n z+uTXF1$}wu-E4DP^D=s5xlkstkrdGT^ZU@+MF*pl%$Op;83bLP^7_I-a1FUdEX(D% z3A|^s>t#!5KFlDvQZ>3gOgJ!?9^x#DL3!KX4fpMfw!=+oItW!`PX%iE~obhJ? z4|J!?V}zhjW1^$(eP&I_Km5Vn83`{yw{6BPF(I~?c-A;q$#jl8qJ<@#PGs?qRpY+$b>8JZ^O<{kcIjfY1M{OV6N_ZQz~D{bA{jAWCm zflvDw+w#+a{zIO$tvp&b5vLi94NbAwib$}gXD}PGtaoq*p73CBs)YJHk0obYhWd${ zMdZMsK*A#*o1bgGRE$NKogWR_E?Uxt2BRWq8Wvm_WM)vP$%oIpFiYG1TA)#M!duf)g0Ne4~$i-Wk%JXiH?<5>aW}HL=IB z4vm|VX^Dc9o&be-2Bi#*9M&&`a%3#ES3aTfmo82a&Syh;MC_vmD;w9eY{nwjrl(|f zta|>6(d;LaO7P)BM zR{2u_E@{9ezPRWpE}9w{KJWtfq6kTMxMCE&#ICpszIgyVo`!@&oI*cff6azymk$Qi zOn=W02IL@`667RS4`a}no4O*mo`=qP(G@Wdzp-g|^;(X7lBb&K;dE?#U?+FCY_jio zToY;_R372>cx2J;wbHh~?nyjCJuOp<7fRHFz7e?|cL$=LKNN4CXu3$_b9aXy=T%GA z+9$ac3!n}ra-RM60PFeuf~`dS@NUz4)cVDJiP?SmTkFWUtrL;m^%H{$bSARJ9vWgz z8i0b}huL-V3Ej)7_tQe*JPoZ(oyR}F7h_8w=$BP<_iaAE+0}a-1b3RJ_ZOLV1Gd5P zu6Z=sUr6^L>+gJ{~{(35C%=+_LM?0;tPA zaex}0**_1yzRj+lntV4i=qh5ZU~C2~7XVistm#%y;3N7JutkL+EVu|ofg9AfIUp@q z>H&(a>?S{K0~G|=_@=GTTZ6F7>&4Vnp0gf9@*p6yXef>&`UJ2io8JeRX%-uRo`7i( zdji6y6%liMu-V!p_m zW=MW-$P}D=pN}@DIdEjnGHJPz_7;=#s}ICJNEbQI0}VW&u;&~FV>vu9N=Q5ulw0gz z%iH+S+qms*eEm&~u;0dEZ)54(xadtx33?N|M8cTTV&`3Z6GIv-U;zv!l$PKDsQ2F> z>1c03c+{UEgfSa1k@4V5$|~SNA=v<>!G$bohe8#+!v>Ep0a!x;$b<<{5@ID&7?cUl zf?2gQJ_oz^*rx+7SV+OZ1m|wF8wC>q#D9kYXF#Q=aWJKNozFabA9 z=G?hBtF_evaHqLhHcIPZ8#0$_2O;$#pc~YO3?T#HK*YC^l!oX6}UN|$V?QYhtVfVpI7 z3Il>OFUv2VBQ)ox441-&pF*9o;j-fLFNC}6xhcnv0dQgpa+gsTd-*3oe+dnFuf{l0 zF0x+%N=^UBq)G==%81x3qeV8T>kA`?JOP8#N&P^{LJm*$sf^JhSX*tB=12n1mfQBi%9 z3y^7X2>?K3cu9d$Rfe@-5!0s&!i4}`J_XCG#Htiw*sP)@JS?|}U@pbdb1T)w^&h0> zmJ3}LB6=<&wkN6cOO_Pm7GjA7?GN+H^Zt?UWy^c8#P$`SOynUQK#KH$#+Nk*Hy)+Z zko~9+0f!V02RVoyRS&@AdT;?k+p&3i3gvqW!$Q#9ZSX1+F2~SuLukO*ZOqiM{Q&^% zi=;)SzSBDx@J>)9I&A=+VG3+anx74&01E~Ic{m_O{%}2g=7Wi-cN2dWvLj|_IoVx($hu=k)7p^kOJ$be$PnL-dnafLmWN2386@Bwg`s}PoG zUTE}0*SWCdkumMq`VfMFL&igMNOD0TY$`aG(*Wu+tEg1QDa$P^v@2#1;%wlF&vT_r zbORoJKqHNSV@~$x#@E{^>3~AKVJ;4wF~|W2e@D2Rrl$Z3Mf5j+-*6X#*Z#%dH{1o_ zKluBGyKsj4&-}$r$OwPy_us?!;jMo&cj#~SI+*Kp^$m0BItOcE`W%E#?X1w1@6Z}` zI$ed*s8U8zV$3XznbSnam|COK#3--LDX)Y#RH$^y(o^}Tv^$h3yF(<#0@4h>n}#t} z0aGxh?$}g+AOEOh(~eE$&Ip)!A~u0)W^<>gmKau=7{-Gfe=md10Dk}&wFaZI?64uK zwnA&vHW-;eSA7Vbv*q(`hZ<@s${P#@_`*4?G}ahvw(E2?`wwq58nyvY)2ysHxZR*q z>KZD_4Z4F6^|Innc|(nH`*!gDK|_skbE-}Wm|Df|@`KxUXdATKp*T@~upyCAV?YaQ z8Vp3scA{bPg8G6(HHPi*Ikp>;3MzC)WkGhOs=`>I0H9W-(rJzGbMe{pXKQNwTDR)3!KkxbXA;T^ooT*KTYAdapfGA{jDko6iVhVDtQ2W${gLYd_%=HU9GMHJ!ddzYbSbZjRuT~VhuW-7GkHq0z^a2c7w6JR%gtr&>FN2 z=p5i|G-!2(ii#{0uQ`ay3^j%f8n&~-e7;gyS!0BgK}7+6!>9oG4wXt(A#be8IvUC^1MoUc-;ELx@6PgRkV4d_~(szQ}hkgbZ;;D)RUWrY?(Ub2-dlg;B* zDn&(wN|mE3U;%{L6pv@H5wa}!+^5EG~YZ`iyo`h)fm=mS%Zvdif@*ArEatChHj-YR#0N8 zGEY-!b;%wD9TkESqfRL(&NgGJ3gvNFe;w_WR=Iiij%;ORmg%)=I7bk9>}o`0Bj?!E zgfGo2CeDPdqcV-r9eXm-Lo0A;bUTJ>BVPK5f_1fmv{SJXoute>`oPK*t%<%8MI~#G z8%>uQ3=P@}qmC$T$p73zY=>MoXzQgO!3|lunjJL;{Vsphtk-Qfl%umNRn-mJ6N29j z2Vq~IcS=>W_0;z5HQNtv-(FC&9WZMQh8@*4r>YNbKVUzt+O9YRUze*4TR%7Gwl!>T zs8MY*Iy#kM>&g8m4jF1{8nlL`1r;h}pkLLiLyflJ3rM@&Cf z)GCd}Y;20@YC}%#v~>jqfLYz3)Md@iK22JX!SfCR= zQ>ZXtRO#lcj=!oPS7hsqn{~QK{5P&w`3`@kMXij<(dn{aS4rQ2*aWRQ zUHNuhW%-UQU1hd86l2zJ0I!VM+bi-voSuyl{y|3nvB#&K7>)HrxIVKT8_j)3;2+_l z!afaq$D-Co?@(3-&z$m8fCok|`PN|AX-e>|;lXh#HW*A_&BDPBg}7F%YK*8*95Sx0 zsdda2hvylWC9l&S)*8#247y4MAWn&uA4b*c4jw%A+w_Wx@6P(ao*|b+WHyI2(T=W%qqxQmXobC&M&Vhn76}+sw-tiqzNwT zbVf5~o~JeJ$ktWRKz4QCzq*zXblDL}d^#a)Rz`ylK%RVHgJ9iWSqRgkk?7(T>Qo{}M0W3KvC7 zF(_TY5+?k6K^}h#y%|YDY@|?_!yQm)Sg`_jKq&jFOC7>58@@4vz$wI+hRlWURhY)$ z%eM*f1#8}>^S~BhM|Ogmw`oWIawHZQ-=>qnA<%|g2ZsN0Kk;w*k0Mg=`AFIeOof7j z2Le?hQ09aLp+Mj32-mz#6@Vq+eXx&4nKRpQ8vbSiIryVCH&c}l`3Gh6BKVz!{G#G= zr3x!4E>>eu&hABTvAdQhUJx)VY%4Sg3{$! zNq(VYNr2^-loXd>L5l>zmQmqw*=CK719-y zsbD45`DLo&rI4k$WiWvJcYp>QiyPRH9DFWyxM1f0?ShFdErwimG?6N|XlY@-qxxX} z+b4JrE?8H9Pyh7<07$@GWK`{p5w5~U`cGU~k_%}R6;@(-`F}Sod@4v-oScDaiwn!u zaDzlxI>fY()LI3>K~><*3|kLetJsC0ROMgxn=%U_ZUWqe01 zD&KSj_}Hc88clJDqd}oCKT_ZSTtNrL|FJ%>uVM-)kiO}d>fDh!EX`HtDq)AfFj--K zE~M+AT~PLh&+thcUDHvzLnDH`?J>Ua0UbRBabW95YDqZ!Cf@u9Lq6~Ci6Zj9ohRTb z16>Fr@3CPlYkV0%s>1L=f2lh#!CoIk;ggISe3*5Ku{yfZKIi+)2{r2lWW? zBsuT_301)|^y@Bx&rW+%VogwsgMo= z={e{F+H)8<+!#wl6)efeS0ENAK%^8yNc99(V@}lBt%l?-A zBe~O)Qs3k@O~Pb7cz~;%9_jNlqyT}W11V;~$6&Kn8MSwc;L&oy~jV}Z=F2r;27sI+dj0FKuNg@`VKNkc-5OLCl zZ?7eaMIw=<-MR+)4aIW(Am#tpT@e6sWe>c*;s4`$6^8r|Il}&j>+Jt1K|(C^mFSnT z6Ny9!E(RD3%M+pP7kH1HDTmisBUk9~Y&kF1(OSoeC3G&FV5H?{V;-Am7vqsYgo|-$ z`Eg_3Sl-D0j60l)B8=wwqjXPo4 zYalh~b_fgF2UBHS9yFQh=bcNWir0$I!Mq88;{XerhW_<@LD_YFu(gqnf0Yp@A)rSc zTS&U5&#B9Iq$3W&tt#LlYBL6#m(EOIZ2up1Y3KVlQumXUZ{9v6Y{u^!Ra|QiCAmtI7 z1lj)|G*M;{^q18F_NNYQ4)l@aus?Nh5I!+WgP04UZy-gBpi~H5VUh!X-MmTkt! zzPL;zJb&jtDvQzGrhUJAdhWUBop;}T=e>K*t7%XP0mTi7rrX%RprZ!i-m}Oja?nS>XSS%MRX4AwI971*)LFF?o2?T>> z6pV{+F$Jbm-E1Fe8J>gxx0qK`HwNoY&IL_el{)m@wS81VWt9=~)ed9!4tzIR8D+0z zX|8>#$dwq1A1dhSbqfPQe{K;Go?cflY)vJG5ESH!u39r0w~mPBxw8)MzEkklFPqO; zuVbxcLY@N<-4$FLRDy4?40UTarGEcfck$}_;De+x_&YKS}$_krjKVF)5pcm`%Ti2D!Y`r zl^EjR6j_BVk-1rFO-L2BvjwTiuTslmfO$P0H?BZwmu00$$-pw(@gjwO-SnANrr$J7 z?3t!(KCMdgYlark&?=B!ixAIqO1N^1xxD^t*EiOxZ-8n#U#c3QkRRy63O!`BzqLl< zAi}~8hj8eQPv?=}M~I|X(uHMSdL9+>cz-sJLAzO zLN~6P#oiI6ny#4H4=ErbdS~ec{&an9tp%V3;xuCe?IJOGPB+oAEL)cKpxxFLGuxDF zBVJ54&5u78OY6y2(RybtB<;U|OF1o$U3qnpdu$P}aBE}&r(n-;>BVHs9mB9SMB5(o z&V8z5tlvQuZGA}LTR*l!Ay}|MyxhJtjAJCYyoZOj|LrkV+jCcL9?4KmiF*VOTpQC> zzyahXpcYG}%XBQ3?TDJu<n~^^~uC(u{QsxPGNOkQj=sZu^;Pwe4rB zVcW}8o8=5aY7%cP!39a}foUy26tIhBY2;v^6@}>z`~E|e}r-MiA@~*lQGUh67+CZVukX7uQO&B5%>>@(XXKT?Gj5l z^(n^4U1vJhAy5uW{G7yNmgS@RqtNXHVf=yTZAl-O^fRFEN16!J&q?~I#NRV!ok73E zctidgW0Eqr9Y)&;mPxejCnnqcA%ihV`Jry`yutF3crJP9W0v^{FXl--@fL=6B_^ha xT@p+FaB+@~{M@?R=(hc(&f&}^J<`9)A6r1bM_h>UekwDleSsUEbh_^l(cf`0LazV- diff --git a/MPWmake.sea.bin b/MPWmake.sea.bin deleted file mode 100644 index 734d4446dd686da1e2884ea8ee38262c2fcb46af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22144 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 - -typedef SInt8 int8_t; -typedef UInt8 uint8_t; -typedef SInt16 int16_t; -typedef UInt16 uint16_t; -typedef SInt32 int32_t; -typedef UInt32 uint32_t; -typedef SInt64 int64_t; -typedef UInt64 uint64_t; -typedef unsigned long uintptr_t; - -#define SDL_HAS_64BIT_TYPE 1 - -/* Useful headers */ -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_ABS 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_SSCANF 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_SNDMGR 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_CDROM_DUMMY 1 -#else -#define SDL_CDROM_MACOS 1 -#endif - -/* Enable various input drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_JOYSTICK_DUMMY 1 -#else -#define SDL_JOYSTICK_MACOS 1 -#endif - -/* Enable various shared object loading systems */ -#define SDL_LOADSO_MACOS 1 - -/* Enable various threading systems */ -#define SDL_THREADS_DISABLED 1 - -/* Enable various timer systems */ -#define SDL_TIMER_MACOS 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -#define SDL_VIDEO_DRIVER_DRAWSPROCKET 1 -#define SDL_VIDEO_DRIVER_TOOLBOX 1 - -/* Enable OpenGL support */ -#define SDL_VIDEO_OPENGL 1 - -#endif /* _SDL_config_macos_h */ diff --git a/include/SDL_main.h b/include/SDL_main.h index fb27f0016..1b8f79c68 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -29,7 +29,6 @@ #if defined(__WIN32__) || \ (defined(__MWERKS__) && !defined(__BEOS__)) || \ - defined(__MACOS__) || \ defined(__SYMBIAN32__) || defined(QWS) #ifdef __cplusplus @@ -76,30 +75,6 @@ extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); #include "close_code.h" #endif -/* From the SDL library code -- needed for registering QuickDraw on MacOS */ -#if defined(__MACOS__) - -#include "begin_code.h" -#ifdef __cplusplus -/* *INDENT-OFF* */ -extern "C" { -/* *INDENT-ON* */ -#endif - -/* Forward declaration so we don't need to include QuickDraw.h */ -struct QDGlobals; - -/* This should be called from your main() function, if any */ -extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); - -#ifdef __cplusplus -/* *INDENT-OFF* */ -} -/* *INDENT-ON* */ -#endif -#include "close_code.h" -#endif - #endif /* Need to redefine main()? */ #endif /* _SDL_main_h */ diff --git a/include/SDL_opengl.h b/include/SDL_opengl.h index 32535473a..267e3b288 100644 --- a/include/SDL_opengl.h +++ b/include/SDL_opengl.h @@ -37,9 +37,6 @@ #if defined(__MACOSX__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ -#elif defined(__MACOS__) -#include /* Header File For The OpenGL Library */ -#include /* Header File For The GLU Library */ #else #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ diff --git a/include/begin_code.h b/include/begin_code.h index 01f4088de..aa2f88487 100644 --- a/include/begin_code.h +++ b/include/begin_code.h @@ -102,9 +102,6 @@ #pragma nopackwarning #endif #pragma pack(push,4) -#elif (defined(__MWERKS__) && defined(__MACOS__)) -#pragma options align=mac68k4byte -#pragma enumsalwaysint on #endif /* Compiler needs structure packing set */ /* Set up compiler-specific options for inlining functions */ diff --git a/include/close_code.h b/include/close_code.h index bf609d88a..fc41957e2 100644 --- a/include/close_code.h +++ b/include/close_code.h @@ -31,10 +31,5 @@ #ifdef __BORLANDC__ #pragma nopackwarning #endif -#if (defined(__MWERKS__) && defined(__MACOS__)) -#pragma options align=reset -#pragma enumsalwaysint reset -#else #pragma pack(pop) -#endif #endif /* Compiler needs structure packing set */ diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index f2ef5143b..659628df4 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -532,9 +532,6 @@ SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained) SDL_SetError("SDL_OpenAudio() passed a NULL callback"); return (-1); } -#if defined(__MACOS__) || (defined(__RISCOS__) && SDL_THREADS_DISABLED) - /* FIXME: Need to implement PPC interrupt asm for SDL_LockAudio() */ -#else #if defined(__MINT__) && SDL_THREADS_DISABLED /* Uses interrupt driven audio, without thread */ #else @@ -546,7 +543,6 @@ SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained) return (-1); } #endif /* __MINT__ */ -#endif /* __MACOS__ */ /* Calculate the silence and size of the audio specification */ SDL_CalculateAudioSpec(desired); diff --git a/src/cdrom/SDL_cdrom.c b/src/cdrom/SDL_cdrom.c index 0ed81ef9a..afb75c9e3 100644 --- a/src/cdrom/SDL_cdrom.c +++ b/src/cdrom/SDL_cdrom.c @@ -26,9 +26,7 @@ #include "SDL_cdrom.h" #include "SDL_syscdrom.h" -#if !defined(__MACOS__) #define CLIP_FRAMES 10 /* Some CD-ROMs won't go all the way */ -#endif static int SDL_cdinitted = 0; static SDL_CD *default_cdrom; diff --git a/src/cdrom/SDL_syscdrom.h b/src/cdrom/SDL_syscdrom.h index ced2f63ab..feaaef2f3 100644 --- a/src/cdrom/SDL_syscdrom.h +++ b/src/cdrom/SDL_syscdrom.h @@ -74,4 +74,5 @@ extern int SDL_SYS_CDInit(void); /* Function to perform any system-specific CD-ROM related cleanup */ extern void SDL_SYS_CDQuit(void); + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/cdrom/macos/SDL_syscdrom.c b/src/cdrom/macos/SDL_syscdrom.c deleted file mode 100644 index 69a30510d..000000000 --- a/src/cdrom/macos/SDL_syscdrom.c +++ /dev/null @@ -1,543 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_CDROM_MACOS - -/* MacOS functions for system-level CD-ROM audio control */ - -#include -#include -#include /* Use entry table macros, not functions in InterfaceLib */ - -#include "SDL_cdrom.h" -#include "../SDL_syscdrom.h" -#include "SDL_syscdrom_c.h" - -/* Added by Matt Slot */ -#if !defined(LMGetUnitTableEntryCount) -#define LMGetUnitTableEntryCount() *(short *)0x01D2 -#endif - -/* The maximum number of CD-ROM drives we'll detect */ -#define MAX_DRIVES 26 - -/* A list of available CD-ROM drives */ -static long SDL_cdversion = 0; -static struct -{ - short dRefNum; - short driveNum; - long frames; - char name[256]; - Boolean hasAudio; -} SDL_cdlist[MAX_DRIVES]; -static StringPtr gDriverName = "\p.AppleCD"; - -/* The system-dependent CD control functions */ -static const char *SDL_SYS_CDName(int drive); -static int SDL_SYS_CDOpen(int drive); -static int SDL_SYS_CDGetTOC(SDL_CD * cdrom); -static CDstatus SDL_SYS_CDStatus(SDL_CD * cdrom, int *position); -static int SDL_SYS_CDPlay(SDL_CD * cdrom, int start, int length); -static int SDL_SYS_CDPause(SDL_CD * cdrom); -static int SDL_SYS_CDResume(SDL_CD * cdrom); -static int SDL_SYS_CDStop(SDL_CD * cdrom); -static int SDL_SYS_CDEject(SDL_CD * cdrom); -static void SDL_SYS_CDClose(SDL_CD * cdrom); - -static short -SDL_SYS_ShortToBCD(short value) -{ - return ((value % 10) + (value / 10) * 0x10); /* Convert value to BCD */ -} - -static short -SDL_SYS_BCDToShort(short value) -{ - return ((value % 0x10) + (value / 0x10) * 10); /* Convert value from BCD */ -} - -int -SDL_SYS_CDInit(void) -{ - SInt16 dRefNum = 0; - SInt16 first, last; - - SDL_numcds = 0; - - /* Check that the software is available */ - if (Gestalt(kGestaltAudioCDSelector, &SDL_cdversion) || !SDL_cdversion) - return (0); - - /* Fill in our driver capabilities */ - SDL_CDcaps.Name = SDL_SYS_CDName; - SDL_CDcaps.Open = SDL_SYS_CDOpen; - SDL_CDcaps.GetTOC = SDL_SYS_CDGetTOC; - SDL_CDcaps.Status = SDL_SYS_CDStatus; - SDL_CDcaps.Play = SDL_SYS_CDPlay; - SDL_CDcaps.Pause = SDL_SYS_CDPause; - SDL_CDcaps.Resume = SDL_SYS_CDResume; - SDL_CDcaps.Stop = SDL_SYS_CDStop; - SDL_CDcaps.Eject = SDL_SYS_CDEject; - SDL_CDcaps.Close = SDL_SYS_CDClose; - - /* Walk the list, count each AudioCD driver, and save the refnums */ - first = -1; - last = 0 - LMGetUnitTableEntryCount(); - for (dRefNum = first; dRefNum >= last; dRefNum--) { - Str255 driverName; - StringPtr namePtr; - DCtlHandle deviceEntry; - - deviceEntry = GetDCtlEntry(dRefNum); - if (!deviceEntry) - continue; - - /* Is this an .AppleCD ? */ - namePtr = (*deviceEntry)->dCtlFlags & (1L << dRAMBased) ? - ((StringPtr) ((DCtlPtr) deviceEntry)->dCtlDriver + 18) : - ((StringPtr) (*deviceEntry)->dCtlDriver + 18); - BlockMoveData(namePtr, driverName, namePtr[0] + 1); - if (driverName[0] > gDriverName[0]) - driverName[0] = gDriverName[0]; - if (!EqualString(driverName, gDriverName, false, false)) - continue; - - /* Record the basic info for each drive */ - SDL_cdlist[SDL_numcds].dRefNum = dRefNum; - BlockMoveData(namePtr + 1, SDL_cdlist[SDL_numcds].name, namePtr[0]); - SDL_cdlist[SDL_numcds].name[namePtr[0]] = 0; - SDL_cdlist[SDL_numcds].hasAudio = false; - SDL_numcds++; - } - return (0); -} - -static const char * -SDL_SYS_CDName(int drive) -{ - return (SDL_cdlist[drive].name); -} - -static int -get_drivenum(int drive) -{ - QHdr *driveQ = GetDrvQHdr(); - DrvQEl *driveElem; - - /* Update the drive number */ - SDL_cdlist[drive].driveNum = 0; - if (driveQ->qTail) { - driveQ->qTail->qLink = 0; - } - for (driveElem = (DrvQEl *) driveQ->qHead; driveElem; - driveElem = (DrvQEl *) driveElem->qLink) { - if (driveElem->dQRefNum == SDL_cdlist[drive].dRefNum) { - SDL_cdlist[drive].driveNum = driveElem->dQDrive; - break; - } - } - return (SDL_cdlist[drive].driveNum); -} - -static int -SDL_SYS_CDOpen(int drive) -{ - return (drive); -} - -static int -SDL_SYS_CDGetTOC(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - CDTrackData tracks[SDL_MAX_TRACKS]; - long i, leadout; - - /* Get the number of tracks on the CD by examining the TOC */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackRange; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - cdrom->numtracks = - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]) - - SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]) + 1; - if (cdrom->numtracks > SDL_MAX_TRACKS) - cdrom->numtracks = SDL_MAX_TRACKS; - cdrom->status = CD_STOPPED; - cdrom->cur_track = 0; /* Apparently these are set elsewhere */ - cdrom->cur_frame = 0; /* Apparently these are set elsewhere */ - - - /* Get the lead out area of the CD by examining the TOC */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetLeadOutArea; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - leadout = MSF_TO_FRAMES(SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]), - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]), - SDL_SYS_BCDToShort(cdpb.csParam.bytes[2])); - - /* Get an array of track locations by examining the TOC */ - SDL_memset(tracks, 0, sizeof(tracks)); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackEntries; /* Type of Query */ - *((long *) (cdpb.csParam.words + 1)) = (long) tracks; - cdpb.csParam.words[3] = cdrom->numtracks * sizeof(tracks[0]); - *((char *) (cdpb.csParam.words + 4)) = 1; /* First track */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Read all the track TOC entries */ - SDL_cdlist[cdrom->id].hasAudio = false; - for (i = 0; i < cdrom->numtracks; ++i) { - cdrom->track[i].id = i + 1; - if (tracks[i].entry.control & kDataTrackMask) - cdrom->track[i].type = SDL_DATA_TRACK; - else { - cdrom->track[i].type = SDL_AUDIO_TRACK; - SDL_cdlist[SDL_numcds].hasAudio = true; - } - - cdrom->track[i].offset = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(tracks[i].entry.min), - SDL_SYS_BCDToShort(tracks[i].entry.min), - SDL_SYS_BCDToShort(tracks[i].entry.frame)); - cdrom->track[i].length = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(tracks[i + 1].entry.min), - SDL_SYS_BCDToShort(tracks[i + 1].entry.min), - SDL_SYS_BCDToShort(tracks[i + 1].entry.frame)) - - cdrom->track[i].offset; - } - - /* Apparently SDL wants a fake last entry */ - cdrom->track[i].offset = leadout; - cdrom->track[i].length = 0; - - return (0); -} - -/* Get CD-ROM status */ -static CDstatus -SDL_SYS_CDStatus(SDL_CD * cdrom, int *position) -{ - CDCntrlParam cdpb; - CDstatus status = CD_ERROR; - Boolean spinning = false; - - if (position) - *position = 0; - - /* Get the number of tracks on the CD by examining the TOC */ - if (!get_drivenum(cdrom->id)) { - return (CD_TRAYEMPTY); - } - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackRange; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (CD_ERROR); - } - - cdrom->numtracks = - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]) - - SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]) + 1; - if (cdrom->numtracks > SDL_MAX_TRACKS) - cdrom->numtracks = SDL_MAX_TRACKS; - cdrom->cur_track = 0; /* Apparently these are set elsewhere */ - cdrom->cur_frame = 0; /* Apparently these are set elsewhere */ - - - if (1 || SDL_cdlist[cdrom->id].hasAudio) { - /* Get the current playback status */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStatus; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - switch (cdpb.csParam.cd.status) { - case kStatusPlaying: - status = CD_PLAYING; - spinning = true; - break; - case kStatusPaused: - status = CD_PAUSED; - spinning = true; - break; - case kStatusMuted: - status = CD_PLAYING; /* What should I do here? */ - spinning = true; - break; - case kStatusDone: - status = CD_STOPPED; - spinning = true; - break; - case kStatusStopped: - status = CD_STOPPED; - spinning = false; - break; - case kStatusError: - default: - status = CD_ERROR; - spinning = false; - break; - } - - if (spinning && position) - *position = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(cdpb.csParam.cd.minute), - SDL_SYS_BCDToShort(cdpb.csParam.cd.second), - SDL_SYS_BCDToShort(cdpb.csParam.cd.frame)); - } else - status = CD_ERROR; /* What should I do here? */ - - return (status); -} - -/* Start play */ -static int -SDL_SYS_CDPlay(SDL_CD * cdrom, int start, int length) -{ - CDCntrlParam cdpb; - - /* Pause the current audio playback to avoid audible artifacts */ - if (SDL_SYS_CDPause(cdrom) < 0) { - return (-1); - } - - /* Specify the AudioCD playback mode */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kSetPlayMode; - cdpb.csParam.bytes[0] = false; /* Repeat? */ - cdpb.csParam.bytes[1] = kPlayModeSequential; /* Play mode */ - /* ¥¥¥ÊTreat as soft error, NEC Drive doesnt support this call ¥¥¥ */ - PBControlSync((ParmBlkPtr) & cdpb); - -#if 1 - /* Specify the end of audio playback */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = kBlockPosition; /* Position Mode */ - *(long *) (cdpb.csParam.words + 1) = start + length - 1; /* Search Address */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Specify the start of audio playback, and start it */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPlay; - cdpb.csParam.words[0] = kBlockPosition; /* Position Mode */ - *(long *) (cdpb.csParam.words + 1) = start + 1; /* Search Address */ - cdpb.csParam.words[3] = false; /* Stop address? */ - cdpb.csParam.words[4] = kStereoPlayMode; /* Audio Play Mode */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } -#else - /* Specify the end of audio playback */ - FRAMES_TO_MSF(start + length, &m, &s, &f); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = kTrackPosition; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = /* Search Address (loword) */ - SDL_SYS_ShortToBCD(cdrom->numtracks); - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Specify the start of audio playback, and start it */ - FRAMES_TO_MSF(start, &m, &s, &f); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPlay; - cdpb.csParam.words[0] = kTrackPosition; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = SDL_SYS_ShortToBCD(1); /* Search Address (loword) */ - cdpb.csParam.words[3] = false; /* Stop address? */ - cdpb.csParam.words[4] = kStereoPlayMode; /* Audio Play Mode */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } -#endif - - return (0); -} - -/* Pause play */ -static int -SDL_SYS_CDPause(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPause; - cdpb.csParam.words[0] = 0; /* Pause/Continue Flag (hiword) */ - cdpb.csParam.words[1] = 1; /* Pause/Continue Flag (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Resume play */ -static int -SDL_SYS_CDResume(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPause; - cdpb.csParam.words[0] = 0; /* Pause/Continue Flag (hiword) */ - cdpb.csParam.words[1] = 0; /* Pause/Continue Flag (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Stop play */ -static int -SDL_SYS_CDStop(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = 0; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = 0; /* Search Address (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Eject the CD-ROM */ -static int -SDL_SYS_CDEject(SDL_CD * cdrom) -{ - Boolean disk = false; - QHdr *driveQ = GetDrvQHdr(); - DrvQEl *driveElem; - HParamBlockRec hpb; - ParamBlockRec cpb; - - for (driveElem = (DrvQEl *) driveQ->qHead; driveElem; driveElem = - (driveElem) ? ((DrvQEl *) driveElem->qLink) : - ((DrvQEl *) driveQ->qHead)) { - if (driveQ->qTail) { - driveQ->qTail->qLink = 0; - } - if (driveElem->dQRefNum != SDL_cdlist[cdrom->id].dRefNum) { - continue; - } - - /* Does drive contain mounted volume? If not, skip */ - SDL_memset(&hpb, 0, sizeof(hpb)); - hpb.volumeParam.ioVRefNum = driveElem->dQDrive; - if (PBHGetVInfoSync(&hpb) != noErr) { - continue; - } - if ((UnmountVol(0, driveElem->dQDrive) == noErr) && - (Eject(0, driveElem->dQDrive) == noErr)) { - driveElem = 0; /* Clear pointer to reset our loop */ - disk = true; - } - } - - /* If no disk is present, just eject the tray */ - if (!disk) { - SDL_memset(&cpb, 0, sizeof(cpb)); - cpb.cntrlParam.ioVRefNum = 0; /* No Drive */ - cpb.cntrlParam.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cpb.cntrlParam.csCode = kEjectTheDisc; - if (PBControlSync((ParmBlkPtr) & cpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - } - return (0); -} - -/* Close the CD-ROM handle */ -static void -SDL_SYS_CDClose(SDL_CD * cdrom) -{ - return; -} - -void -SDL_SYS_CDQuit(void) -{ - while (SDL_numcds--) - SDL_memset(SDL_cdlist + SDL_numcds, 0, sizeof(SDL_cdlist[0])); -} - -#endif /* SDL_CDROM_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/cdrom/macos/SDL_syscdrom_c.h b/src/cdrom/macos/SDL_syscdrom_c.h deleted file mode 100644 index 07ea54d80..000000000 --- a/src/cdrom/macos/SDL_syscdrom_c.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2004 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* This is the MacOS specific header for the SDL CD-ROM API - Contributed by Matt Slot - */ - -/* AppleCD Control calls */ -#define kVerifyTheDisc 5 /* Returns noErr if there is disc inserted */ -#define kEjectTheDisc 7 /* Eject disc from drive */ -#define kUserEject 80 /* Enable/disable the CD-ROM eject button */ -#define kReadTOC 100 /* Extract various TOC information from the disc */ -#define kReadQ 101 /* Extract Q subcode info for the current track */ -#define kAudioTrackSearch 103 /* Start playback from the indicated position */ -#define kAudioPlay 104 /* Start playback from the indicated position */ -#define kAudioPause 105 /* Pause/continue the playback */ -#define kAudioStop 106 /* Stop playback at the indicated position */ -#define kAudioStatus 107 /* Return audio play status */ -#define kAudioControl 109 /* Set the output volume for the audio channels */ -#define kReadAudioVolume 112 /* Get the output volume for the audio channels */ -#define kSetTrackList 122 /* Set the track program for the audio CD to play */ -#define kGetTrackList 123 /* Get the track program the audio CD is playing */ -#define kGetTrackIndex 124 /* Get the track index the audio CD is playing */ -#define kSetPlayMode 125 /* Set the audio tracks play mode */ -#define kGetPlayMode 126 /* Get the audio tracks play mode */ - -/* AppleCD Status calls */ -#define kGetDriveType 96 /* Get the type of the physical CD-ROM drive */ -#define kWhoIsThere 97 /* Get a bitmap of SCSI IDs the driver controls */ -#define kGetBlockSize 98 /* Get current block size of the CD-ROM drive */ - -/* AppleCD other constants */ -#define kBlockPosition 0 /* Position at the specified logical block number */ -#define kAbsMSFPosition 1 /* Position at the specified Min/Sec/Frame (in BCD) */ -#define kTrackPosition 2 /* Position at the specified track number (in BCD) */ -#define kIndexPosition 3 /* Position at the nth track in program (in BCD) */ - -#define kMutedPlayMode 0 /* Play the audio track with no output */ -#define kStereoPlayMode 9 /* Play the audio track in normal stereo */ - -#define kControlFieldMask 0x0D /* Bits 3,2,0 in the nibble */ -#define kDataTrackMask 0x04 /* Indicates Data Track */ - -#define kGetTrackRange 1 /* Query TOC for track numbers */ -#define kGetLeadOutArea 2 /* Query TOC for "Lead Out" end of audio data */ -#define kGetTrackEntries 3 /* Query TOC for track starts and data types */ - -#define kStatusPlaying 0 /* Audio Play operation in progress */ -#define kStatusPaused 1 /* CD-ROM device in Hold Track ("Pause") state */ -#define kStatusMuted 2 /* MUTING-ON operation in progress */ -#define kStatusDone 3 /* Audio Play completed */ -#define kStatusError 4 /* Error occurred during audio play operation */ -#define kStatusStopped 5 /* Audio play operation not requested */ - -#define kPlayModeSequential 0 /* Play tracks in order */ -#define kPlayModeShuffled 1 /* Play tracks randomly */ -#define kPlayModeProgrammed 2 /* Use custom playlist */ - -/* AppleCD Gestalt selectors */ -#define kGestaltAudioCDSelector 'aucd' -#define kDriverVersion52 0x00000520 -#define kDriverVersion51 0x00000510 -#define kDriverVersion50 0x00000500 - -/* Drive type constants */ -#define kDriveAppleCD_SC 1 -#define kDriveAppleCD_SCPlus_or_150 2 -#define kDriveAppleCD_300_or_300Plus 3 - -/* Misc constants */ -#define kFirstSCSIDevice -33 -#define kLastSCSIDevice -40 - -#if PRAGMA_STRUCT_ALIGN -#pragma options align=mac68k -#endif - -/* AppleCD driver parameter block */ -typedef struct CDCntrlParam -{ - QElemPtr qLink; - short qType; - short ioTrap; - Ptr ioCmdAddr; - IOCompletionUPP ioCompletion; - OSErr ioResult; - StringPtr ioNamePtr; - short ioVRefNum; - short ioCRefNum; - short csCode; - - union - { - long longs[6]; - short words[11]; - unsigned char bytes[22]; - struct - { - unsigned char status; - unsigned char play; - unsigned char control; - unsigned char minute; - unsigned char second; - unsigned char frame; - } cd; - } csParam; - -} CDCntrlParam, *CDCntrlParamPtr; - -typedef union CDTrackData -{ - long value; /* Treat as a longword value */ - struct - { - unsigned char reserved:4; /* Unused by AppleCD driver */ - unsigned char control:4; /* Track flags (data track?) */ - unsigned char min; /* Start of track (BCD) */ - unsigned char sec; /* Start of track (BCD) */ - unsigned char frame; /* Start of track (BCD) */ - } entry; /* Broken into fields */ -} CDTrackData, *CDTrackPtr; - -#if PRAGMA_STRUCT_ALIGN -#pragma options align=reset -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 5b706fa41..ea96fdcc7 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -157,11 +157,7 @@ SDL_StartEventThread(Uint32 flags) #if !SDL_THREADS_DISABLED SDL_EventQ.lock = SDL_CreateMutex(); if (SDL_EventQ.lock == NULL) { -#ifdef __MACOS__ /* MacOS classic you can't multithread, so no lock needed */ - ; -#else return (-1); -#endif } #endif /* !SDL_THREADS_DISABLED */ SDL_EventQ.active = 1; diff --git a/src/events/SDL_sysevents.h b/src/events/SDL_sysevents.h index 8c515d9b5..dad59e859 100644 --- a/src/events/SDL_sysevents.h +++ b/src/events/SDL_sysevents.h @@ -37,11 +37,8 @@ #define CANT_THREAD_EVENTS #endif -#ifdef __MACOS__ /* MacOS 7/8 don't support preemptive multi-tasking */ -#define CANT_THREAD_EVENTS -#endif - #ifdef __OS2__ /* The OS/2 event loop runs in a separate thread */ #define MUST_THREAD_EVENTS #endif + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index 22c71007e..3bdb44152 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -349,51 +349,6 @@ mem_close(SDL_RWops * context) /* Functions to create SDL_RWops structures from various data sources */ -#ifdef __MACOS__ -/* - * translate unix-style slash-separated filename to mac-style colon-separated - * name; return malloced string - */ -static char * -unix_to_mac(const char *file) -{ - int flen = SDL_strlen(file); - char *path = SDL_malloc(flen + 2); - const char *src = file; - char *dst = path; - if (*src == '/') { - /* really depends on filesystem layout, hope for the best */ - src++; - } else { - /* Check if this is a MacOS path to begin with */ - if (*src != ':') - *dst++ = ':'; /* relative paths begin with ':' */ - } - while (src < file + flen) { - const char *end = SDL_strchr(src, '/'); - int len; - if (!end) - end = file + flen; /* last component */ - len = end - src; - if (len == 0 || (len == 1 && src[0] == '.')) { - /* remove repeated slashes and . */ - } else { - if (len == 2 && src[0] == '.' && src[1] == '.') { - /* replace .. with the empty string */ - } else { - SDL_memcpy(dst, src, len); - dst += len; - } - if (end < file + flen) - *dst++ = ':'; - } - src = end + 1; - } - *dst++ = '\0'; - return path; -} -#endif /* __MACOS__ */ - SDL_RWops * SDL_RWFromFile(const char *file, const char *mode) { @@ -421,15 +376,7 @@ SDL_RWFromFile(const char *file, const char *mode) #elif HAVE_STDIO_H -#ifdef __MACOS__ - { - char *mpath = unix_to_mac(file); - fp = fopen(mpath, mode); - SDL_free(mpath); - } -#else fp = fopen(file, mode); -#endif if (fp == NULL) { SDL_SetError("Couldn't open %s", file); } else { diff --git a/src/joystick/SDL_sysjoystick.h b/src/joystick/SDL_sysjoystick.h index 0baf934a9..40cd86fda 100644 --- a/src/joystick/SDL_sysjoystick.h +++ b/src/joystick/SDL_sysjoystick.h @@ -81,4 +81,5 @@ extern void SDL_SYS_JoystickClose(SDL_Joystick * joystick); /* Function to perform any system-specific joystick related cleanup */ extern void SDL_SYS_JoystickQuit(void); + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/macos/SDL_sysjoystick.c b/src/joystick/macos/SDL_sysjoystick.c deleted file mode 100644 index e4c476bdb..000000000 --- a/src/joystick/macos/SDL_sysjoystick.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_JOYSTICK_MACOS - -/* SDL stuff -- "SDL_sysjoystick.c" - MacOS joystick functions by Frederick Reitberger - - The code that follows is meant for SDL. Use at your own risk. -*/ - -#include - -#include "SDL_joystick.h" -#include "../SDL_sysjoystick.h" -#include "../SDL_joystick_c.h" - - -/* The max number of joysticks we will detect */ -#define MAX_JOYSTICKS 16 -/* Limit ourselves to 32 elements per device */ -#define kMaxReferences 32 - -#define ISpSymmetricAxisToFloat(axis) ((((float) axis) - kISpAxisMiddle) / (kISpAxisMaximum-kISpAxisMiddle)) -#define ISpAsymmetricAxisToFloat(axis) (((float) axis) / (kISpAxisMaximum)) - - -static ISpDeviceReference SYS_Joysticks[MAX_JOYSTICKS]; -static ISpElementListReference SYS_Elements[MAX_JOYSTICKS]; -static ISpDeviceDefinition SYS_DevDef[MAX_JOYSTICKS]; - -struct joystick_hwdata -{ - char name[64]; -/* Uint8 id;*/ - ISpElementReference refs[kMaxReferences]; - /* gonna need some sort of mapping info */ -}; - - -/* Function to scan the system for joysticks. - * Joystick 0 should be the system default joystick. - * This function should return the number of available joysticks, or -1 - * on an unrecoverable fatal error. - */ -int -SDL_SYS_JoystickInit(void) -{ - static ISpDeviceClass classes[4] = { - kISpDeviceClass_Joystick, -#if kISpDeviceClass_Gamepad - kISpDeviceClass_Gamepad, -#endif - kISpDeviceClass_Wheel, - 0 - }; - OSErr err; - int i; - UInt32 count, numJoysticks; - - if ((Ptr) 0 == (Ptr) ISpStartup) { - SDL_SetError("InputSprocket not installed"); - return -1; // InputSprocket not installed - } - - if ((Ptr) 0 == (Ptr) ISpGetVersion) { - SDL_SetError("InputSprocket not version 1.1 or newer"); - return -1; // old version of ISp (not at least 1.1) - } - - ISpStartup(); - - /* Get all the joysticks */ - numJoysticks = 0; - for (i = 0; classes[i]; ++i) { - count = 0; - err = ISpDevices_ExtractByClass(classes[i], - MAX_JOYSTICKS - numJoysticks, - &count, &SYS_Joysticks[numJoysticks]); - numJoysticks += count; - } - - for (i = 0; i < numJoysticks; i++) { - ISpDevice_GetDefinition(SYS_Joysticks[i], - sizeof(ISpDeviceDefinition), &SYS_DevDef[i]); - - err = ISpElementList_New(0, NULL, &SYS_Elements[i], 0); - - if (err) { - SDL_OutOfMemory(); - return -1; - } - - ISpDevice_GetElementList(SYS_Joysticks[i], &SYS_Elements[i]); - } - - ISpDevices_Deactivate(numJoysticks, SYS_Joysticks); - - return numJoysticks; -} - -/* Function to get the device-dependent name of a joystick */ -const char * -SDL_SYS_JoystickName(int index) -{ - static char name[64]; - int len; - - /* convert pascal string to c-string */ - len = SYS_DevDef[index].deviceName[0]; - if (len >= sizeof(name)) { - len = (sizeof(name) - 1); - } - SDL_memcpy(name, &SYS_DevDef[index].deviceName[1], len); - name[len] = '\0'; - - return name; -} - -/* Function to open a joystick for use. - The joystick to open is specified by the index field of the joystick. - This should fill the nbuttons and naxes fields of the joystick structure. - It returns 0, or -1 if there is an error. - */ -int -SDL_SYS_JoystickOpen(SDL_Joystick * joystick) -{ - int index; - UInt32 count, gotCount, count2; - long numAxis, numButtons, numHats, numBalls; - - count = kMaxReferences; - count2 = 0; - numAxis = numButtons = numHats = numBalls = 0; - - index = joystick->index; - - /* allocate memory for system specific hardware data */ - joystick->hwdata = - (struct joystick_hwdata *) SDL_malloc(sizeof(*joystick->hwdata)); - if (joystick->hwdata == NULL) { - SDL_OutOfMemory(); - return (-1); - } - SDL_memset(joystick->hwdata, 0, sizeof(*joystick->hwdata)); - SDL_strlcpy(joystick->hwdata->name, SDL_SYS_JoystickName(index), - SDL_arraysize(joystick->hwdata->name)); - joystick->name = joystick->hwdata->name; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_Axis, - count, &gotCount, joystick->hwdata->refs); - - numAxis = gotCount; - count -= gotCount; - count2 += gotCount; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_DPad, - count, - &gotCount, - &(joystick->hwdata->refs[count2])); - - numHats = gotCount; - count -= gotCount; - count2 += gotCount; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_Button, - count, - &gotCount, - &(joystick->hwdata->refs[count2])); - - numButtons = gotCount; - count -= gotCount; - count2 += gotCount; - - joystick->naxes = numAxis; - joystick->nhats = numHats; - joystick->nballs = numBalls; - joystick->nbuttons = numButtons; - - ISpDevices_Activate(1, &SYS_Joysticks[index]); - - return 0; -} - -/* Function to update the state of a joystick - called as a device poll. - * This function shouldn't update the joystick structure directly, - * but instead should call SDL_PrivateJoystick*() to deliver events - * and update joystick device state. - */ -void -SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) -{ - int i, j; - ISpAxisData a; - ISpDPadData b; - //ISpDeltaData c; - ISpButtonData d; - - for (i = 0, j = 0; i < joystick->naxes; i++, j++) { - Sint16 value; - - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &a); - value = (ISpSymmetricAxisToFloat(a) * 32767.0); - if (value != joystick->axes[i]) { - SDL_PrivateJoystickAxis(joystick, i, value); - } - } - - for (i = 0; i < joystick->nhats; i++, j++) { - Uint8 pos; - - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &b); - switch (b) { - case kISpPadIdle: - pos = SDL_HAT_CENTERED; - break; - case kISpPadLeft: - pos = SDL_HAT_LEFT; - break; - case kISpPadUpLeft: - pos = SDL_HAT_LEFTUP; - break; - case kISpPadUp: - pos = SDL_HAT_UP; - break; - case kISpPadUpRight: - pos = SDL_HAT_RIGHTUP; - break; - case kISpPadRight: - pos = SDL_HAT_RIGHT; - break; - case kISpPadDownRight: - pos = SDL_HAT_RIGHTDOWN; - break; - case kISpPadDown: - pos = SDL_HAT_DOWN; - break; - case kISpPadDownLeft: - pos = SDL_HAT_LEFTDOWN; - break; - } - if (pos != joystick->hats[i]) { - SDL_PrivateJoystickHat(joystick, i, pos); - } - } - - for (i = 0; i < joystick->nballs; i++, j++) { - /* ignore balls right now */ - } - - for (i = 0; i < joystick->nbuttons; i++, j++) { - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &d); - if (d != joystick->buttons[i]) { - SDL_PrivateJoystickButton(joystick, i, d); - } - } -} - -/* Function to close a joystick after use */ -void -SDL_SYS_JoystickClose(SDL_Joystick * joystick) -{ - int index; - - index = joystick->index; - - ISpDevices_Deactivate(1, &SYS_Joysticks[index]); -} - -/* Function to perform any system-specific joystick related cleanup */ -void -SDL_SYS_JoystickQuit(void) -{ - ISpShutdown(); -} - -#endif /* SDL_JOYSTICK_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/loadso/macos/SDL_sysloadso.c b/src/loadso/macos/SDL_sysloadso.c deleted file mode 100644 index 344fd0d01..000000000 --- a/src/loadso/macos/SDL_sysloadso.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_LOADSO_MACOS - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* System dependent library loading routines */ - -#include -#include -#define OLDP2C 1 -#include -#include -#include - -#include "SDL_loadso.h" - -void * -SDL_LoadObject(const char *sofile) -{ - void *handle = NULL; - const char *loaderror = NULL; - CFragConnectionID library_id; - Ptr mainAddr; - Str255 errName; - OSErr error; - char psofile[512]; - - SDL_strlcpy(psofile, sofile, SDL_arraysize(psofile)); - error = GetSharedLibrary(C2PStr(psofile), kCompiledCFragArch, - kLoadCFrag, &library_id, &mainAddr, errName); - switch (error) { - case noErr: - loaderror = NULL; - break; - case cfragNoLibraryErr: - loaderror = "Library not found"; - break; - case cfragUnresolvedErr: - loaderror = "Unabled to resolve symbols"; - break; - case cfragNoPrivateMemErr: - case cfragNoClientMemErr: - loaderror = "Out of memory"; - break; - default: - loaderror = "Unknown Code Fragment Manager error"; - break; - } - if (loaderror == NULL) { - handle = (void *) (library_id); - } else { - SDL_SetError("Failed loading %s: %s", sofile, loaderror); - } - return (handle); -} - -void * -SDL_LoadFunction(void *handle, const char *name) -{ - void *symbol = NULL; - const char *loaderror = NULL; - CFragSymbolClass class; - CFragConnectionID library_id = (CFragConnectionID) handle; - char pname[512]; - - SDL_strlcpy(pname, name, SDL_arraysize(pname)); - if (FindSymbol(library_id, C2PStr(pname), - (char **) &symbol, &class) != noErr) { - loaderror = "Symbol not found"; - } - - if (symbol == NULL) { - SDL_SetError("Failed loading %s: %s", name, loaderror); - } - return (symbol); -} - -void -SDL_UnloadObject(void *handle) -{ - CFragConnectionID library_id; - if (handle != NULL) { - library_id = (CFragConnectionID) handle; - CloseConnection(&library_id); - } -} - -#endif /* SDL_LOADSO_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/macos/SDL.r b/src/main/macos/SDL.r deleted file mode 100644 index 104507a32..000000000 --- a/src/main/macos/SDL.r +++ /dev/null @@ -1,58 +0,0 @@ -data 'DLOG' (1000) { - $"0072 0040 00EA 01B3 0001 0100 0000 0000 0000 03E8 0C43 6F6D 6D61 6E64 204C 696E" /* .r.@.ê.³...........è.Command Lin */ - $"6500 280A" /* e.( */ -}; - -data 'DLOG' (1001) { - $"0072 0040 00DB 01AC 0001 0100 0000 0000 0000 03E9 0C45 7272 6F72 2057 696E 646F" /* .r.@.Û.¬...........é.Error Windo */ - $"7700 280A" /* w.( */ -}; - -data 'DLOG' (1002) { - $"00B8 00BE 0147 01D8 0005 0100 0000 0000 0000 03EA 1643 6F6E 6669 726D 2044 6973" /* .¸.¾.G.Ø...........ê.Confirm Dis */ - $"706C 6179 2043 6861 6E67 6510 280A" /* play Change.( */ -}; - -data 'DITL' (1000) { - $"0005 0000 0000 0052 0113 0066 0158 0402 4F4B 0000 0000 0052 00C2 0066 0107 0406" /* .......R...f.X..OK.....R.Â.f.... */ - $"4361 6E63 656C 0000 0000 000F 0084 001F 0155 1000 0000 0000 0054 0019 0066 007D" /* Cancel.......„...U.......T...f.} */ - $"050E 4F75 7470 7574 2074 6F20 6669 6C65 0000 0000 000F 0018 001F 007F 080D 436F" /* ..Output to file..............Co */ - $"6D6D 616E 6420 4C69 6E65 3A00 0000 0000 0030 0018 0040 0158 0702 0080" /* mmand Line:......0...@.X...€ */ -}; - -data 'DITL' (1001) { - $"0001 0000 0000 0046 0120 005A 015A 0402 4F4B 0000 0000 0010 000A 0038 0160 0800" /* .......F. .Z.Z..OK.......Â.8.`.. */ -}; - -data 'DITL' (1002) { - $"0002 0000 0000 006F 001E 0083 0058 0406 4361 6E63 656C 0000 0000 006E 00C0 0082" /* .......o...ƒ.X..Cancel.....n.À.‚ */ - $"00FA 0402 4F4B 0000 0000 000E 000F 005F 010C 88B3 5468 6520 7365 7474 696E 6720" /* .ú..OK........._..ˆ³The setting */ - $"666F 7220 796F 7572 206D 6F6E 6974 6F72 2068 6173 2062 6565 6E20 6368 616E 6765" /* for your monitor has been change */ - $"642C 2061 6E64 2069 7420 6D61 7920 6E6F 7420 6265 2064 6973 706C 6179 6564 2063" /* d, and it may not be displayed c */ - $"6F72 7265 6374 6C79 2E20 546F 2063 6F6E 6669 726D 2074 6865 2064 6973 706C 6179" /* orrectly. To confirm the display */ - $"2069 7320 636F 7272 6563 742C 2063 6C69 636B 204F 4B2E 2054 6F20 7265 7475 726E" /* is correct, click OK. To return */ - $"2074 6F20 7468 6520 6F72 6967 696E 616C 2073 6574 7469 6E67 2C20 636C 6963 6B20" /* to the original setting, click */ - $"4361 6E63 656C 2E00" /* Cancel.. */ -}; - -data 'MENU' (128, preload) { - $"0080 0000 0000 0000 0000 FFFF FFFB 0114 0C41 626F 7574 2053 444C 2E2E 2E00 0000" /* .€........ÿÿÿû...About SDL...... */ - $"0001 2D00 0000 0000" /* ..-..... */ -}; - -data 'MENU' (129) { - $"0081 0000 0000 0000 0000 FFFF FFFF 0C56 6964 656F 2044 7269 7665 7219 4472 6177" /* .........ÿÿÿÿ.Video Driver.Draw */ - $"5370 726F 636B 6574 2028 4675 6C6C 7363 7265 656E 2900 0000 001E 546F 6F6C 426F" /* Sprocket (Fullscreen).....ToolBo */ - $"7820 2028 4675 6C6C 7363 7265 656E 2F57 696E 646F 7765 6429 0000 0000 00" /* x (Fullscreen/Windowed)..... */ -}; - -data 'CNTL' (128) { - $"0000 0000 0010 0140 0000 0100 0064 0081 03F0 0000 0000 0D56 6964 656F 2044 7269" /* .......@.....d..ð.....Video Dri */ - $"7665 723A" /* ver: */ -}; - -data 'TMPL' (128, "CLne") { - $"0C43 6F6D 6D61 6E64 204C 696E 6550 5354 520C 5669 6465 6F20 4472 6976 6572 5053" /* .Command LinePSTR.Video DriverPS */ - $"5452 0C53 6176 6520 546F 2046 696C 6542 4F4F 4C" /* TR.Save To FileBOOL */ -}; - diff --git a/src/main/macos/SDL_main.c b/src/main/macos/SDL_main.c deleted file mode 100644 index 8f121bb0c..000000000 --- a/src/main/macos/SDL_main.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* This file takes care of command line argument parsing, and stdio redirection - in the MacOS environment. (stdio/stderr is *not* directed for Mach-O builds) - */ - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#include -#endif - -/* Include the SDL main definition header */ -#include "SDL.h" -#include "SDL_main.h" -#ifdef main -#undef main -#endif - -#if !(defined(__APPLE__) && defined(__MACH__)) -/* The standard output files */ -#define STDOUT_FILE "stdout.txt" -#define STDERR_FILE "stderr.txt" -#endif - -#if !defined(__MWERKS__) && !TARGET_API_MAC_CARBON - /* In MPW, the qd global has been removed from the libraries */ -QDGlobals qd; -#endif - -/* Structure for keeping prefs in 1 variable */ -typedef struct -{ - Str255 command_line; - Str255 video_driver_name; - Boolean output_to_file; -} PrefsRecord; - -/* See if the command key is held down at startup */ -static Boolean -CommandKeyIsDown(void) -{ - KeyMap theKeyMap; - - GetKeys(theKeyMap); - - if (((unsigned char *) theKeyMap)[6] & 0x80) { - return (true); - } - return (false); -} - -#if !(defined(__APPLE__) && defined(__MACH__)) - -/* Parse a command line buffer into arguments */ -static int -ParseCommandLine(char *cmdline, char **argv) -{ - char *bufp; - int argc; - - argc = 0; - for (bufp = cmdline; *bufp;) { - /* Skip leading whitespace */ - while (SDL_isspace(*bufp)) { - ++bufp; - } - /* Skip over argument */ - if (*bufp == '"') { - ++bufp; - if (*bufp) { - if (argv) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while (*bufp && (*bufp != '"')) { - ++bufp; - } - } else { - if (*bufp) { - if (argv) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while (*bufp && !SDL_isspace(*bufp)) { - ++bufp; - } - } - if (*bufp) { - if (argv) { - *bufp = '\0'; - } - ++bufp; - } - } - if (argv) { - argv[argc] = NULL; - } - return (argc); -} - -/* Remove the output files if there was no output written */ -static void -cleanup_output(void) -{ - FILE *file; - int empty; - - /* Flush the output in case anything is queued */ - fclose(stdout); - fclose(stderr); - - /* See if the files have any output in them */ - file = fopen(STDOUT_FILE, "rb"); - if (file) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if (empty) { - remove(STDOUT_FILE); - } - } - file = fopen(STDERR_FILE, "rb"); - if (file) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if (empty) { - remove(STDERR_FILE); - } - } -} - -#endif //!(defined(__APPLE__) && defined(__MACH__)) - -static int -getCurrentAppName(StrFileName name) -{ - - ProcessSerialNumber process; - ProcessInfoRec process_info; - FSSpec process_fsp; - - process.highLongOfPSN = 0; - process.lowLongOfPSN = kCurrentProcess; - process_info.processInfoLength = sizeof(process_info); - process_info.processName = NULL; - process_info.processAppSpec = &process_fsp; - - if (noErr != GetProcessInformation(&process, &process_info)) - return 0; - - SDL_memcpy(name, process_fsp.name, process_fsp.name[0] + 1); - return 1; -} - -static int -getPrefsFile(FSSpec * prefs_fsp, int create) -{ - - /* The prefs file name is the application name, possibly truncated, */ - /* plus " Preferences */ - -#define SUFFIX " Preferences" -#define MAX_NAME 19 /* 31 - strlen (SUFFIX) */ - - short volume_ref_number; - long directory_id; - StrFileName prefs_name; - StrFileName app_name; - - /* Get Preferences folder - works with Multiple Users */ - if (noErr != - FindFolder(kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder, - &volume_ref_number, &directory_id)) - exit(-1); - - if (!getCurrentAppName(app_name)) - exit(-1); - - /* Truncate if name is too long */ - if (app_name[0] > MAX_NAME) - app_name[0] = MAX_NAME; - - SDL_memcpy(prefs_name + 1, app_name + 1, app_name[0]); - SDL_memcpy(prefs_name + app_name[0] + 1, SUFFIX, strlen(SUFFIX)); - prefs_name[0] = app_name[0] + strlen(SUFFIX); - - /* Make the file spec for prefs file */ - if (noErr != - FSMakeFSSpec(volume_ref_number, directory_id, prefs_name, prefs_fsp)) - { - if (!create) - return 0; - else { - /* Create the prefs file */ - SDL_memcpy(prefs_fsp->name, prefs_name, prefs_name[0] + 1); - prefs_fsp->parID = directory_id; - prefs_fsp->vRefNum = volume_ref_number; - - FSpCreateResFile(prefs_fsp, 0x3f3f3f3f, 'pref', 0); // '????' parsed as trigraph - - if (noErr != ResError()) - return 0; - } - } - return 1; -} - -static int -readPrefsResource(PrefsRecord * prefs) -{ - - Handle prefs_handle; - - prefs_handle = Get1Resource('CLne', 128); - - if (prefs_handle != NULL) { - int offset = 0; -// int j = 0; - - HLock(prefs_handle); - - /* Get command line string */ - SDL_memcpy(prefs->command_line, *prefs_handle, - (*prefs_handle)[0] + 1); - - /* Get video driver name */ - offset += (*prefs_handle)[0] + 1; - SDL_memcpy(prefs->video_driver_name, *prefs_handle + offset, - (*prefs_handle)[offset] + 1); - - /* Get save-to-file option (1 or 0) */ - offset += (*prefs_handle)[offset] + 1; - prefs->output_to_file = (*prefs_handle)[offset]; - - ReleaseResource(prefs_handle); - - return ResError() == noErr; - } - - return 0; -} - -static int -writePrefsResource(PrefsRecord * prefs, short resource_file) -{ - - Handle prefs_handle; - - UseResFile(resource_file); - - prefs_handle = Get1Resource('CLne', 128); - if (prefs_handle != NULL) - RemoveResource(prefs_handle); - - prefs_handle = - NewHandle(prefs->command_line[0] + prefs->video_driver_name[0] + 4); - if (prefs_handle != NULL) { - - int offset; - - HLock(prefs_handle); - - /* Command line text */ - offset = 0; - SDL_memcpy(*prefs_handle, prefs->command_line, - prefs->command_line[0] + 1); - - /* Video driver name */ - offset += prefs->command_line[0] + 1; - SDL_memcpy(*prefs_handle + offset, prefs->video_driver_name, - prefs->video_driver_name[0] + 1); - - /* Output-to-file option */ - offset += prefs->video_driver_name[0] + 1; - *(*((char **) prefs_handle) + offset) = (char) prefs->output_to_file; - *(*((char **) prefs_handle) + offset + 1) = 0; - - AddResource(prefs_handle, 'CLne', 128, "\pCommand Line"); - WriteResource(prefs_handle); - UpdateResFile(resource_file); - DisposeHandle(prefs_handle); - - return ResError() == noErr; - } - - return 0; -} - -static int -readPreferences(PrefsRecord * prefs) -{ - - int no_error = 1; - FSSpec prefs_fsp; - - /* Check for prefs file first */ - if (getPrefsFile(&prefs_fsp, 0)) { - - short prefs_resource; - - prefs_resource = FSpOpenResFile(&prefs_fsp, fsRdPerm); - if (prefs_resource == -1) /* this shouldn't happen, but... */ - return 0; - - UseResFile(prefs_resource); - no_error = readPrefsResource(prefs); - CloseResFile(prefs_resource); - } - - /* Fall back to application's resource fork (reading only, so this is safe) */ - else { - - no_error = readPrefsResource(prefs); - } - - return no_error; -} - -static int -writePreferences(PrefsRecord * prefs) -{ - - int no_error = 1; - FSSpec prefs_fsp; - - /* Get prefs file, create if it doesn't exist */ - if (getPrefsFile(&prefs_fsp, 1)) { - - short prefs_resource; - - prefs_resource = FSpOpenResFile(&prefs_fsp, fsRdWrPerm); - if (prefs_resource == -1) - return 0; - no_error = writePrefsResource(prefs, prefs_resource); - CloseResFile(prefs_resource); - } - - return no_error; -} - -/* This is where execution begins */ -int -main(int argc, char *argv[]) -{ - -#if !(defined(__APPLE__) && defined(__MACH__)) -#pragma unused(argc, argv) -#endif - -#define DEFAULT_ARGS "\p" /* pascal string for default args */ -#define DEFAULT_VIDEO_DRIVER "\ptoolbox" /* pascal string for default video driver name */ -#define DEFAULT_OUTPUT_TO_FILE 1 /* 1 == output to file, 0 == no output */ - -#define VIDEO_ID_DRAWSPROCKET 1 /* these correspond to popup menu choices */ -#define VIDEO_ID_TOOLBOX 2 - - PrefsRecord prefs = - { DEFAULT_ARGS, DEFAULT_VIDEO_DRIVER, DEFAULT_OUTPUT_TO_FILE }; - -#if !(defined(__APPLE__) && defined(__MACH__)) - int nargs; - char **args; - char *commandLine; - - StrFileName appNameText; -#endif - int videodriver = VIDEO_ID_TOOLBOX; - int settingsChanged = 0; - - long i; - - /* Kyle's SDL command-line dialog code ... */ -#if !TARGET_API_MAC_CARBON - InitGraf(&qd.thePort); - InitFonts(); - InitWindows(); - InitMenus(); - InitDialogs(nil); -#endif - InitCursor(); - FlushEvents(everyEvent, 0); -#if !TARGET_API_MAC_CARBON - MaxApplZone(); -#endif - MoreMasters(); - MoreMasters(); -#if 0 - /* Intialize SDL, and put up a dialog if we fail */ - if (SDL_Init(0) < 0) { - -#define kErr_OK 1 -#define kErr_Text 2 - - DialogPtr errorDialog; - short dummyType; - Rect dummyRect; - Handle dummyHandle; - short itemHit; - - errorDialog = GetNewDialog(1001, nil, (WindowPtr) - 1); - if (errorDialog == NULL) - return -1; - DrawDialog(errorDialog); - - GetDialogItem(errorDialog, kErr_Text, &dummyType, &dummyHandle, - &dummyRect); - SetDialogItemText(dummyHandle, "\pError Initializing SDL"); - -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(errorDialog)); -#else - SetPort(errorDialog); -#endif - do { - ModalDialog(nil, &itemHit); - } - while (itemHit != kErr_OK); - - DisposeDialog(errorDialog); - exit(-1); - } - atexit(cleanup_output); - atexit(SDL_Quit); -#endif - -/* Set up SDL's QuickDraw environment */ -#if !TARGET_API_MAC_CARBON - SDL_InitQuickDraw(&qd); -#endif - - if (readPreferences(&prefs)) { - - if (SDL_memcmp(prefs.video_driver_name + 1, "DSp", 3) == 0) - videodriver = 1; - else if (SDL_memcmp(prefs.video_driver_name + 1, "toolbox", 7) == 0) - videodriver = 2; - } - - if (CommandKeyIsDown()) { - -#define kCL_OK 1 -#define kCL_Cancel 2 -#define kCL_Text 3 -#define kCL_File 4 -#define kCL_Video 6 - - DialogPtr commandDialog; - short dummyType; - Rect dummyRect; - Handle dummyHandle; - short itemHit; -#if TARGET_API_MAC_CARBON - ControlRef control; -#endif - - /* Assume that they will change settings, rather than do exhaustive check */ - settingsChanged = 1; - - /* Create dialog and display it */ - commandDialog = GetNewDialog(1000, nil, (WindowPtr) - 1); -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(commandDialog)); -#else - SetPort(commandDialog); -#endif - - /* Setup controls */ -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - SetControlValue(control, prefs.output_to_file); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - SetControlValue((ControlHandle) dummyHandle, prefs.output_to_file); -#endif - - GetDialogItem(commandDialog, kCL_Text, &dummyType, &dummyHandle, - &dummyRect); - SetDialogItemText(dummyHandle, prefs.command_line); - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_Video, &control); - SetControlValue(control, videodriver); -#else - GetDialogItem(commandDialog, kCL_Video, &dummyType, &dummyHandle, - &dummyRect); - SetControlValue((ControlRef) dummyHandle, videodriver); -#endif - - SetDialogDefaultItem(commandDialog, kCL_OK); - SetDialogCancelItem(commandDialog, kCL_Cancel); - - do { - - ModalDialog(nil, &itemHit); /* wait for user response */ - - /* Toggle command-line output checkbox */ - if (itemHit == kCL_File) { -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - SetControlValue(control, !GetControlValue(control)); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - SetControlValue((ControlHandle) dummyHandle, - !GetControlValue((ControlHandle) - dummyHandle)); -#endif - } - - } - while (itemHit != kCL_OK && itemHit != kCL_Cancel); - - /* Get control values, even if they did not change */ - GetDialogItem(commandDialog, kCL_Text, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - GetDialogItemText(dummyHandle, prefs.command_line); - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - prefs.output_to_file = GetControlValue(control); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - prefs.output_to_file = GetControlValue((ControlHandle) dummyHandle); -#endif - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_Video, &control); - videodriver = GetControlValue(control); -#else - GetDialogItem(commandDialog, kCL_Video, &dummyType, &dummyHandle, - &dummyRect); - videodriver = GetControlValue((ControlRef) dummyHandle); -#endif - - DisposeDialog(commandDialog); - - if (itemHit == kCL_Cancel) { - exit(0); - } - } - - /* Set pseudo-environment variables for video driver, update prefs */ - switch (videodriver) { - case VIDEO_ID_DRAWSPROCKET: - SDL_putenv("SDL_VIDEODRIVER=DSp"); - SDL_memcpy(prefs.video_driver_name, "\pDSp", 4); - break; - case VIDEO_ID_TOOLBOX: - SDL_putenv("SDL_VIDEODRIVER=toolbox"); - SDL_memcpy(prefs.video_driver_name, "\ptoolbox", 8); - break; - } - -#if !(defined(__APPLE__) && defined(__MACH__)) - /* Redirect standard I/O to files */ - if (prefs.output_to_file) { - freopen(STDOUT_FILE, "w", stdout); - freopen(STDERR_FILE, "w", stderr); - } else { - fclose(stdout); - fclose(stderr); - } -#endif - - if (settingsChanged) { - /* Save the prefs, even if they might not have changed (but probably did) */ - if (!writePreferences(&prefs)) - fprintf(stderr, "WARNING: Could not save preferences!\n"); - } -#if !(defined(__APPLE__) && defined(__MACH__)) - appNameText[0] = 0; - getCurrentAppName(appNameText); /* check for error here ? */ - - commandLine = (char *) malloc(appNameText[0] + prefs.command_line[0] + 2); - if (commandLine == NULL) { - exit(-1); - } - - /* Rather than rewrite ParseCommandLine method, let's replace */ - /* any spaces in application name with underscores, */ - /* so that the app name is only 1 argument */ - for (i = 1; i < 1 + appNameText[0]; i++) - if (appNameText[i] == ' ') - appNameText[i] = '_'; - - /* Copy app name & full command text to command-line C-string */ - SDL_memcpy(commandLine, appNameText + 1, appNameText[0]); - commandLine[appNameText[0]] = ' '; - SDL_memcpy(commandLine + appNameText[0] + 1, prefs.command_line + 1, - prefs.command_line[0]); - commandLine[appNameText[0] + 1 + prefs.command_line[0]] = '\0'; - - /* Parse C-string into argv and argc */ - nargs = ParseCommandLine(commandLine, NULL); - args = (char **) malloc((nargs + 1) * (sizeof *args)); - if (args == NULL) { - exit(-1); - } - ParseCommandLine(commandLine, args); - - /* Run the main application code */ - SDL_main(nargs, args); - free(args); - free(commandLine); - - /* Remove useless stdout.txt and stderr.txt */ - cleanup_output(); -#else // defined(__APPLE__) && defined(__MACH__) - SDL_main(argc, argv); -#endif - - /* Exit cleanly, calling atexit() functions */ - exit(0); - - /* Never reached, but keeps the compiler quiet */ - return (0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/macos/SIZE.r b/src/main/macos/SIZE.r deleted file mode 100644 index b9cd942c8..000000000 --- a/src/main/macos/SIZE.r +++ /dev/null @@ -1,24 +0,0 @@ - -#include "Processes.r" - -resource 'SIZE' (-1) { - reserved, - acceptSuspendResumeEvents, - reserved, - canBackground, - doesActivateOnFGSwitch, - backgroundAndForeground, - getFrontClicks, - ignoreAppDiedEvents, - is32BitCompatible, - isHighLevelEventAware, - onlyLocalHLEvents, - notStationeryAware, - useTextEditServices, - reserved, - reserved, - reserved, - 5242880, // 5 megs minimum - 5242880 // 5 megs maximum -}; - diff --git a/src/main/macos/exports/Makefile b/src/main/macos/exports/Makefile deleted file mode 100644 index 0fd79fddf..000000000 --- a/src/main/macos/exports/Makefile +++ /dev/null @@ -1,34 +0,0 @@ - -EXPORTS = SDL.x -HEADERS = \ - ../../../../include/SDL.h \ - ../../../../include/SDL_active.h \ - ../../../../include/SDL_audio.h \ - ../../../../include/SDL_cdrom.h \ - ../../../../include/SDL_copying.h \ - ../../../../include/SDL_cpuinfo.h \ - ../../../../include/SDL_endian.h \ - ../../../../include/SDL_error.h \ - ../../../../include/SDL_events.h \ - ../../../../include/SDL_joystick.h \ - ../../../../include/SDL_keyboard.h \ - ../../../../include/SDL_keysym.h \ - ../../../../include/SDL_loadso.h \ - ../../../../include/SDL_mouse.h \ - ../../../../include/SDL_mutex.h \ - ../../../../include/SDL_quit.h \ - ../../../../include/SDL_rwops.h \ - ../../../../include/SDL_syswm.h \ - ../../../../include/SDL_thread.h \ - ../../../../include/SDL_timer.h \ - ../../../../include/SDL_version.h \ - ../../../../include/SDL_video.h - - -all: $(EXPORTS) - -$(EXPORTS): Makefile gendef.pl $(HEADERS) - perl gendef.pl $(HEADERS) >$@ || rm $@ - -clean: - rm -f $(EXPORTS) diff --git a/src/main/macos/exports/SDL.x b/src/main/macos/exports/SDL.x deleted file mode 100644 index 388bf1dc8..000000000 --- a/src/main/macos/exports/SDL.x +++ /dev/null @@ -1,206 +0,0 @@ - SDL_Init - SDL_InitSubSystem - SDL_QuitSubSystem - SDL_WasInit - SDL_Quit - SDL_GetAppState - SDL_AudioInit - SDL_AudioQuit - SDL_AudioDriverName - SDL_OpenAudio - SDL_GetAudioStatus - SDL_PauseAudio - SDL_LoadWAV_RW - SDL_FreeWAV - SDL_BuildAudioCVT - SDL_ConvertAudio - SDL_MixAudio - SDL_LockAudio - SDL_UnlockAudio - SDL_CloseAudio - SDL_CDNumDrives - SDL_CDName - SDL_CDOpen - SDL_CDStatus - SDL_CDPlayTracks - SDL_CDPlay - SDL_CDPause - SDL_CDResume - SDL_CDStop - SDL_CDEject - SDL_CDClose - SDL_HasRDTSC - SDL_HasMMX - SDL_HasMMXExt - SDL_Has3DNow - SDL_Has3DNowExt - SDL_HasSSE - SDL_HasSSE2 - SDL_HasAltiVec - SDL_SetError - SDL_GetError - SDL_ClearError - SDL_Error - SDL_PumpEvents - SDL_PeepEvents - SDL_PollEvent - SDL_WaitEvent - SDL_PushEvent - SDL_SetEventFilter - SDL_GetEventFilter - SDL_EventState - SDL_NumJoysticks - SDL_JoystickName - SDL_JoystickOpen - SDL_JoystickOpened - SDL_JoystickIndex - SDL_JoystickNumAxes - SDL_JoystickNumBalls - SDL_JoystickNumHats - SDL_JoystickNumButtons - SDL_JoystickUpdate - SDL_JoystickEventState - SDL_JoystickGetAxis - SDL_JoystickGetHat - SDL_JoystickGetBall - SDL_JoystickGetButton - SDL_JoystickClose - SDL_EnableUNICODE - SDL_EnableKeyRepeat - SDL_GetKeyRepeat - SDL_GetKeyState - SDL_GetModState - SDL_SetModState - SDL_GetKeyName - SDL_LoadObject - SDL_LoadFunction - SDL_UnloadObject - SDL_GetMouseState - SDL_GetRelativeMouseState - SDL_WarpMouse - SDL_CreateCursor - SDL_SetCursor - SDL_GetCursor - SDL_FreeCursor - SDL_ShowCursor - SDL_CreateMutex - SDL_mutexP - SDL_mutexV - SDL_DestroyMutex - SDL_CreateSemaphore - SDL_DestroySemaphore - SDL_SemWait - SDL_SemTryWait - SDL_SemWaitTimeout - SDL_SemPost - SDL_SemValue - SDL_CreateCond - SDL_DestroyCond - SDL_CondSignal - SDL_CondBroadcast - SDL_CondWait - SDL_CondWaitTimeout - SDL_RWFromFile - SDL_RWFromFP - SDL_RWFromMem - SDL_RWFromConstMem - SDL_AllocRW - SDL_FreeRW - SDL_ReadLE16 - SDL_ReadBE16 - SDL_ReadLE32 - SDL_ReadBE32 - SDL_ReadLE64 - SDL_ReadBE64 - SDL_WriteLE16 - SDL_WriteBE16 - SDL_WriteLE32 - SDL_WriteBE32 - SDL_WriteLE64 - SDL_WriteBE64 - SDL_GetWMInfo - SDL_CreateThread - SDL_CreateThread - SDL_ThreadID - SDL_GetThreadID - SDL_WaitThread - SDL_KillThread - SDL_GetTicks - SDL_Delay - SDL_SetTimer - SDL_AddTimer - SDL_RemoveTimer - SDL_Linked_Version - SDL_VideoInit - SDL_VideoQuit - SDL_VideoDriverName - SDL_GetVideoSurface - SDL_GetVideoInfo - SDL_VideoModeOK - SDL_ListModes - SDL_SetVideoMode - SDL_UpdateRects - SDL_UpdateRect - SDL_Flip - SDL_SetGamma - SDL_SetGammaRamp - SDL_GetGammaRamp - SDL_SetColors - SDL_SetPalette - SDL_MapRGB - SDL_MapRGBA - SDL_GetRGB - SDL_GetRGBA - SDL_CreateRGBSurface - SDL_CreateRGBSurfaceFrom - SDL_FreeSurface - SDL_LockSurface - SDL_UnlockSurface - SDL_LoadBMP_RW - SDL_SaveBMP_RW - SDL_SetColorKey - SDL_SetAlpha - SDL_SetClipRect - SDL_GetClipRect - SDL_ConvertSurface - SDL_UpperBlit - SDL_LowerBlit - SDL_FillRect - SDL_DisplayFormat - SDL_DisplayFormatAlpha - SDL_CreateYUVOverlay - SDL_LockYUVOverlay - SDL_UnlockYUVOverlay - SDL_DisplayYUVOverlay - SDL_FreeYUVOverlay - SDL_GL_LoadLibrary - SDL_GL_GetProcAddress - SDL_GL_SetAttribute - SDL_GL_GetAttribute - SDL_GL_SwapBuffers - SDL_WM_SetCaption - SDL_WM_GetCaption - SDL_WM_SetIcon - SDL_WM_IconifyWindow - SDL_WM_ToggleFullScreen - SDL_WM_GrabInput - SDL_SoftStretch - SDL_putenv - SDL_getenv - SDL_qsort - SDL_revcpy - SDL_strlcpy - SDL_strlcat - SDL_strdup - SDL_strrev - SDL_strupr - SDL_strlwr - SDL_ltoa - SDL_ultoa - SDL_strcasecmp - SDL_strncasecmp - SDL_snprintf - SDL_vsnprintf - SDL_iconv - SDL_iconv_string - SDL_InitQuickDraw diff --git a/src/main/macos/exports/gendef.pl b/src/main/macos/exports/gendef.pl deleted file mode 100644 index c27394b38..000000000 --- a/src/main/macos/exports/gendef.pl +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/perl -# -# Program to take a set of header files and generate DLL export definitions - -# Special exports to ignore for this platform - -while ( ($file = shift(@ARGV)) ) { - if ( ! defined(open(FILE, $file)) ) { - warn "Couldn't open $file: $!\n"; - next; - } - $printed_header = 0; - $file =~ s,.*/,,; - while () { - if ( / DECLSPEC.* SDLCALL ([^\s\(]+)/ ) { - if ( not $exclude{$1} ) { - print "\t$1\n"; - } - } - } - close(FILE); -} - -# Special exports to include for this platform -print "\tSDL_putenv\n"; -print "\tSDL_getenv\n"; -print "\tSDL_qsort\n"; -print "\tSDL_revcpy\n"; -print "\tSDL_strlcpy\n"; -print "\tSDL_strlcat\n"; -print "\tSDL_strdup\n"; -print "\tSDL_strrev\n"; -print "\tSDL_strupr\n"; -print "\tSDL_strlwr\n"; -print "\tSDL_ltoa\n"; -print "\tSDL_ultoa\n"; -print "\tSDL_strcasecmp\n"; -print "\tSDL_strncasecmp\n"; -print "\tSDL_snprintf\n"; -print "\tSDL_vsnprintf\n"; -print "\tSDL_iconv\n"; -print "\tSDL_iconv_string\n"; -print "\tSDL_InitQuickDraw\n"; diff --git a/src/timer/macos/FastTimes.c b/src/timer/macos/FastTimes.c deleted file mode 100644 index 536c862ff..000000000 --- a/src/timer/macos/FastTimes.c +++ /dev/null @@ -1,348 +0,0 @@ -/* File "FastTimes.c" - Original code by Matt Slot */ -/* Created 4/24/99 - This file is hereby placed in the public domain */ -/* Updated 5/21/99 - Calibrate to VIA, add TBR support, renamed functions */ -/* Updated 10/4/99 - Use AbsoluteToNanoseconds() in case Absolute = double */ -/* Updated 2/15/00 - Check for native Time Manager, no need to calibrate */ -/* Updated 2/19/00 - Fixed default value for gScale under native Time Mgr */ -/* Updated 3/21/00 - Fixed ns conversion, create 2 different scale factors */ -/* Updated 5/03/00 - Added copyright and placed into PD. No code changes */ -/* Updated 8/01/00 - Made "Carbon-compatible" by replacing LMGetTicks() */ - -/* This file is Copyright (C) Matt Slot, 1999-2000. It is hereby placed into - the public domain. The author makes no warranty as to fitness or stability */ - -#include -#include -#include -#include -#include - -#include "FastTimes.h" - -#ifdef TARGET_CPU_PPC -#undef GENERATINGPOWERPC /* stop whining */ -#define GENERATINGPOWERPC TARGET_CPU_PPC -#endif - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* - On 680x0 machines, we just use Microseconds(). - - On PowerPC machines, we try several methods: - * DriverServicesLib is available on all PCI PowerMacs, and perhaps - some NuBus PowerMacs. If it is, we use UpTime() : Overhead = 2.1 µsec. - * The PowerPC 601 has a built-in "real time clock" RTC, and we fall - back to that, accessing it directly from asm. Overhead = 1.3 µsec. - * Later PowerPCs have an accurate "time base register" TBR, and we - fall back to that, access it from PowerPC asm. Overhead = 1.3 µsec. - * We can also try Microseconds() which is emulated : Overhead = 36 µsec. - - On PowerPC machines, we avoid the following: - * OpenTransport is available on all PCI and some NuBus PowerMacs, but it - uses UpTime() if available and falls back to Microseconds() otherwise. - * InputSprocket is available on many PowerMacs, but again it uses - UpTime() if available and falls back to Microseconds() otherwise. - - Another PowerPC note: certain configurations, especially 3rd party upgrade - cards, may return inaccurate timings for the CPU or memory bus -- causing - skew in various system routines (up to 20% drift!). The VIA chip is very - accurate, and it's the basis for the Time Manager and Microseconds(). - Unfortunately, it's also very slow because the MacOS has to (a) switch to - 68K and (b) poll for a VIA event. - - We compensate for the drift by calibrating a floating point scale factor - between our fast method and the accurate timer at startup, then convert - each sample quickly on the fly. I'd rather not have the initialization - overhead -- but it's simply necessary for accurate timing. You can drop - it down to 30 ticks if you prefer, but that's as low as I'd recommend. - - Under MacOS 9, "new world" Macs (iMacs, B+W G3s and G+W G4s) have a native - Time Manager implementation: UpTime(), Microseconds(), and TickCount() are - all based on the same underlying counter. This makes it silly to calibrate - UpTime() against TickCount(). We now check for this feature using Gestalt(), - and skip the whole calibration step if possible. - -*/ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -#define RTCToNano(w) ((double) (w).hi * 1000000000.0 + (double) (w).lo) -#define WideTo64bit(w) (*(UInt64 *) &(w)) - -/* LMGetTicks() is not in Carbon and TickCount() has a fair bit of overhead, - so for speed we always read lowmem directly. This is a Mac OS X no-no, but - it always work on those systems that don't have a native Time Manager (ie, - anything before MacOS 9) -- regardless whether we are in Carbon or not! */ -#define MyLMGetTicks() (*(volatile UInt32 *) 0x16A) - -#if GENERATINGPOWERPC - -static asm UnsignedWide PollRTC(void); -static asm UnsignedWide PollTBR(void); -static Ptr FindFunctionInSharedLib(StringPtr libName, StringPtr funcName); - -static Boolean gInited = false; -static Boolean gNative = false; -static Boolean gUseRTC = false; -static Boolean gUseTBR = false; -static double gScaleUSec = 1.0 / 1000.0; /* 1 / ( nsec / usec) */ -static double gScaleMSec = 1.0 / 1000000.0; /* 1 / ( nsec / msec) */ - -/* Functions loaded from DriverServicesLib */ -typedef AbsoluteTime(*UpTimeProcPtr) (void); -typedef Nanoseconds(*A2NSProcPtr) (AbsoluteTime); -static UpTimeProcPtr gUpTime = NULL; -static A2NSProcPtr gA2NS = NULL; - -#endif /* GENERATINGPOWERPC */ - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -void -FastInitialize() -{ - SInt32 result; - - if (!gInited) { - -#if GENERATINGPOWERPC - - /* Initialize the feature flags */ - gNative = gUseRTC = gUseTBR = false; - - /* We use CFM to find and load needed symbols from shared libraries, so - the application doesn't have to weak-link them, for convenience. */ - gUpTime = - (UpTimeProcPtr) FindFunctionInSharedLib("\pDriverServicesLib", - "\pUpTime"); - if (gUpTime) - gA2NS = (A2NSProcPtr) - FindFunctionInSharedLib("\pDriverServicesLib", - "\pAbsoluteToNanoseconds"); - if (!gA2NS) - gUpTime = nil; /* Pedantic but necessary */ - - if (gUpTime) { - /* If we loaded UpTime(), then we need to know if the system has - a native implementation of the Time Manager. If so, then it's - pointless to calculate a scale factor against the missing VIA */ - - /* gestaltNativeTimeMgr = 4 in some future version of the headers */ - if (!Gestalt(gestaltTimeMgrVersion, &result) && - (result > gestaltExtendedTimeMgr)) - gNative = true; - } else { - /* If no DriverServicesLib, use Gestalt() to get the processor type. - Only NuBus PowerMacs with old System Software won't have DSL, so - we know it should either be a 601 or 603. */ - - /* Use the processor gestalt to determine which register to use */ - if (!Gestalt(gestaltNativeCPUtype, &result)) { - if (result == gestaltCPU601) - gUseRTC = true; - else if (result > gestaltCPU601) - gUseTBR = true; - } - } - - /* Now calculate a scale factor to keep us accurate. */ - if ((gUpTime && !gNative) || gUseRTC || gUseTBR) { - UInt64 tick, usec1, usec2; - UnsignedWide wide; - - /* Wait for the beginning of the very next tick */ - for (tick = MyLMGetTicks() + 1; tick > MyLMGetTicks();); - - /* Poll the selected timer and prepare it (since we have time) */ - wide = (gUpTime) ? (*gA2NS) ((*gUpTime) ()) : - ((gUseRTC) ? PollRTC() : PollTBR()); - usec1 = (gUseRTC) ? RTCToNano(wide) : WideTo64bit(wide); - - /* Wait for the exact 60th tick to roll over */ - while (tick + 60 > MyLMGetTicks()); - - /* Poll the selected timer again and prepare it */ - wide = (gUpTime) ? (*gA2NS) ((*gUpTime) ()) : - ((gUseRTC) ? PollRTC() : PollTBR()); - usec2 = (gUseRTC) ? RTCToNano(wide) : WideTo64bit(wide); - - /* Calculate a scale value that will give microseconds per second. - Remember, there are actually 60.15 ticks in a second, not 60. */ - gScaleUSec = (60.0 * 1000000.0) / ((usec2 - usec1) * 60.15); - gScaleMSec = gScaleUSec / 1000.0; - } -#endif /* GENERATINGPOWERPC */ - - /* We've initialized our globals */ - gInited = true; - } -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -UInt64 -FastMicroseconds() -{ - UnsignedWide wide; - UInt64 usec; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - wide = PollTBR(); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - wide = PollRTC(); - usec = (double) RTCToNano(wide) * gScaleUSec + 0.5; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - Microseconds(&wide); - usec = WideTo64bit(wide); - } - - return (usec); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -UInt64 -FastMilliseconds() -{ - UnsignedWide wide; - UInt64 msec; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - wide = PollTBR(); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - wide = PollRTC(); - msec = (double) RTCToNano(wide) * gScaleMSec + 0.5; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - Microseconds(&wide); - msec = ((double) WideTo64bit(wide) + 500.0) / 1000.0; - } - - return (msec); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -StringPtr -FastMethod() -{ - StringPtr method = "\p"; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* The Time Manager and UpTime() are entirely native on this machine */ - method = "\pNative UpTime()"; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - method = "\pUpTime()"; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - method = "\pPowerPC TBR"; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - method = "\pPowerPC RTC"; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - method = "\pMicroseconds()"; - } - - return (method); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -#pragma mark - - -#if GENERATINGPOWERPC -asm static UnsignedWide -PollRTC_() -{ - entry PollRTC /* Avoid CodeWarrior glue */ - machine 601 @ AGAIN:mfrtcu r4 /* RTCU = SPR 4 */ - mfrtcl r5 /* RTCL = SPR 5 */ - mfrtcu r6 cmpw r4, r6 bne @ AGAIN stw r4, 0(r3) stw r5, 4(r3) blr} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -asm static UnsignedWide -PollTBR_() -{ - entry PollTBR /* Avoid CodeWarrior glue */ - machine 604 @ AGAIN:mftbu r4 /* TBRU = SPR 268 */ - mftb r5 /* TBRL = SPR 269 */ - mftbu r6 cmpw r4, r6 bne @ AGAIN stw r4, 0(r3) stw r5, 4(r3) blr} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -static Ptr -FindFunctionInSharedLib(StringPtr libName, StringPtr funcName) -{ - OSErr error = noErr; - Str255 errorStr; - Ptr func = NULL; - Ptr entry = NULL; - CFragSymbolClass symClass; - CFragConnectionID connID; - - /* Find CFM containers for the current archecture -- CFM-PPC or CFM-68K */ - if ( /* error = */ GetSharedLibrary(libName, kCompiledCFragArch, - kLoadCFrag, &connID, &entry, - errorStr)) - return (NULL); - if ( /* error = */ FindSymbol(connID, funcName, &func, &symClass)) - return (NULL); - - return (func); -} -#endif /* GENERATINGPOWERPC */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/FastTimes.h b/src/timer/macos/FastTimes.h deleted file mode 100644 index 556eb1307..000000000 --- a/src/timer/macos/FastTimes.h +++ /dev/null @@ -1,28 +0,0 @@ -/* File "FastTimes.h" - Original code by Matt Slot */ -#include "SDL_config.h" -/* Created 4/24/99 - This file is hereby placed in the public domain */ -/* Updated 5/21/99 - Calibrate to VIA, add TBR support, renamed functions */ -/* Updated 10/4/99 - Use AbsoluteToNanoseconds() in case Absolute = double */ -/* Updated 2/15/00 - Check for native Time Manager, no need to calibrate */ -/* Updated 3/21/00 - Fixed ns conversion, create 2 different scale factors */ -/* Updated 5/03/00 - Added copyright and placed into PD. No code changes */ - -/* This file is Copyright (C) Matt Slot, 1999-2000. It is hereby placed into - the public domain. The author makes no warranty as to fitness or stability */ - -#ifndef __FAST_TIMES_HEADER__ -#define __FAST_TIMES_HEADER__ - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -extern void FastInitialize(void); -extern UInt64 FastMicroseconds(void); -extern UInt64 FastMilliseconds(void); -extern StringPtr FastMethod(void); - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -#endif /* __FAST_TIMES_HEADER__ */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/SDL_MPWtimer.c b/src/timer/macos/SDL_MPWtimer.c deleted file mode 100644 index 707edc77a..000000000 --- a/src/timer/macos/SDL_MPWtimer.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_TIMER_MACOS - -#include -#include -#include -#include -#include - -#include - -#include "SDL_timer.h" -#include "../SDL_timer_c.h" - -#define MS_PER_TICK (1000/60) /* MacOS tick = 1/60 second */ - -/* Note: This is only a step above the original 1/60s implementation. - * For a good implementation, see FastTimes.[ch], by Matt Slot. - */ -#define USE_MICROSECONDS -#define WideTo64bit(w) (*(UInt64 *) &(w)) - -UInt64 start; - -void -SDL_StartTicks(void) -{ -#ifdef USE_MICROSECONDS - UnsignedWide now; - - Microseconds(&now); - start = WideTo64bit(now); -#else - /* FIXME: Should we implement a wrapping algorithm, like Win32? */ -#endif -} - -Uint32 -SDL_GetTicks(void) -{ -#ifdef USE_MICROSECONDS - UnsignedWide now; - - Microseconds(&now); - return (Uint32) ((WideTo64bit(now) - start) / 1000); -#else - return (LMGetTicks() * MS_PER_TICK); -#endif -} - -void -SDL_Delay(Uint32 ms) -{ -#ifdef USE_MICROSECONDS - Uint32 end_ms; - - end_ms = SDL_GetTicks() + ms; - do { - /* FIXME: Yield CPU? */ ; - } - while (SDL_GetTicks() < end_ms); -#else - UInt32 unused; /* MJS */ - Delay(ms / MS_PER_TICK, &unused); -#endif -} - - -/* Data to handle a single periodic alarm */ -typedef struct _ExtendedTimerRec -{ - TMTask tmTask; - ProcessSerialNumber taskPSN; -} ExtendedTimerRec, *ExtendedTimerPtr; - -static ExtendedTimerRec gExtendedTimerRec; - - -int -SDL_SYS_TimerInit(void) -{ - /* We don't need a setup? */ - return (0); -} - -void -SDL_SYS_TimerQuit(void) -{ - /* We don't need a cleanup? */ - return; -} - -/* Our Stub routine to set up and then call the real routine. */ -pascal void -TimerCallbackProc(TMTaskPtr tmTaskPtr) -{ - Uint32 ms; - - WakeUpProcess(&((ExtendedTimerPtr) tmTaskPtr)->taskPSN); - - ms = SDL_alarm_callback(SDL_alarm_interval); - if (ms) { - SDL_alarm_interval = ROUND_RESOLUTION(ms); - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - } else { - SDL_alarm_interval = 0; - } -} - -int -SDL_SYS_StartTimer(void) -{ - /* - * Configure the global structure that stores the timing information. - */ - gExtendedTimerRec.tmTask.qLink = NULL; - gExtendedTimerRec.tmTask.qType = 0; - gExtendedTimerRec.tmTask.tmAddr = NewTimerUPP(TimerCallbackProc); - gExtendedTimerRec.tmTask.tmCount = 0; - gExtendedTimerRec.tmTask.tmWakeUp = 0; - gExtendedTimerRec.tmTask.tmReserved = 0; - GetCurrentProcess(&gExtendedTimerRec.taskPSN); - - /* Install the task record */ - InsXTime((QElemPtr) & gExtendedTimerRec.tmTask); - - /* Go! */ - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - return (0); -} - -void -SDL_SYS_StopTimer(void) -{ - RmvTime((QElemPtr) & gExtendedTimerRec.tmTask); -} - -#endif /* SDL_TIMER_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/SDL_systimer.c b/src/timer/macos/SDL_systimer.c deleted file mode 100644 index 54bb2a0ce..000000000 --- a/src/timer/macos/SDL_systimer.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_TIMER_MACOS - -#include -#include -#include -#include -#include - -#include - -#include "SDL_timer.h" -#include "../SDL_timer_c.h" - -#include "FastTimes.h" - -#if TARGET_API_MAC_CARBON -#define NewTimerProc NewTimerUPP -#endif - -#define MS_PER_TICK (1000.0/60.0) /* MacOS tick = 1/60 second */ - - -#define kTwoPower32 (4294967296.0) /* 2^32 */ - -static double start_tick; -static int is_fast_inited = 0; - -void -SDL_StartTicks(void) -{ - if (!is_fast_inited) // important to check or FastTime may hang machine! - SDL_SYS_TimerInit(); - - start_tick = FastMicroseconds(); -} - -Uint32 -SDL_GetTicks(void) -{ - - if (!is_fast_inited) - SDL_SYS_TimerInit(); - - return FastMilliseconds(); -} - -void -SDL_Delay(Uint32 ms) -{ - Uint32 stop, now; - - stop = SDL_GetTicks() + ms; - do { -#if TARGET_API_MAC_CARBON - MPYield(); -#else - SystemTask(); -#endif - - now = SDL_GetTicks(); - - } - while (stop > now); -} - -/* -void SDL_StartTicks(void) -{ - // FIXME: Should we implement a wrapping algorithm, like Win32? -} - -Uint32 SDL_GetTicks(void) -{ - UnsignedWide ms; - - Microseconds (&ms); - - return ( ms.lo / 1000 ); -} - -void SDL_Delay(Uint32 ms) -{ - - UnsignedWide microsecs; - UInt32 stop; - - Microseconds (µsecs); - - stop = microsecs.lo + (ms * 1000); - - while ( stop > microsecs.lo ) { - - SystemTask (); - - Microseconds (µsecs); - } - -}*/ - -/* Data to handle a single periodic alarm */ -typedef struct _ExtendedTimerRec -{ - TMTask tmTask; - ProcessSerialNumber taskPSN; -} ExtendedTimerRec, *ExtendedTimerPtr; - -static ExtendedTimerRec gExtendedTimerRec; - - -int -SDL_SYS_TimerInit(void) -{ - FastInitialize(); - is_fast_inited = 1; - - return (0); -} - -void -SDL_SYS_TimerQuit(void) -{ - /* We don't need a cleanup? */ - return; -} - -/* Our Stub routine to set up and then call the real routine. */ -pascal void -TimerCallbackProc(TMTaskPtr tmTaskPtr) -{ - Uint32 ms; - - WakeUpProcess(&((ExtendedTimerPtr) tmTaskPtr)->taskPSN); - - ms = SDL_alarm_callback(SDL_alarm_interval); - if (ms) { - SDL_alarm_interval = ROUND_RESOLUTION(ms); - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - } else { - SDL_alarm_interval = 0; - } -} - -int -SDL_SYS_StartTimer(void) -{ - /* - * Configure the global structure that stores the timing information. - */ - gExtendedTimerRec.tmTask.qLink = NULL; - gExtendedTimerRec.tmTask.qType = 0; - gExtendedTimerRec.tmTask.tmAddr = NewTimerProc(TimerCallbackProc); - gExtendedTimerRec.tmTask.tmCount = 0; - gExtendedTimerRec.tmTask.tmWakeUp = 0; - gExtendedTimerRec.tmTask.tmReserved = 0; - GetCurrentProcess(&gExtendedTimerRec.taskPSN); - - /* Install the task record */ - InsXTime((QElemPtr) & gExtendedTimerRec.tmTask); - - /* Go! */ - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - return (0); -} - -void -SDL_SYS_StopTimer(void) -{ - RmvTime((QElemPtr) & gExtendedTimerRec.tmTask); -} - -#endif /* SDL_TIMER_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index d56d20ec9..93a8963a7 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -336,12 +336,6 @@ extern VideoBootStrap WIN32_bootstrap; #if SDL_VIDEO_DRIVER_BWINDOW extern VideoBootStrap BWINDOW_bootstrap; #endif -#if SDL_VIDEO_DRIVER_TOOLBOX -extern VideoBootStrap TOOLBOX_bootstrap; -#endif -#if SDL_VIDEO_DRIVER_DRAWSPROCKET -extern VideoBootStrap DSp_bootstrap; -#endif #if SDL_VIDEO_DRIVER_CYBERGRAPHICS extern VideoBootStrap CGX_bootstrap; #endif diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index e959fbaf2..dfeebc91e 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -85,12 +85,6 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_BWINDOW &BWINDOW_bootstrap, #endif -#if SDL_VIDEO_DRIVER_TOOLBOX - &TOOLBOX_bootstrap, -#endif -#if SDL_VIDEO_DRIVER_DRAWSPROCKET - &DSp_bootstrap, -#endif #if SDL_VIDEO_DRIVER_CYBERGRAPHICS &CGX_bootstrap, #endif diff --git a/src/video/maccommon/SDL_lowvideo.h b/src/video/maccommon/SDL_lowvideo.h deleted file mode 100644 index cf5bd50c1..000000000 --- a/src/video/maccommon/SDL_lowvideo.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_lowvideo_h -#define _SDL_lowvideo_h - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#endif - -#if SDL_VIDEO_OPENGL -typedef struct __AGLContextRec *AGLContext; -#endif - -#include "SDL_video.h" -#include "../SDL_sysvideo.h" - -/* Hidden "this" pointer for the video functions */ -#define _THIS SDL_VideoDevice *this - -#if !TARGET_API_MAC_CARBON /* not available in OS X (or more accurately, Carbon) */ -/* Global QuickDraw data */ -extern QDGlobals *theQD; -#endif - -/* Private display data */ -struct SDL_PrivateVideoData -{ - GDevice **SDL_Display; - WindowRef SDL_Window; - SDL_Rect **SDL_modelist; - CTabHandle SDL_CTab; - PaletteHandle SDL_CPal; - -#if TARGET_API_MAC_CARBON - /* For entering and leaving fullscreen mode */ - Ptr fullscreen_ctx; -#endif - - /* The current window document style */ - int current_style; - - /* Information about the last cursor position */ - Point last_where; - - /* Information about the last keys down */ - EventModifiers last_mods; - KeyMap last_keys; - - /* A handle to the Apple Menu */ - MenuRef apple_menu; - - /* Information used by DrawSprocket driver */ - struct DSpInfo *dspinfo; - -#if SDL_VIDEO_OPENGL - AGLContext appleGLContext; - - void *libraryHandle; -#endif -}; -/* Old variable names */ -#define SDL_Display (this->hidden->SDL_Display) -#define SDL_Window (this->hidden->SDL_Window) -#define SDL_modelist (this->hidden->SDL_modelist) -#define SDL_CTab (this->hidden->SDL_CTab) -#define SDL_CPal (this->hidden->SDL_CPal) -#define fullscreen_ctx (this->hidden->fullscreen_ctx) -#define current_style (this->hidden->current_style) -#define last_where (this->hidden->last_where) -#define last_mods (this->hidden->last_mods) -#define last_keys (this->hidden->last_keys) -#define apple_menu (this->hidden->apple_menu) -#define glContext (this->hidden->appleGLContext) - -#endif /* _SDL_lowvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macevents.c b/src/video/maccommon/SDL_macevents.c deleted file mode 100644 index 144f64bba..000000000 --- a/src/video/maccommon/SDL_macevents.c +++ /dev/null @@ -1,778 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#include -#endif - -#include "SDL_events.h" -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../../events/SDL_events_c.h" -#include "../../events/SDL_sysevents.h" -#include "../SDL_cursor_c.h" -#include "SDL_macevents_c.h" -#include "SDL_mackeys.h" -#include "SDL_macmouse_c.h" - -/* Define this to be able to collapse SDL windows. -#define USE_APPEARANCE_MANAGER - */ - -/* Macintosh resource constants */ -#define mApple 128 /* Apple menu resource */ -#define iAbout 1 /* About menu item */ - -/* Functions to handle the About menu */ -static void Mac_DoAppleMenu(_THIS, long item); - -/* The translation table from a macintosh key scancode to a SDL keysym */ -static SDLKey MAC_keymap[256]; -static SDL_keysym *TranslateKey(int scancode, int modifiers, - SDL_keysym * keysym, int pressed); - -/* Handle activation and deactivation -- returns whether an event was posted */ -static int -Mac_HandleActivate(int activate) -{ - if (activate) { - /* Show the current SDL application cursor */ - SDL_SetCursor(NULL); - - /* put our mask back case it changed during context switch */ - SetEventMask(everyEvent & ~autoKeyMask); - } else { -#if TARGET_API_MAC_CARBON - { - Cursor cursor; - SetCursor(GetQDGlobalsArrow(&cursor)); - } -#else - SetCursor(&theQD->arrow); -#endif - if (!Mac_cursor_showing) { - ShowCursor(); - Mac_cursor_showing = 1; - } - } - return (SDL_PrivateAppActive(activate, SDL_APPINPUTFOCUS)); -} - -static void -myGlobalToLocal(_THIS, Point * pt) -{ - if (SDL_VideoSurface && !(SDL_VideoSurface->flags & SDL_FULLSCREEN)) { - GrafPtr saveport; - GetPort(&saveport); -#if TARGET_API_MAC_CARBON - SetPort(GetWindowPort(SDL_Window)); -#else - SetPort(SDL_Window); -#endif - GlobalToLocal(pt); - SetPort(saveport); - } -} - -/* The main MacOS event handler */ -static int -Mac_HandleEvents(_THIS, int wait4it) -{ - static int mouse_button = 1; - int i; - EventRecord event; - -#if TARGET_API_MAC_CARBON - /* There's no GetOSEvent() in the Carbon API. *sigh* */ -#define cooperative_multitasking 1 -#else - int cooperative_multitasking; - /* If we're running fullscreen, we can hog the MacOS events, - otherwise we had better play nicely with the other apps. - */ - if (this->screen && (this->screen->flags & SDL_FULLSCREEN)) { - cooperative_multitasking = 0; - } else { - cooperative_multitasking = 1; - } -#endif - - /* If we call WaitNextEvent(), MacOS will check other processes - * and allow them to run, and perform other high-level processing. - */ - if (cooperative_multitasking || wait4it) { - UInt32 wait_time; - - /* Are we polling or not? */ - if (wait4it) { - wait_time = 2147483647; - } else { - wait_time = 0; - } - WaitNextEvent(everyEvent, &event, wait_time, nil); - } else { -#if ! TARGET_API_MAC_CARBON - GetOSEvent(everyEvent, &event); -#endif - } - -#if TARGET_API_MAC_CARBON - /* for some reason, event.where isn't set ? */ - GetGlobalMouse(&event.where); -#endif - - /* Check for mouse motion */ - if ((event.where.h != last_where.h) || (event.where.v != last_where.v)) { - Point pt; - pt = last_where = event.where; - myGlobalToLocal(this, &pt); - SDL_PrivateMouseMotion(0, 0, pt.h, pt.v); - } - - /* Check the current state of the keyboard */ - if (SDL_GetAppState() & SDL_APPINPUTFOCUS) { - KeyMap keys; - - /* Check for special non-event keys */ - if (event.modifiers != last_mods) { - static struct - { - EventModifiers mask; - SDLKey key; - } mods[] = { - { - alphaLock, SDLK_CAPSLOCK}, -#if 0 /* These are handled below in the GetKeys() code */ - { - cmdKey, SDLK_LMETA}, { - shiftKey, SDLK_LSHIFT}, { - rightShiftKey, SDLK_RSHIFT}, { - optionKey, SDLK_LALT}, { - rightOptionKey, SDLK_RALT}, { - controlKey, SDLK_LCTRL}, { - rightControlKey, SDLK_RCTRL}, -#endif /* 0 */ - { - 0, 0} - }; - SDL_keysym keysym; - Uint8 mode; - EventModifiers mod, mask; - - - /* Set up the keyboard event */ - keysym.scancode = 0; - keysym.sym = SDLK_UNKNOWN; - keysym.mod = KMOD_NONE; - keysym.unicode = 0; - - /* See what has changed, and generate events */ - mod = event.modifiers; - for (i = 0; mods[i].mask; ++i) { - mask = mods[i].mask; - if ((mod & mask) != (last_mods & mask)) { - keysym.sym = mods[i].key; - if ((mod & mask) || (mods[i].key == SDLK_CAPSLOCK)) { - mode = SDL_PRESSED; - } else { - mode = SDL_RELEASED; - } - SDL_PrivateKeyboard(mode, &keysym); - } - } - - /* Save state for next time */ - last_mods = mod; - } - - /* Check for normal event keys, but we have to scan the - actual keyboard state because on Mac OS X a keydown event - is immediately followed by a keyup event. - */ - GetKeys(keys); - if ((keys[0] != last_keys[0]) || (keys[1] != last_keys[1]) || - (keys[2] != last_keys[2]) || (keys[3] != last_keys[3])) { - SDL_keysym keysym; - int old_bit, new_bit; - -#ifdef DEBUG_KEYBOARD - fprintf(sterr, "New keys: 0x%x 0x%x 0x%x 0x%x\n", - new_keys[0], new_keys[1], new_keys[2], new_keys[3]); -#endif - for (i = 0; i < 128; ++i) { - old_bit = (((Uint8 *) last_keys)[i / 8] >> (i % 8)) & 0x01; - new_bit = (((Uint8 *) keys)[i / 8] >> (i % 8)) & 0x01; - if (old_bit != new_bit) { - /* Post the keyboard event */ -#ifdef DEBUG_KEYBOARD - fprintf(stderr, "Scancode: 0x%2.2X\n", i); -#endif - SDL_PrivateKeyboard(new_bit, - TranslateKey(i, - event. - modifiers, - &keysym, new_bit)); - } - } - - /* Save state for next time */ - last_keys[0] = keys[0]; - last_keys[1] = keys[1]; - last_keys[2] = keys[2]; - last_keys[3] = keys[3]; - } - } - - /* Handle normal events */ - switch (event.what) { - case mouseDown: - { - WindowRef win; - short area; - - area = FindWindow(event.where, &win); - /* Support switching between the SIOUX console - and SDL_Window by clicking in the window. - */ - if (win && (win != FrontWindow())) { - SelectWindow(win); - } - switch (area) { - case inMenuBar: /* Only the apple menu exists */ - Mac_DoAppleMenu(this, MenuSelect(event.where)); - HiliteMenu(0); - break; - case inDrag: -#if TARGET_API_MAC_CARBON - DragWindow(win, event.where, NULL); -#else - DragWindow(win, event.where, &theQD->screenBits.bounds); -#endif - break; - case inGoAway: - if (TrackGoAway(win, event.where)) { - SDL_PrivateQuit(); - } - break; - case inContent: - myGlobalToLocal(this, &event.where); - /* Treat command-click as right mouse button */ - if (event.modifiers & optionKey) { - mouse_button = 2; - } else if (event.modifiers & cmdKey) { - mouse_button = 3; - } else { - mouse_button = 1; - } - SDL_PrivateMouseButton(SDL_PRESSED, - mouse_button, event.where.h, - event.where.v); - break; - case inGrow: - { - int newSize; - - /* Don't allow resize if video mode isn't resizable */ - if (!SDL_PublicSurface || - !(SDL_PublicSurface->flags & SDL_RESIZABLE)) { - break; - } -#if TARGET_API_MAC_CARBON - newSize = GrowWindow(win, event.where, NULL); -#else - newSize = - GrowWindow(win, event.where, - &theQD->screenBits.bounds); -#endif - if (newSize) { -#if !TARGET_API_MAC_CARBON - EraseRect(&theQD->screenBits.bounds); -#endif - SizeWindow(win, LoWord(newSize), HiWord(newSize), 1); - SDL_PrivateResize(LoWord(newSize), HiWord(newSize)); - } - } - break; - case inZoomIn: - case inZoomOut: - if (TrackBox(win, event.where, area)) { - Rect rect; -#if !TARGET_API_MAC_CARBON - EraseRect(&theQD->screenBits.bounds); -#endif - ZoomWindow(win, area, 0); - if (area == inZoomIn) { - GetWindowUserState(SDL_Window, &rect); - } else { - GetWindowStandardState(SDL_Window, &rect); - } - SDL_PrivateResize(rect.right - rect.left, - rect.bottom - rect.top); - } - break; -#if TARGET_API_MAC_CARBON - case inCollapseBox: - if (TrackBox(win, event.where, area)) { - if (IsWindowCollapsable(win)) { - CollapseWindow(win, !IsWindowCollapsed(win)); - /* There should be something done like in inGrow case, but... */ - } - } - break; -#endif /* TARGET_API_MAC_CARBON */ - case inSysWindow: -#if TARGET_API_MAC_CARBON - /* Never happens in Carbon? */ -#else - SystemClick(&event, win); -#endif - break; - default: - break; - } - } - break; - case mouseUp: - { - myGlobalToLocal(this, &event.where); - /* Release the mouse button we simulated in the last press. - The drawback of this methos is we cannot press more than - one button. However, this doesn't matter, since there is - only a single logical mouse button, even if you have a - multi-button mouse, this doesn't matter at all. - */ - SDL_PrivateMouseButton(SDL_RELEASED, - mouse_button, event.where.h, - event.where.v); - } - break; -#if 0 /* Handled above the switch statement */ - case keyDown: - { - SDL_keysym keysym; - - SDL_PrivateKeyboard(SDL_PRESSED, - TranslateKey((event. - message & keyCodeMask) >> 8 - event.modifiers, &keysym, 1)); - } - break; - case keyUp: - { - SDL_keysym keysym; - - SDL_PrivateKeyboard(SDL_RELEASED, - TranslateKey((event. - message & keyCodeMask) >> 8 - event.modifiers, &keysym, 0)); - } - break; -#endif - case updateEvt: - { - BeginUpdate(SDL_Window); -#if SDL_VIDEO_OPENGL - if (SDL_VideoSurface->flags & SDL_INTERNALOPENGL) - SDL_GL_SwapBuffers(); - else -#endif - if ((SDL_VideoSurface->flags & SDL_HWSURFACE) == SDL_SWSURFACE) { - SDL_UpdateRect(SDL_VideoSurface, 0, 0, 0, 0); - } - EndUpdate(SDL_Window); - } - /* If this was an update event for the SIOUX console, we return 0 - in order to stop an endless series of updates being triggered. - */ - if ((WindowRef) event.message != SDL_Window) { - return 0; - } - break; - case activateEvt: - { - Mac_HandleActivate(!!(event.modifiers & activeFlag)); - } - break; - case diskEvt: - { -#if TARGET_API_MAC_CARBON - /* What are we supposed to do? */ ; -#else - if (((event.message >> 16) & 0xFFFF) != noErr) { - Point spot; - SetPt(&spot, 0x0070, 0x0050); - DIBadMount(spot, event.message); - } -#endif - } - break; - case osEvt: - { - switch ((event.message >> 24) & 0xFF) { -#if 0 /* Handled above the switch statement */ - case mouseMovedMessage: - { - myGlobalToLocal(this, &event.where); - SDL_PrivateMouseMotion(0, 0, - event.where.h, event.where.v); - } - break; -#endif /* 0 */ - case suspendResumeMessage: - { - Mac_HandleActivate(!!(event.message & resumeFlag)); - } - break; - } - } - break; - default: - { - ; - } - break; - } - return (event.what != nullEvent); -} - - -void -Mac_PumpEvents(_THIS) -{ - /* Process pending MacOS events */ - while (Mac_HandleEvents(this, 0)) { - /* Loop and check again */ ; - } -} - -void -Mac_InitOSKeymap(_THIS) -{ - const void *KCHRPtr; - UInt32 state; - UInt32 value; - int i; - int world = SDLK_WORLD_0; - - /* Map the MAC keysyms */ - for (i = 0; i < SDL_arraysize(MAC_keymap); ++i) - MAC_keymap[i] = SDLK_UNKNOWN; - - /* Defined MAC_* constants */ - MAC_keymap[MK_ESCAPE] = SDLK_ESCAPE; - MAC_keymap[MK_F1] = SDLK_F1; - MAC_keymap[MK_F2] = SDLK_F2; - MAC_keymap[MK_F3] = SDLK_F3; - MAC_keymap[MK_F4] = SDLK_F4; - MAC_keymap[MK_F5] = SDLK_F5; - MAC_keymap[MK_F6] = SDLK_F6; - MAC_keymap[MK_F7] = SDLK_F7; - MAC_keymap[MK_F8] = SDLK_F8; - MAC_keymap[MK_F9] = SDLK_F9; - MAC_keymap[MK_F10] = SDLK_F10; - MAC_keymap[MK_F11] = SDLK_F11; - MAC_keymap[MK_F12] = SDLK_F12; - MAC_keymap[MK_PRINT] = SDLK_PRINT; - MAC_keymap[MK_SCROLLOCK] = SDLK_SCROLLOCK; - MAC_keymap[MK_PAUSE] = SDLK_PAUSE; - MAC_keymap[MK_POWER] = SDLK_POWER; - MAC_keymap[MK_BACKQUOTE] = SDLK_BACKQUOTE; - MAC_keymap[MK_1] = SDLK_1; - MAC_keymap[MK_2] = SDLK_2; - MAC_keymap[MK_3] = SDLK_3; - MAC_keymap[MK_4] = SDLK_4; - MAC_keymap[MK_5] = SDLK_5; - MAC_keymap[MK_6] = SDLK_6; - MAC_keymap[MK_7] = SDLK_7; - MAC_keymap[MK_8] = SDLK_8; - MAC_keymap[MK_9] = SDLK_9; - MAC_keymap[MK_0] = SDLK_0; - MAC_keymap[MK_MINUS] = SDLK_MINUS; - MAC_keymap[MK_EQUALS] = SDLK_EQUALS; - MAC_keymap[MK_BACKSPACE] = SDLK_BACKSPACE; - MAC_keymap[MK_INSERT] = SDLK_INSERT; - MAC_keymap[MK_HOME] = SDLK_HOME; - MAC_keymap[MK_PAGEUP] = SDLK_PAGEUP; - MAC_keymap[MK_NUMLOCK] = SDLK_NUMLOCK; - MAC_keymap[MK_KP_EQUALS] = SDLK_KP_EQUALS; - MAC_keymap[MK_KP_DIVIDE] = SDLK_KP_DIVIDE; - MAC_keymap[MK_KP_MULTIPLY] = SDLK_KP_MULTIPLY; - MAC_keymap[MK_TAB] = SDLK_TAB; - MAC_keymap[MK_q] = SDLK_q; - MAC_keymap[MK_w] = SDLK_w; - MAC_keymap[MK_e] = SDLK_e; - MAC_keymap[MK_r] = SDLK_r; - MAC_keymap[MK_t] = SDLK_t; - MAC_keymap[MK_y] = SDLK_y; - MAC_keymap[MK_u] = SDLK_u; - MAC_keymap[MK_i] = SDLK_i; - MAC_keymap[MK_o] = SDLK_o; - MAC_keymap[MK_p] = SDLK_p; - MAC_keymap[MK_LEFTBRACKET] = SDLK_LEFTBRACKET; - MAC_keymap[MK_RIGHTBRACKET] = SDLK_RIGHTBRACKET; - MAC_keymap[MK_BACKSLASH] = SDLK_BACKSLASH; - MAC_keymap[MK_DELETE] = SDLK_DELETE; - MAC_keymap[MK_END] = SDLK_END; - MAC_keymap[MK_PAGEDOWN] = SDLK_PAGEDOWN; - MAC_keymap[MK_KP7] = SDLK_KP7; - MAC_keymap[MK_KP8] = SDLK_KP8; - MAC_keymap[MK_KP9] = SDLK_KP9; - MAC_keymap[MK_KP_MINUS] = SDLK_KP_MINUS; - MAC_keymap[MK_CAPSLOCK] = SDLK_CAPSLOCK; - MAC_keymap[MK_a] = SDLK_a; - MAC_keymap[MK_s] = SDLK_s; - MAC_keymap[MK_d] = SDLK_d; - MAC_keymap[MK_f] = SDLK_f; - MAC_keymap[MK_g] = SDLK_g; - MAC_keymap[MK_h] = SDLK_h; - MAC_keymap[MK_j] = SDLK_j; - MAC_keymap[MK_k] = SDLK_k; - MAC_keymap[MK_l] = SDLK_l; - MAC_keymap[MK_SEMICOLON] = SDLK_SEMICOLON; - MAC_keymap[MK_QUOTE] = SDLK_QUOTE; - MAC_keymap[MK_RETURN] = SDLK_RETURN; - MAC_keymap[MK_KP4] = SDLK_KP4; - MAC_keymap[MK_KP5] = SDLK_KP5; - MAC_keymap[MK_KP6] = SDLK_KP6; - MAC_keymap[MK_KP_PLUS] = SDLK_KP_PLUS; - MAC_keymap[MK_LSHIFT] = SDLK_LSHIFT; - MAC_keymap[MK_z] = SDLK_z; - MAC_keymap[MK_x] = SDLK_x; - MAC_keymap[MK_c] = SDLK_c; - MAC_keymap[MK_v] = SDLK_v; - MAC_keymap[MK_b] = SDLK_b; - MAC_keymap[MK_n] = SDLK_n; - MAC_keymap[MK_m] = SDLK_m; - MAC_keymap[MK_COMMA] = SDLK_COMMA; - MAC_keymap[MK_PERIOD] = SDLK_PERIOD; - MAC_keymap[MK_SLASH] = SDLK_SLASH; -#if 0 /* These are the same as the left versions - use left by default */ - MAC_keymap[MK_RSHIFT] = SDLK_RSHIFT; -#endif - MAC_keymap[MK_UP] = SDLK_UP; - MAC_keymap[MK_KP1] = SDLK_KP1; - MAC_keymap[MK_KP2] = SDLK_KP2; - MAC_keymap[MK_KP3] = SDLK_KP3; - MAC_keymap[MK_KP_ENTER] = SDLK_KP_ENTER; - MAC_keymap[MK_LCTRL] = SDLK_LCTRL; - MAC_keymap[MK_LALT] = SDLK_LALT; - MAC_keymap[MK_LMETA] = SDLK_LMETA; - MAC_keymap[MK_SPACE] = SDLK_SPACE; -#if 0 /* These are the same as the left versions - use left by default */ - MAC_keymap[MK_RMETA] = SDLK_RMETA; - MAC_keymap[MK_RALT] = SDLK_RALT; - MAC_keymap[MK_RCTRL] = SDLK_RCTRL; -#endif - MAC_keymap[MK_LEFT] = SDLK_LEFT; - MAC_keymap[MK_DOWN] = SDLK_DOWN; - MAC_keymap[MK_RIGHT] = SDLK_RIGHT; - MAC_keymap[MK_KP0] = SDLK_KP0; - MAC_keymap[MK_KP_PERIOD] = SDLK_KP_PERIOD; - -#if defined(__APPLE__) && defined(__MACH__) - /* Wierd, these keys are on my iBook under Mac OS X - Note that the left arrow keysym is the same as left ctrl!? - */ - MAC_keymap[MK_IBOOK_ENTER] = SDLK_KP_ENTER; - MAC_keymap[MK_IBOOK_RIGHT] = SDLK_RIGHT; - MAC_keymap[MK_IBOOK_DOWN] = SDLK_DOWN; - MAC_keymap[MK_IBOOK_UP] = SDLK_UP; - MAC_keymap[MK_IBOOK_LEFT] = SDLK_LEFT; -#endif /* Mac OS X */ - - /* Up there we setup a static scancode->keysym map. However, it will not - * work very well on international keyboard. Hence we now query MacOS - * for its own keymap to adjust our own mapping table. However, this is - * bascially only useful for ascii char keys. This is also the reason - * why we keep the static table, too. - */ - - /* Get a pointer to the systems cached KCHR */ - KCHRPtr = (void *) GetScriptManagerVariable(smKCHRCache); - if (KCHRPtr) { - /* Loop over all 127 possible scan codes */ - for (i = 0; i < 0x7F; i++) { - /* We pretend a clean start to begin with (i.e. no dead keys active */ - state = 0; - - /* Now translate the key code to a key value */ - value = KeyTranslate(KCHRPtr, i, &state) & 0xff; - - /* If the state become 0, it was a dead key. We need to translate again, - passing in the new state, to get the actual key value */ - if (state != 0) - value = KeyTranslate(KCHRPtr, i, &state) & 0xff; - - /* Now we should have an ascii value, or 0. Try to figure out to which SDL symbol it maps */ - if (value >= 128) /* Some non-ASCII char, map it to SDLK_WORLD_* */ - MAC_keymap[i] = world++; - else if (value >= 32) /* non-control ASCII char */ - MAC_keymap[i] = value; - } - } - - /* The keypad codes are re-setup here, because the loop above cannot - * distinguish between a key on the keypad and a regular key. We maybe - * could get around this problem in another fashion: NSEvent's flags - * include a "NSNumericPadKeyMask" bit; we could check that and modify - * the symbol we return on the fly. However, this flag seems to exhibit - * some weird behaviour related to the num lock key - */ - MAC_keymap[MK_KP0] = SDLK_KP0; - MAC_keymap[MK_KP1] = SDLK_KP1; - MAC_keymap[MK_KP2] = SDLK_KP2; - MAC_keymap[MK_KP3] = SDLK_KP3; - MAC_keymap[MK_KP4] = SDLK_KP4; - MAC_keymap[MK_KP5] = SDLK_KP5; - MAC_keymap[MK_KP6] = SDLK_KP6; - MAC_keymap[MK_KP7] = SDLK_KP7; - MAC_keymap[MK_KP8] = SDLK_KP8; - MAC_keymap[MK_KP9] = SDLK_KP9; - MAC_keymap[MK_KP_MINUS] = SDLK_KP_MINUS; - MAC_keymap[MK_KP_PLUS] = SDLK_KP_PLUS; - MAC_keymap[MK_KP_PERIOD] = SDLK_KP_PERIOD; - MAC_keymap[MK_KP_EQUALS] = SDLK_KP_EQUALS; - MAC_keymap[MK_KP_DIVIDE] = SDLK_KP_DIVIDE; - MAC_keymap[MK_KP_MULTIPLY] = SDLK_KP_MULTIPLY; - MAC_keymap[MK_KP_ENTER] = SDLK_KP_ENTER; -} - -static SDL_keysym * -TranslateKey(int scancode, int modifiers, SDL_keysym * keysym, int pressed) -{ - /* Set the keysym information */ - keysym->scancode = scancode; - keysym->sym = MAC_keymap[keysym->scancode]; - keysym->mod = KMOD_NONE; - keysym->unicode = 0; - if (pressed && SDL_TranslateUNICODE) { - static unsigned long state = 0; - static Ptr keymap = nil; - Ptr new_keymap; - - /* Get the current keyboard map resource */ - new_keymap = (Ptr) GetScriptManagerVariable(smKCHRCache); - if (new_keymap != keymap) { - keymap = new_keymap; - state = 0; - } - keysym->unicode = KeyTranslate(keymap, - keysym->scancode | modifiers, - &state) & 0xFFFF; - } - return (keysym); -} - -void -Mac_InitEvents(_THIS) -{ - /* Create apple menu bar */ - apple_menu = GetMenu(mApple); - if (apple_menu != nil) { - AppendResMenu(apple_menu, 'DRVR'); - InsertMenu(apple_menu, 0); - } - DrawMenuBar(); - - /* Get rid of spurious events at startup */ - FlushEvents(everyEvent, 0); - - /* Allow every event but keyrepeat */ - SetEventMask(everyEvent & ~autoKeyMask); -} - -void -Mac_QuitEvents(_THIS) -{ - ClearMenuBar(); - if (apple_menu != nil) { - ReleaseResource((char **) apple_menu); - } - - /* Clean up pending events */ - FlushEvents(everyEvent, 0); -} - -static void -Mac_DoAppleMenu(_THIS, long choice) -{ -#if !TARGET_API_MAC_CARBON /* No Apple menu in OS X */ - short menu, item; - - item = (choice & 0xFFFF); - choice >>= 16; - menu = (choice & 0xFFFF); - - switch (menu) { - case mApple: - { - switch (item) { - case iAbout: - { - /* Run the about box */ ; - } - break; - default: - { - Str255 name; - - GetMenuItemText(apple_menu, item, name); - OpenDeskAcc(name); - } - break; - } - } - break; - default: - { - /* Ignore other menus */ ; - } - } -#endif /* !TARGET_API_MAC_CARBON */ -} - -#if !TARGET_API_MAC_CARBON -/* Since we don't initialize QuickDraw, we need to get a pointer to qd */ -QDGlobals *theQD = NULL; -#endif - -/* Exported to the macmain code */ -void -SDL_InitQuickDraw(struct QDGlobals *the_qd) -{ -#if !TARGET_API_MAC_CARBON - theQD = the_qd; -#endif -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macevents_c.h b/src/video/maccommon/SDL_macevents_c.h deleted file mode 100644 index 8f7835e92..000000000 --- a/src/video/maccommon/SDL_macevents_c.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions exported by SDL_macevents.c for the video subsystem -*/ -extern void Mac_InitEvents(_THIS); -extern void Mac_QuitEvents(_THIS); - -extern void Mac_InitOSKeymap(_THIS); -extern void Mac_PumpEvents(_THIS); -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macgl.c b/src/video/maccommon/SDL_macgl.c deleted file mode 100644 index 8153bbbe8..000000000 --- a/src/video/maccommon/SDL_macgl.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* AGL implementation of SDL OpenGL support */ - -#include "SDL_lowvideo.h" -#include "SDL_macgl_c.h" -#include "SDL_loadso.h" - - -/* krat: adding OpenGL support */ -int -Mac_GL_Init(_THIS) -{ -#if SDL_VIDEO_OPENGL - AGLPixelFormat format; - int i = 0; - GLint attributes[26]; /* 26 is max possible in this setup */ - GLboolean noerr; - - /* load the gl driver from a default path */ - if (!this->gl_config.driver_loaded) { - /* no driver has been loaded, use default (ourselves) */ - if (Mac_GL_LoadLibrary(this, NULL) < 0) { - return (-1); - } - } - - attributes[i++] = AGL_RGBA; - if (this->gl_config.red_size != 0 && - this->gl_config.blue_size != 0 && this->gl_config.green_size != 0) { - attributes[i++] = AGL_RED_SIZE; - attributes[i++] = this->gl_config.red_size; - attributes[i++] = AGL_GREEN_SIZE; - attributes[i++] = this->gl_config.green_size; - attributes[i++] = AGL_BLUE_SIZE; - attributes[i++] = this->gl_config.blue_size; - attributes[i++] = AGL_ALPHA_SIZE; - attributes[i++] = this->gl_config.alpha_size; - } - if (this->gl_config.double_buffer) { - attributes[i++] = AGL_DOUBLEBUFFER; - } - if (this->gl_config.depth_size != 0) { - attributes[i++] = AGL_DEPTH_SIZE; - attributes[i++] = this->gl_config.depth_size; - } - if (this->gl_config.stencil_size != 0) { - attributes[i++] = AGL_STENCIL_SIZE; - attributes[i++] = this->gl_config.stencil_size; - } - if (this->gl_config.accum_red_size != 0 && - this->gl_config.accum_blue_size != 0 && - this->gl_config.accum_green_size != 0) { - - attributes[i++] = AGL_ACCUM_RED_SIZE; - attributes[i++] = this->gl_config.accum_red_size; - attributes[i++] = AGL_ACCUM_GREEN_SIZE; - attributes[i++] = this->gl_config.accum_green_size; - attributes[i++] = AGL_ACCUM_BLUE_SIZE; - attributes[i++] = this->gl_config.accum_blue_size; - attributes[i++] = AGL_ACCUM_ALPHA_SIZE; - attributes[i++] = this->gl_config.accum_alpha_size; - } - if (this->gl_config.stereo) { - attributes[i++] = AGL_STEREO; - } -#if defined(AGL_SAMPLE_BUFFERS_ARB) && defined(AGL_SAMPLES_ARB) - if (this->gl_config.multisamplebuffers != 0) { - attributes[i++] = AGL_SAMPLE_BUFFERS_ARB; - attributes[i++] = this->gl_config.multisamplebuffers; - } - if (this->gl_config.multisamplesamples != 0) { - attributes[i++] = AGL_SAMPLES_ARB; - attributes[i++] = this->gl_config.multisamplesamples; - } -#endif - if (this->gl_config.accelerated > 0) { - attributes[i++] = AGL_ACCELERATED; - attributes[i++] = AGL_NO_RECOVERY; - } - - attributes[i++] = AGL_ALL_RENDERERS; - attributes[i] = AGL_NONE; - - format = aglChoosePixelFormat(NULL, 0, attributes); - if (format == NULL) { - SDL_SetError("Couldn't match OpenGL desired format"); - return (-1); - } - - glContext = aglCreateContext(format, NULL); - if (glContext == NULL) { - SDL_SetError("Couldn't create OpenGL context"); - return (-1); - } - aglDestroyPixelFormat(format); - -#if TARGET_API_MAC_CARBON - noerr = aglSetDrawable(glContext, GetWindowPort(SDL_Window)); -#else - noerr = aglSetDrawable(glContext, (AGLDrawable) SDL_Window); -#endif - - if (!noerr) { - SDL_SetError("Unable to bind GL context to window"); - return (-1); - } - return (0); -#else - SDL_SetError("OpenGL support not configured"); - return (-1); -#endif -} - -void -Mac_GL_Quit(_THIS) -{ -#if SDL_VIDEO_OPENGL - if (glContext != NULL) { - aglSetCurrentContext(NULL); - aglSetDrawable(glContext, NULL); - aglDestroyContext(glContext); - glContext = NULL; - } -#endif -} - -#if SDL_VIDEO_OPENGL - -/* Make the current context active */ -int -Mac_GL_MakeCurrent(_THIS) -{ - int retval; - - retval = 0; - if (!aglSetCurrentContext(glContext)) { - SDL_SetError("Unable to make GL context current"); - retval = -1; - } - return (retval); -} - -void -Mac_GL_SwapBuffers(_THIS) -{ - aglSwapBuffers(glContext); -} - -int -Mac_GL_LoadLibrary(_THIS, const char *location) -{ - if (location == NULL) -#if __MACH__ - location = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; -#else - location = "OpenGLLibrary"; -#endif - - this->hidden->libraryHandle = SDL_LoadObject(location); - - this->gl_config.driver_loaded = 1; - return (this->hidden->libraryHandle != NULL) ? 0 : -1; -} - -void -Mac_GL_UnloadLibrary(_THIS) -{ - SDL_UnloadObject(this->hidden->libraryHandle); - - this->hidden->libraryHandle = NULL; - this->gl_config.driver_loaded = 0; -} - -void * -Mac_GL_GetProcAddress(_THIS, const char *proc) -{ - return SDL_LoadFunction(this->hidden->libraryHandle, proc); -} - -#endif /* SDL_VIDEO_OPENGL */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macgl_c.h b/src/video/maccommon/SDL_macgl_c.h deleted file mode 100644 index c8d115c4a..000000000 --- a/src/video/maccommon/SDL_macgl_c.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* AGL implementation of SDL OpenGL support */ - -#include "SDL_config.h" - -#if SDL_VIDEO_OPENGL -#include "SDL_opengl.h" -#if __MACOSX__ -#include /* AGL.framework */ -#else -#include -#endif -#endif /* SDL_VIDEO_OPENGL */ - -/* OpenGL functions */ -extern int Mac_GL_Init(_THIS); -extern void Mac_GL_Quit(_THIS); -#if SDL_VIDEO_OPENGL -extern int Mac_GL_MakeCurrent(_THIS); -extern int Mac_GL_GetAttribute(_THIS, SDL_GLattr attrib, int *value); -extern void Mac_GL_SwapBuffers(_THIS); -extern int Mac_GL_LoadLibrary(_THIS, const char *location); -extern void Mac_GL_UnloadLibrary(_THIS); -extern void *Mac_GL_GetProcAddress(_THIS, const char *proc); -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_mackeys.h b/src/video/maccommon/SDL_mackeys.h deleted file mode 100644 index 6c00d974a..000000000 --- a/src/video/maccommon/SDL_mackeys.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* These are the Macintosh key scancode constants -- from Inside Macintosh */ - -#define MK_ESCAPE 0x35 -#define MK_F1 0x7A -#define MK_F2 0x78 -#define MK_F3 0x63 -#define MK_F4 0x76 -#define MK_F5 0x60 -#define MK_F6 0x61 -#define MK_F7 0x62 -#define MK_F8 0x64 -#define MK_F9 0x65 -#define MK_F10 0x6D -#define MK_F11 0x67 -#define MK_F12 0x6F -#define MK_PRINT 0x69 -#define MK_SCROLLOCK 0x6B -#define MK_PAUSE 0x71 -#define MK_POWER 0x7F -#define MK_BACKQUOTE 0x32 -#define MK_1 0x12 -#define MK_2 0x13 -#define MK_3 0x14 -#define MK_4 0x15 -#define MK_5 0x17 -#define MK_6 0x16 -#define MK_7 0x1A -#define MK_8 0x1C -#define MK_9 0x19 -#define MK_0 0x1D -#define MK_MINUS 0x1B -#define MK_EQUALS 0x18 -#define MK_BACKSPACE 0x33 -#define MK_INSERT 0x72 -#define MK_HOME 0x73 -#define MK_PAGEUP 0x74 -#define MK_NUMLOCK 0x47 -#define MK_KP_EQUALS 0x51 -#define MK_KP_DIVIDE 0x4B -#define MK_KP_MULTIPLY 0x43 -#define MK_TAB 0x30 -#define MK_q 0x0C -#define MK_w 0x0D -#define MK_e 0x0E -#define MK_r 0x0F -#define MK_t 0x11 -#define MK_y 0x10 -#define MK_u 0x20 -#define MK_i 0x22 -#define MK_o 0x1F -#define MK_p 0x23 -#define MK_LEFTBRACKET 0x21 -#define MK_RIGHTBRACKET 0x1E -#define MK_BACKSLASH 0x2A -#define MK_DELETE 0x75 -#define MK_END 0x77 -#define MK_PAGEDOWN 0x79 -#define MK_KP7 0x59 -#define MK_KP8 0x5B -#define MK_KP9 0x5C -#define MK_KP_MINUS 0x4E -#define MK_CAPSLOCK 0x39 -#define MK_a 0x00 -#define MK_s 0x01 -#define MK_d 0x02 -#define MK_f 0x03 -#define MK_g 0x05 -#define MK_h 0x04 -#define MK_j 0x26 -#define MK_k 0x28 -#define MK_l 0x25 -#define MK_SEMICOLON 0x29 -#define MK_QUOTE 0x27 -#define MK_RETURN 0x24 -#define MK_KP4 0x56 -#define MK_KP5 0x57 -#define MK_KP6 0x58 -#define MK_KP_PLUS 0x45 -#define MK_LSHIFT 0x38 -#define MK_z 0x06 -#define MK_x 0x07 -#define MK_c 0x08 -#define MK_v 0x09 -#define MK_b 0x0B -#define MK_n 0x2D -#define MK_m 0x2E -#define MK_COMMA 0x2B -#define MK_PERIOD 0x2F -#define MK_SLASH 0x2C -#if 0 /* These are the same as the left versions - use left by default */ -#define MK_RSHIFT 0x38 -#endif -#define MK_UP 0x7E -#define MK_KP1 0x53 -#define MK_KP2 0x54 -#define MK_KP3 0x55 -#define MK_KP_ENTER 0x4C -#define MK_LCTRL 0x3B -#define MK_LALT 0x3A -#define MK_LMETA 0x37 -#define MK_SPACE 0x31 -#if 0 /* These are the same as the left versions - use left by default */ -#define MK_RMETA 0x37 -#define MK_RALT 0x3A -#define MK_RCTRL 0x3B -#endif -#define MK_LEFT 0x7B -#define MK_DOWN 0x7D -#define MK_RIGHT 0x7C -#define MK_KP0 0x52 -#define MK_KP_PERIOD 0x41 - -/* Wierd, these keys are on my iBook under Mac OS X */ -#define MK_IBOOK_ENTER 0x34 -#define MK_IBOOK_LEFT 0x3B -#define MK_IBOOK_RIGHT 0x3C -#define MK_IBOOK_DOWN 0x3D -#define MK_IBOOK_UP 0x3E -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macmouse.c b/src/video/maccommon/SDL_macmouse.c deleted file mode 100644 index 6d9a8b758..000000000 --- a/src/video/maccommon/SDL_macmouse.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#endif - -/* Routines that are not supported by the Carbon API... */ -#if !TARGET_API_MAC_CARBON -#include -#endif - -#include "SDL_mouse.h" -#include "SDL_macmouse_c.h" - - -/* The implementation dependent data for the window manager cursor */ -struct WMcursor -{ - Cursor curs; -}; - - -void -Mac_FreeWMCursor(_THIS, WMcursor * cursor) -{ - SDL_free(cursor); -} - -WMcursor * -Mac_CreateWMCursor(_THIS, - Uint8 * data, Uint8 * mask, int w, int h, int hot_x, - int hot_y) -{ - WMcursor *cursor; - int row, bytes; - - /* Allocate the cursor memory */ - cursor = (WMcursor *) SDL_malloc(sizeof(WMcursor)); - if (cursor == NULL) { - SDL_OutOfMemory(); - return (NULL); - } - SDL_memset(cursor, 0, sizeof(*cursor)); - - if (w > 16) - w = 16; - - if (h > 16) - h = 16; - - bytes = (w + 7) / 8; - - for (row = 0; row < h; ++row) { - SDL_memcpy(&cursor->curs.data[row], data, bytes); - data += bytes; - } - for (row = 0; row < h; ++row) { - SDL_memcpy(&cursor->curs.mask[row], mask, bytes); - mask += bytes; - } - cursor->curs.hotSpot.h = hot_x; - cursor->curs.hotSpot.v = hot_y; - - /* That was easy. :) */ - return (cursor); -} - -int Mac_cursor_showing = 1; - -int -Mac_ShowWMCursor(_THIS, WMcursor * cursor) -{ - if (cursor == NULL) { - if (Mac_cursor_showing) { - HideCursor(); - Mac_cursor_showing = 0; - } - } else { - SetCursor(&cursor->curs); - if (!Mac_cursor_showing) { - ShowCursor(); - Mac_cursor_showing = 1; - } - } - return (1); -} - -void -Mac_WarpWMCursor(_THIS, Uint16 x, Uint16 y) -{ -#if !TARGET_API_MAC_CARBON - CursorDevice *cursordevice; - - cursordevice = nil; - CursorDeviceNextDevice(&cursordevice); - if (cursordevice != nil) { - WindowPtr saveport; - Point where; - - GetPort(&saveport); - SetPort(SDL_Window); - where.h = x; - where.v = y; - LocalToGlobal(&where); - SetPort(saveport); - CursorDeviceMoveTo(cursordevice, where.h, where.v); - } -#endif /* !TARGET_API_MAC_CARBON */ -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macmouse_c.h b/src/video/maccommon/SDL_macmouse_c.h deleted file mode 100644 index b1f57da22..000000000 --- a/src/video/maccommon/SDL_macmouse_c.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions to be exported */ -extern void Mac_FreeWMCursor(_THIS, WMcursor * cursor); -extern WMcursor *Mac_CreateWMCursor(_THIS, - Uint8 * data, Uint8 * mask, int w, int h, - int hot_x, int hot_y); -extern int Mac_ShowWMCursor(_THIS, WMcursor * cursor); -extern void Mac_WarpWMCursor(_THIS, Uint16 x, Uint16 y); - -/* Data to be exported */ -extern int Mac_cursor_showing; -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macwm.c b/src/video/maccommon/SDL_macwm.c deleted file mode 100644 index 7d0b33342..000000000 --- a/src/video/maccommon/SDL_macwm.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#endif - -#include "SDL_stdinc.h" -#include "SDL_macwm_c.h" - -void -Mac_SetCaption(_THIS, const char *title, const char *icon) -{ - /* Don't convert C to P string in place, because it may be read-only */ - Str255 ptitle; /* MJS */ - ptitle[0] = strlen(title); - SDL_memcpy(ptitle + 1, title, ptitle[0]); /* MJS */ - if (SDL_Window) - SetWTitle(SDL_Window, ptitle); /* MJS */ -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macwm_c.h b/src/video/maccommon/SDL_macwm_c.h deleted file mode 100644 index acb37535e..000000000 --- a/src/video/maccommon/SDL_macwm_c.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions to be exported */ -extern void Mac_SetCaption(_THIS, const char *title, const char *icon); -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macdsp/SDL_dspvideo.c b/src/video/macdsp/SDL_dspvideo.c deleted file mode 100644 index 395fef41c..000000000 --- a/src/video/macdsp/SDL_dspvideo.c +++ /dev/null @@ -1,1480 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* - Written by Darrell Walisser - - Implementation notes ---------------------------------------------------------------------- - - A bit on GWorlds in VRAM from technote 1182: - - There are two important things to note about GWorld's allocated in - VRAM. First, the base address retrieved through GetPixBaseAddr or - read directly from the PixMap structure can become invalid anytime - memory is allocated in VRAM. This can occur either by explicit - allocations, such as calls to NewGWorld, or by implicit ones, such as - those associated with the internal texture allocation of OpenGL. The - stored pixel images themselves will still be valid but may have been - moved in VRAM, thus rendering any stored base addresses invalid. - You should never store an image's base address for longer than is - necessary and especially never across calls to NewGWorld or - texture-creation routines. - - Secondly, an offscreen pixel image allocated in VRAM can be - purged at system task time by the display driver. This means any - time your application yields time such by calling WaitNextEvent or - SystemTask you can lose your VRAM GWorld contents. While this - happens infrequently, usually associated with display resolution or - pixel depth changes you must code for this eventuality. This purge - can occur whether or not the GWorld is locked or not. A return value - of false from LockPixels, a NULL return value from GetPixBaseAddr - or NULL in the baseAddr field of the PixMap mean that the pixel - image has been purged. To reallocate it you can either call - UpdateGWorld or Dispose your current GWorld through - DisposeGWorld and reallocate it via NewGWorld. Either way you must - then rebuild the pixel image. - ------------------------------------------------------------------------------------- - - Currently, I don't account for (1). In my testing, NewGWorld never invalidated - other existing GWorlds in VRAM. However, I do have protection for (2). - Namely, I am using GetOSEvent() instead of WaitNextEvent() so that there are no - context switches (the app hogs the CPU). Eventually a book-keeping system should - be coded to take care of (1) and (2). - ------------------------------------------------------------------------------------- - - System requirements (* denotes optional): - - 1. DrawSprocket 1.7.3 - 2. *MacOS 9 or later (but *not* Mac OS X) for hardware accelerated blit / fill - 3. *May also require certain graphics hardware for (2). I trust that all Apple OEM - hardware will work. Third party accelerators may work if they have QuickDraw - acceleration in the drivers and the drivers have been updated for OS 9. The current - Voodoo 3 drivers (1.0b12) do not work. - - Coding suggestions: - - 1. Use SDL_UpdateRects ! - - If no QuickDraw acceleration is present, double-buffered surfaces will use a back buffer - in System memory. I recommend you use SDL_UpdateRects with double-buffered surfaces - for best performance on these cards, since the overhead is nearly zero for VRAM back buffer. - - 2. Load most-resident surfaces first. - - If you fill up VRAM or AGP memory, there is no contingency for purging to make room for the next one. - Therefore, you should load the surfaces you plan to use the most frequently first. - Sooner or later, I will code LRU replacement to help this. - - TODO: - Some kind of posterized mode for resolutions < 640x480. - Window support / fullscreen toggle. - Figure out how much VRAM is available. Put in video->info->video_mem. - Track VRAM usage. - - BUGS: - I can't create a hardware surface the same size as the screen?! How to fix? - - - - COMPILE OPTIONS: - - DSP_TRY_CC_AND_AA - Define if you want to try HWA color-key and alpha blitters - HW color-key blitting gives substantial improvements, - but hw alpha is neck-and-neck with SDL's soft bitter. - - DSP_NO_SYNC_VBL - Define for HWA double-buffered surfaces: don't sync - pseudo-flip to monitor redraw. - - DSP_NO_SYNC_OPENGL - Define for OpenGL surfaces: don't sync buffer swap. Synching buffer - swap may result in reduced performance, but can eliminate some - tearing artifacts. - CHANGELOG: - 09/17/00 Lots of little tweaks. Build modelist in reverse order so largest contexts - list first. Compared various methods with ROM methods and fixed rez switch - crashing bug in GL Tron. (Woohoo!) -*/ - -#define DSP_TRY_CC_AND_AA - -/* #define DSP_NO_SYNC_VBL */ - -#define DSP_NO_SYNC_OPENGL - - -#if defined(__APPLE__) && defined(__MACH__) -#include -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#include -#else -#include -#include -#include -#include -#include -#include -#endif - -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../SDL_sysvideo.h" -#include "../SDL_blit.h" -#include "../SDL_pixels_c.h" -#include "SDL_dspvideo.h" -#include "../maccommon/SDL_macgl_c.h" -#include "../maccommon/SDL_macwm_c.h" -#include "../maccommon/SDL_macmouse_c.h" -#include "../maccommon/SDL_macevents_c.h" - -/* Initialization/Query functions */ -static int DSp_VideoInit(_THIS, SDL_PixelFormat * vformat); -static SDL_Rect **DSp_ListModes(_THIS, SDL_PixelFormat * format, - Uint32 flags); -static SDL_Surface *DSp_SetVideoMode(_THIS, SDL_Surface * current, int width, - int height, int bpp, Uint32 flags); -static int DSp_SetColors(_THIS, int firstcolor, int ncolors, - SDL_Color * colors); -static int DSp_CreatePalette(_THIS); -static int DSp_DestroyPalette(_THIS); -static void DSp_VideoQuit(_THIS); - -static int DSp_GetMainDevice(_THIS, GDHandle * device); -static void DSp_IsHWAvailable(_THIS, SDL_PixelFormat * vformat); -static void DSp_DSpUpdate(_THIS, int numrects, SDL_Rect * sdl_rects); -static void DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * sdl_rects); - -/* Hardware surface functions */ -static int DSp_SetHWAlpha(_THIS, SDL_Surface * surface, UInt8 alpha); -static int DSp_SetHWColorKey(_THIS, SDL_Surface * surface, Uint32 key); -static int DSp_NewHWSurface(_THIS, CGrafPtr * port, int depth, int width, - int height); -static int DSp_AllocHWSurface(_THIS, SDL_Surface * surface); -static int DSp_LockHWSurface(_THIS, SDL_Surface * surface); -static void DSp_UnlockHWSurface(_THIS, SDL_Surface * surface); -static void DSp_FreeHWSurface(_THIS, SDL_Surface * surface); -static int DSp_FlipHWSurface(_THIS, SDL_Surface * surface); -static int DSp_CheckHWBlit(_THIS, SDL_Surface * src, SDL_Surface * dest); -static int DSp_HWAccelBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect); -static int DSp_FillHWRect(_THIS, SDL_Surface * dst, SDL_Rect * rect, - Uint32 color); - -#if SDL_VIDEO_OPENGL -static void DSp_GL_SwapBuffers(_THIS); -#endif - -#if ! TARGET_API_MAC_CARBON - -#define GetPortPixRowBytes(x) ( (*(x->portPixMap))->rowBytes ) -#define GetGDevPixMap(x) ((**(x)).gdPMap) -#define GetPortPixMap(x) ((*(x)).portPixMap) - -#define GetPixDepth(y) ((**(y)).pixelSize) - //#define GetPixRowBytes(y) ((**(y)).rowBytes) - //#define GetPixBaseAddr(y) ((**(y)).baseAddr) -#define GetPixCTab(y) ((**(y)).pmTable) -#define GetPortBitMapForCopyBits(x) (&(((GrafPtr)(x))->portBits)) - -#else -#define GetPortPixRowBytes(x) (GetPixRowBytes(GetPortPixMap(x)) ) -#define GetGDevPixMap(x) ((**(x)).gdPMap) - -#endif - -typedef struct private_hwdata -{ - - GWorldPtr offscreen; // offscreen gworld in VRAM or AGP - -#ifdef DSP_TRY_CC_AND_AA - GWorldPtr mask; // transparent mask - RGBColor alpha; // alpha color - RGBColor trans; // transparent color -#endif - -} private_hwdata; - -typedef private_hwdata private_swdata; /* have same fields */ - -/* Macintosh toolbox driver bootstrap functions */ - -static int -DSp_Available(void) -{ - /* Check for DrawSprocket */ -#if ! TARGET_API_MAC_OSX - /* This check is only meaningful if you weak-link DrawSprocketLib */ - return ((Ptr) DSpStartup != (Ptr) kUnresolvedCFragSymbolAddress); -#else - return 1; // DrawSprocket.framework doesn't have it all, but it's there -#endif -} - -static void -DSp_DeleteDevice(SDL_VideoDevice * device) -{ - /* -dw- taking no chances with null pointers */ - if (device) { - - if (device->hidden) { - - if (device->hidden->dspinfo) - SDL_free(device->hidden->dspinfo); - - SDL_free(device->hidden); - } - SDL_free(device); - } -} - -static SDL_VideoDevice * -DSp_CreateDevice(int devindex) -{ - SDL_VideoDevice *device; - - /* Initialize all variables that we clean on shutdown */ - device = (SDL_VideoDevice *) SDL_malloc(sizeof(SDL_VideoDevice)); - if (device) { - SDL_memset(device, 0, sizeof(*device)); - device->hidden = (struct SDL_PrivateVideoData *) - SDL_malloc((sizeof *device->hidden)); - if (device->hidden) - SDL_memset(device->hidden, 0, sizeof(*(device->hidden))); - } - if ((device == NULL) || (device->hidden == NULL)) { - SDL_OutOfMemory(); - - if (device) { - - if (device->hidden) - SDL_free(device->hidden); - - SDL_free(device); - } - - return (NULL); - } - - /* Allocate DrawSprocket information */ - device->hidden->dspinfo = (struct DSpInfo *) SDL_malloc((sizeof *device-> - hidden-> - dspinfo)); - if (device->hidden->dspinfo == NULL) { - SDL_OutOfMemory(); - SDL_free(device->hidden); - SDL_free(device); - return (0); - } - SDL_memset(device->hidden->dspinfo, 0, (sizeof *device->hidden->dspinfo)); - - /* Set the function pointers */ - device->VideoInit = DSp_VideoInit; - device->ListModes = DSp_ListModes; - device->SetVideoMode = DSp_SetVideoMode; - device->SetColors = DSp_SetColors; - device->UpdateRects = NULL; - device->VideoQuit = DSp_VideoQuit; - device->AllocHWSurface = DSp_AllocHWSurface; - device->CheckHWBlit = NULL; - device->FillHWRect = NULL; - device->SetHWColorKey = NULL; - device->SetHWAlpha = NULL; - device->LockHWSurface = DSp_LockHWSurface; - device->UnlockHWSurface = DSp_UnlockHWSurface; - device->FlipHWSurface = DSp_FlipHWSurface; - device->FreeHWSurface = DSp_FreeHWSurface; -#if SDL_VIDEO_OPENGL - device->GL_MakeCurrent = Mac_GL_MakeCurrent; - device->GL_SwapBuffers = DSp_GL_SwapBuffers; - device->GL_LoadLibrary = Mac_GL_LoadLibrary; - device->GL_GetProcAddress = Mac_GL_GetProcAddress; -#endif - device->SetCaption = NULL; - device->SetIcon = NULL; - device->IconifyWindow = NULL; - device->GrabInput = NULL; - device->GetWMInfo = NULL; - device->FreeWMCursor = Mac_FreeWMCursor; - device->CreateWMCursor = Mac_CreateWMCursor; - device->ShowWMCursor = Mac_ShowWMCursor; - device->WarpWMCursor = Mac_WarpWMCursor; - device->InitOSKeymap = Mac_InitOSKeymap; - device->PumpEvents = Mac_PumpEvents; - - device->GrabInput = NULL; - device->CheckMouseMode = NULL; - - device->free = DSp_DeleteDevice; - - return device; -} - -VideoBootStrap DSp_bootstrap = { - "DSp", "MacOS DrawSprocket", - DSp_Available, DSp_CreateDevice -}; - -/* Use DSp/Display Manager to build mode list for given screen */ -static SDL_Rect ** -DSp_BuildModeList(const GDHandle gDevice, int *displayWidth, - int *displayHeight) -{ - DSpContextAttributes attributes; - DSpContextReference context; - DisplayIDType displayID; - SDL_Rect temp_list[16]; - SDL_Rect **mode_list; - int width, height, i, j; - -#if TARGET_API_MAC_OSX - - displayID = 0; - -#else - /* Ask Display Manager for integer id of screen device */ - if (DMGetDisplayIDByGDevice(gDevice, &displayID, SDL_TRUE) != noErr) { - return NULL; - } -#endif - /* Get the first possible DSp context on this device */ - if (DSpGetFirstContext(displayID, &context) != noErr) { - return NULL; - } - - if (DSpContext_GetAttributes(context, &attributes) != noErr) - return NULL; - - *displayWidth = attributes.displayWidth; - *displayHeight = attributes.displayHeight; - - for (i = 0; i < SDL_arraysize(temp_list); i++) { - width = attributes.displayWidth; - height = attributes.displayHeight; - - temp_list[i].x = 0 | attributes.displayBestDepth; - temp_list[i].y = 0; - temp_list[i].w = width; - temp_list[i].h = height; - - /* DSp will report many different contexts with the same width and height. */ - /* They will differ in bit depth and refresh rate. */ - /* We will ignore them until we reach one with a different width/height */ - /* When there are no more contexts to look at, we will quit building the list */ - while (width == attributes.displayWidth - && height == attributes.displayHeight) { - - OSStatus err = DSpGetNextContext(context, &context); - if (err != noErr) - if (err == kDSpContextNotFoundErr) - goto done; - else - return NULL; - - if (DSpContext_GetAttributes(context, &attributes) != noErr) - return NULL; - - temp_list[i].x |= attributes.displayBestDepth; - } - } - done: - i++; /* i was not incremented before kicking out of the loop */ - - mode_list = (SDL_Rect **) SDL_malloc(sizeof(SDL_Rect *) * (i + 1)); - if (mode_list) { - - /* -dw- new stuff: build in reverse order so largest sizes list first */ - for (j = i - 1; j >= 0; j--) { - mode_list[j] = (SDL_Rect *) SDL_malloc(sizeof(SDL_Rect)); - if (mode_list[j]) - SDL_memcpy(mode_list[j], &(temp_list[j]), sizeof(SDL_Rect)); - else { - SDL_OutOfMemory(); - return NULL; - } - } - mode_list[i] = NULL; /* append null to the end */ - } else { - SDL_OutOfMemory(); - return NULL; - } - - return mode_list; -} - -static void -DSp_IsHWAvailable(_THIS, SDL_PixelFormat * vformat) -{ - /* - VRAM GWorlds are only available on OS 9 or later. - Even with OS 9, some display drivers won't support it, - so we create a test GWorld and check for errors. - */ - - long versionSystem; - - dsp_vram_available = SDL_FALSE; - dsp_agp_available = SDL_FALSE; - - Gestalt('sysv', &versionSystem); - if (0x00000860 < (versionSystem & 0x0000FFFF)) { - - GWorldPtr offscreen; - OSStatus err; - Rect bounds; - - SetRect(&bounds, 0, 0, 320, 240); - -#if useDistantHdwrMem && useLocalHdwrMem - err = - NewGWorld(&offscreen, vformat->BitsPerPixel, &bounds, NULL, - SDL_Display, useDistantHdwrMem | noNewDevice); - if (err == noErr) { - dsp_vram_available = SDL_TRUE; - DisposeGWorld(offscreen); - } - - err = - NewGWorld(&offscreen, vformat->BitsPerPixel, &bounds, NULL, - SDL_Display, useLocalHdwrMem | noNewDevice); - if (err == noErr) { - DisposeGWorld(offscreen); - dsp_agp_available = SDL_TRUE; - } -#endif - } -} - -static int -DSp_GetMainDevice(_THIS, GDHandle * device) -{ - -#if TARGET_API_MAC_OSX - /* DSpUserSelectContext not available on OS X */ - *device = GetMainDevice(); - return 0; -#else - - DSpContextAttributes attrib; - DSpContextReference context; - DisplayIDType display_id; - GDHandle main_device; - GDHandle device_list; - - device_list = GetDeviceList(); - main_device = GetMainDevice(); - - /* Quick check to avoid slower method when only one display exists */ - if ((**device_list).gdNextGD == NULL) { - *device = main_device; - return 0; - } - - SDL_memset(&attrib, 0, sizeof(DSpContextAttributes)); - - /* These attributes are hopefully supported on all devices... */ - attrib.displayWidth = 640; - attrib.displayHeight = 480; - attrib.displayBestDepth = 8; - attrib.backBufferBestDepth = 8; - attrib.displayDepthMask = kDSpDepthMask_All; - attrib.backBufferDepthMask = kDSpDepthMask_All; - attrib.colorNeeds = kDSpColorNeeds_Require; - attrib.pageCount = 1; - - if (noErr != DMGetDisplayIDByGDevice(main_device, &display_id, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate GDevice with a Display ID"); - return (-1); - } - - /* Put up dialog on main display to select which display to use */ - if (noErr != DSpUserSelectContext(&attrib, display_id, NULL, &context)) { - SDL_SetError("DrawSprocket couldn't create a context"); - return (-1); - } - - if (noErr != DSpContext_GetDisplayID(context, &display_id)) { - SDL_SetError("DrawSprocket couldn't get display ID"); - return (-1); - } - - if (noErr != DMGetGDeviceByDisplayID(display_id, &main_device, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate Display ID with GDevice"); - return (-1); - } - - *device = main_device; - return (0); -#endif -} - -static int -DSp_VideoInit(_THIS, SDL_PixelFormat * vformat) -{ - NumVersion dsp_version = { 0x01, 0x00, 0x00, 0x00 }; - -#if UNIVERSAL_INTERFACES_VERSION > 0x0320 - dsp_version = DSpGetVersion(); -#endif - - if ((dsp_version.majorRev == 1 && dsp_version.minorAndBugRev < 0x73) || - (dsp_version.majorRev < 1)) { - - /* StandardAlert (kAlertStopAlert, "\pError!", - "\pI need DrawSprocket 1.7.3 or later!\n" - "You can find a newer version at http://www.apple.com/swupdates.", - NULL, NULL); - */ - SDL_SetError("DrawSprocket version is too old. Need 1.7.3 or later."); - return (-1); - } - - if (DSpStartup() != noErr) { - SDL_SetError("DrawSprocket couldn't startup"); - return (-1); - } - - /* Start DSpintosh events */ - Mac_InitEvents(this); - - /* Get a handle to the main monitor, or choose one on multiple monitor setups */ - if (DSp_GetMainDevice(this, &SDL_Display) < 0) - return (-1); - - /* Determine pixel format */ - vformat->BitsPerPixel = GetPixDepth((**SDL_Display).gdPMap); - dsp_old_depth = vformat->BitsPerPixel; - - switch (vformat->BitsPerPixel) { - case 16: - vformat->Rmask = 0x00007c00; - vformat->Gmask = 0x000003e0; - vformat->Bmask = 0x0000001f; - break; - default: - break; - } - - if (DSp_CreatePalette(this) < 0) { - SDL_SetError("Could not create palette"); - return (-1); - } - - /* Get a list of available fullscreen modes */ - SDL_modelist = DSp_BuildModeList(SDL_Display, - &this->info.current_w, - &this->info.current_h); - if (SDL_modelist == NULL) { - SDL_SetError("DrawSprocket could not build a mode list"); - return (-1); - } - - /* Check for VRAM and AGP GWorlds for HW Blitting */ - DSp_IsHWAvailable(this, vformat); - - this->info.wm_available = 0; - - if (dsp_vram_available || dsp_agp_available) { - - this->info.hw_available = SDL_TRUE; - - this->CheckHWBlit = DSp_CheckHWBlit; - this->info.blit_hw = SDL_TRUE; - - this->FillHWRect = DSp_FillHWRect; - this->info.blit_fill = SDL_TRUE; - -#ifdef DSP_TRY_CC_AND_AA - this->SetHWColorKey = DSp_SetHWColorKey; - this->info.blit_hw_CC = SDL_TRUE; - - this->SetHWAlpha = DSp_SetHWAlpha; - this->info.blit_hw_A = SDL_TRUE; -#endif - - } - - return (0); -} - -static SDL_Rect ** -DSp_ListModes(_THIS, SDL_PixelFormat * format, Uint32 flags) -{ - static SDL_Rect *dsp_modes[16]; - int i = 0, j = 0; - - if (format->BitsPerPixel == 0) - return ((SDL_Rect **) NULL); - - while (SDL_modelist[i] != NULL) { - - if (SDL_modelist[i]->x & format->BitsPerPixel) { - dsp_modes[j] = SDL_modelist[i]; - j++; - } - i++; - } - - dsp_modes[j] = NULL; - - return dsp_modes; -} - -/* Various screen update functions available */ -static void DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * rects); - -#if ! TARGET_API_MAC_OSX - -static volatile unsigned int retrace_count = 0; /* -dw- need volatile because it updates asychronously */ - -Boolean -DSp_VBLProc(DSpContextReference context, void *ref_con) -{ - retrace_count++; - - return 1; /* Darrell, is this right? */ -} - -static void -DSp_SetHWError(OSStatus err, int is_agp) -{ - char message[1024]; - const char *fmt, *mem; - - if (is_agp) { - mem = "AGP Memory"; - } else { - mem = "VRAM"; - } - switch (err) { - case memFullErr: - fmt = "Hardware surface possible but not enough %s available"; - break; - case cDepthErr: - fmt = "Hardware surface possible but invalid color depth"; - break; - default: - fmt = "Hardware surface could not be allocated in %s - unknown error"; - break; - } - SDL_snprintf(message, SDL_arraysize(message), fmt, mem); - SDL_SetError(message); -} -#endif // TARGET_API_MAC_OSX - -/* put up a dialog to verify display change */ -static int -DSp_ConfirmSwitch() -{ - - /* resource id's for dialog */ - const int rDialog = 1002; - const int bCancel = 1; - const int bOK = 2; - - DialogPtr dialog; - OSStatus err; - SInt32 response; - DialogItemIndex item = 0; - GrafPtr savePort; - - GetPort(&savePort); - - dialog = GetNewDialog(rDialog, NULL, (WindowPtr) - 1); - if (dialog == NULL) - return (0); - -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(dialog)); -#else - SetPort((WindowPtr) dialog); -#endif - - SetDialogDefaultItem(dialog, bCancel); - SetDialogCancelItem(dialog, bCancel); - - SetEventMask(everyEvent); - FlushEvents(everyEvent, 0); - - /* On MacOS 8.5 or later, we can make the dialog go away after 15 seconds */ - /* This is good since it's possible user can't even see the dialog! */ - /* Requires linking to DialogsLib */ - err = Gestalt(gestaltSystemVersion, &response); - if (err == noErr && response >= 0x00000850) { - SetDialogTimeout(dialog, bCancel, 15); - } - - do { - - ModalDialog(NULL, &item); - - } - while (item != bCancel && item != bOK && err != noErr); - - - DisposeDialog(dialog); - SetPort(savePort); - - SetEventMask(everyEvent - autoKeyMask); - FlushEvents(everyEvent, 0); - - return (item - 1); -} - -static void -DSp_UnsetVideoMode(_THIS, SDL_Surface * current) -{ - - - if (current->flags & SDL_INTERNALOPENGL) { - Mac_GL_Quit(this); - } - - if (dsp_context != NULL) { - - GWorldPtr front; - DSpContext_GetFrontBuffer(dsp_context, &front); - - if (front != dsp_back_buffer) - DisposeGWorld(dsp_back_buffer); - - if (current->hwdata) - SDL_free(current->hwdata); - - DSpContext_SetState(dsp_context, kDSpContextState_Inactive); - DSpContext_Release(dsp_context); - - dsp_context = NULL; - } - - if (SDL_Window != NULL) { - DisposeWindow(SDL_Window); - SDL_Window = NULL; - } - - current->pixels = NULL; - current->flags = 0; -} - -static SDL_Surface * -DSp_SetVideoMode(_THIS, - SDL_Surface * current, int width, int height, int bpp, - Uint32 flags) -{ - -#if !TARGET_API_MAC_OSX - DisplayIDType display_id; - Fixed freq; -#endif - DSpContextAttributes attrib; - OSStatus err; - UInt32 rmask = 0, gmask = 0, bmask = 0; - - int page_count; - int double_buf; - int hw_surface; - int use_dsp_back_buffer; - - DSp_UnsetVideoMode(this, current); - - if (bpp != dsp_old_depth) - DSp_DestroyPalette(this); - - double_buf = (flags & SDL_DOUBLEBUF) != 0; - hw_surface = (flags & SDL_HWSURFACE) != 0; - use_dsp_back_buffer = !dsp_vram_available || !hw_surface; - - current->flags |= SDL_FULLSCREEN; - - rebuild: - - if (double_buf && use_dsp_back_buffer) { - page_count = 2; - } else { - page_count = 1; - } - - SDL_memset(&attrib, 0, sizeof(DSpContextAttributes)); - attrib.displayWidth = width; - attrib.displayHeight = height; - attrib.displayBestDepth = bpp; - attrib.backBufferBestDepth = bpp; - attrib.displayDepthMask = kDSpDepthMask_All; - attrib.backBufferDepthMask = kDSpDepthMask_All; - attrib.colorNeeds = kDSpColorNeeds_Require; - attrib.colorTable = 0; - attrib.pageCount = page_count; -#if TARGET_API_MAC_OSX || UNIVERSAL_INTERFACES_VERSION == 0x0320 - - if (DSpFindBestContext(&attrib, &dsp_context) != noErr) { - SDL_SetError("DrawSprocket couldn't find a context"); - return NULL; - } -#else - if (noErr != DMGetDisplayIDByGDevice(SDL_Display, &display_id, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate GDevice with display_id"); - return NULL; - } - if (DSpFindBestContextOnDisplayID(&attrib, &dsp_context, display_id) != - noErr) { - SDL_SetError - ("DrawSprocket couldn't find a suitable context on given display"); - return NULL; - } -#endif - if (DSpContext_Reserve(dsp_context, &attrib) != noErr) { - SDL_SetError - ("DrawSprocket couldn't get the needed resources to build the display"); - return NULL; - } - - if ((err = - DSpContext_SetState(dsp_context, kDSpContextState_Active)) != noErr) - { - - if (err == kDSpConfirmSwitchWarning) { - - if (!DSp_ConfirmSwitch()) { - - DSpContext_Release(dsp_context); - dsp_context = NULL; - SDL_SetError("User cancelled display switch"); - return NULL; - } else - /* Have to reactivate context. Why? */ - DSpContext_SetState(dsp_context, kDSpContextState_Active); - - } else { - SDL_SetError("DrawSprocket couldn't activate the context"); - return NULL; - } - } - - - if (bpp != dsp_old_depth) { - - DSp_CreatePalette(this); - - /* update format if display depth changed */ - if (bpp == 16) { - - rmask = 0x00007c00; - gmask = 0x000003e0; - bmask = 0x0000001f; - } - if (!SDL_ReallocFormat(current, bpp, rmask, gmask, bmask, 0)) { - - SDL_SetError("Could not reallocate video format."); - return (NULL); - } - } - - if (!double_buf) { - - /* single-buffer context */ - DSpContext_GetFrontBuffer(dsp_context, &dsp_back_buffer); - - current->hwdata = - (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (current->hwdata == NULL) { - SDL_OutOfMemory(); - return NULL; - } - current->hwdata->offscreen = dsp_back_buffer; - current->flags |= SDL_HWSURFACE; - this->UpdateRects = DSp_DirectUpdate; - } else if (use_dsp_back_buffer) { - - DSpContext_GetBackBuffer(dsp_context, kDSpBufferKind_Normal, - &dsp_back_buffer); - - current->flags |= SDL_DOUBLEBUF | SDL_SWSURFACE; /* only front buffer is in VRAM */ - this->UpdateRects = DSp_DSpUpdate; - } else if (DSp_NewHWSurface - (this, &dsp_back_buffer, bpp, width - 1, height - 1) == 0) { - - current->hwdata = - (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (current->hwdata == NULL) { - SDL_OutOfMemory(); - return NULL; - } - - SDL_memset(current->hwdata, 0, sizeof(private_hwdata)); - current->hwdata->offscreen = dsp_back_buffer; - current->flags |= SDL_DOUBLEBUF | SDL_HWSURFACE; - this->UpdateRects = DSp_DirectUpdate; /* hardware doesn't do update rects, must be page-flipped */ - } else { - - DSpContext_Release(dsp_context); - use_dsp_back_buffer = SDL_TRUE; - goto rebuild; - } - - current->pitch = GetPortPixRowBytes(dsp_back_buffer) & 0x3FFF; - current->pixels = GetPixBaseAddr(GetPortPixMap(dsp_back_buffer)); - - current->w = width; - current->h = height; - -#if ! TARGET_API_MAC_OSX - - if (use_dsp_back_buffer) { - - DSpContext_GetMonitorFrequency(dsp_context, &freq); - DSpContext_SetMaxFrameRate(dsp_context, freq >> 16); - } - - - if ((current->flags & SDL_HWSURFACE) - || (current->flags & SDL_INTERNALOPENGL)) - DSpContext_SetVBLProc(dsp_context, DSp_VBLProc, NULL); -#endif - - if (bpp == 8) - current->flags |= SDL_HWPALETTE; - - if (flags & SDL_INTERNALOPENGL) { - - Rect rect; - RGBColor rgb = { 0.0, 0.0, 0.0 }; - GrafPtr save_port; - - SetRect(&rect, 0, 0, width, height); - SDL_Window = - NewCWindow(nil, &((**SDL_Display).gdRect), "\p", SDL_TRUE, - plainDBox, (WindowPtr) - 1, SDL_FALSE, 0); - - if (SDL_Window == NULL) { - - SDL_SetError - ("DSp_SetVideoMode : OpenGL window could not be created."); - return NULL; - } - - /* Set window color to black to avoid white flash */ - GetPort(&save_port); -#if TARGET_API_MAC_CARBON - SetPort(GetWindowPort(SDL_Window)); -#else - SetPort(SDL_Window); -#endif - RGBForeColor(&rgb); - PaintRect(&rect); - SetPort(save_port); - - SetPortWindowPort(SDL_Window); - SelectWindow(SDL_Window); - - if (Mac_GL_Init(this) < 0) { - - SDL_SetError - ("DSp_SetVideoMode : could not create OpenGL context."); - return NULL; - } - - current->flags |= SDL_INTERNALOPENGL; - } - - return current; -} - -#ifdef DSP_TRY_CC_AND_AA - -static int -DSp_MakeHWMask(_THIS, SDL_Surface * surface) -{ - GDHandle save_device; - CGrafPtr save_port; - GWorldPtr temp; - RGBColor black = { 0, 0, 0 }; - RGBColor white = { 0xFFFF, 0xFFFF, 0xFFFF }; - Rect rect; - - Uint32 depth = GetPixDepth(GetGDevPixMap(SDL_Display)); - - SetRect(&rect, 0, 0, surface->w, surface->h); - - if (noErr != - NewGWorld(&(surface->hwdata->mask), depth, &rect, 0, SDL_Display, - 0) < 0) { - - SDL_OutOfMemory(); - return (-1); - } - - if (noErr != NewGWorld(&temp, depth, &rect, 0, SDL_Display, 0)) { - - SDL_OutOfMemory(); - return (-1); - } - - - GetGWorld(&save_port, &save_device); - SetGWorld(surface->hwdata->mask, SDL_Display); - - RGBForeColor(&white); - PaintRect(&rect); - - RGBBackColor(&(surface->hwdata->trans)); - - CopyBits(GetPortBitMapForCopyBits(surface->hwdata->offscreen), - GetPortBitMapForCopyBits(surface->hwdata->mask), - &rect, &rect, transparent, NULL); - - SetGWorld(surface->hwdata->mask, SDL_Display); - SetGWorld(save_port, save_device); - return (0); -} - -static int -DSp_SetHWAlpha(_THIS, SDL_Surface * surface, UInt8 alpha) -{ - surface->hwdata->alpha.red = (alpha / 255.0) * 65535; - surface->hwdata->alpha.blue = (alpha / 255.0) * 65535; - surface->hwdata->alpha.green = (alpha / 255.0) * 65535; - - surface->flags |= SDL_SRCALPHA; - - if (surface->flags & SDL_SRCCOLORKEY) { - return (DSp_MakeHWMask(this, surface)); - } - return (0); -} - -static int -DSp_SetHWColorKey(_THIS, SDL_Surface * surface, Uint32 key) -{ - CGrafPtr save_port; - GDHandle save_device; - - GetGWorld(&save_port, &save_device); - SetGWorld(surface->hwdata->offscreen, NULL); - - Index2Color(key, &(surface->hwdata->trans)); - surface->flags |= SDL_SRCCOLORKEY; - - SetGWorld(save_port, save_device); - - if (surface->flags & SDL_SRCALPHA) { - return (DSp_MakeHWMask(this, surface)); - } - return (0); -} - -#endif /* DSP_TRY_CC_AND_AA */ - -static int -DSp_NewHWSurface(_THIS, CGrafPtr * port, int depth, int width, int height) -{ - - OSStatus err; - Rect bounds; - - SetRect(&bounds, 0, 0, width, height); - -#if useDistantHdwrMem && useLocalHdwrMem - if (dsp_vram_available) { - /* try VRAM */ - err = - NewGWorld(port, depth, &bounds, 0, SDL_Display, - useDistantHdwrMem | noNewDevice); - if (err != noErr) - DSp_SetHWError(err, SDL_FALSE); - else - return (0); - } - - if (dsp_agp_available) { - /* try AGP */ - err = - NewGWorld(port, depth, &bounds, 0, SDL_Display, - useLocalHdwrMem | noNewDevice); - - if (err != noErr) - DSp_SetHWError(err, SDL_TRUE); - else - return (0); - } -#endif - - return (-1); -} - -static int -DSp_AllocHWSurface(_THIS, SDL_Surface * surface) -{ - GWorldPtr temp; - - if (DSp_NewHWSurface - (this, &temp, surface->format->BitsPerPixel, surface->w, - surface->h) < 0) - return (-1); - - surface->hwdata = (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (surface->hwdata == NULL) { - SDL_OutOfMemory(); - return -1; - } - - SDL_memset(surface->hwdata, 0, sizeof(private_hwdata)); - surface->hwdata->offscreen = temp; - surface->pitch = GetPixRowBytes(GetPortPixMap(temp)) & 0x3FFF; - surface->pixels = GetPixBaseAddr(GetPortPixMap(temp)); - surface->flags |= SDL_HWSURFACE; -#ifdef DSP_TRY_CC_AND_AA - surface->flags |= SDL_HWACCEL; -#endif - return 0; -} - -static void -DSp_FreeHWSurface(_THIS, SDL_Surface * surface) -{ - if (surface->hwdata->offscreen != NULL) - DisposeGWorld(surface->hwdata->offscreen); - SDL_free(surface->hwdata); - - surface->pixels = NULL; -} - -static int -DSp_CheckHWBlit(_THIS, SDL_Surface * src, SDL_Surface * dest) -{ - int accelerated; - - /* Set initial acceleration on */ - src->flags |= SDL_HWACCEL; - - /* Set the surface attributes */ - if ((src->flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - if (!this->info.blit_hw_A) { - src->flags &= ~SDL_HWACCEL; - } - } - if ((src->flags & SDL_SRCCOLORKEY) == SDL_SRCCOLORKEY) { - if (!this->info.blit_hw_CC) { - src->flags &= ~SDL_HWACCEL; - } - } - - /* Check to see if final surface blit is accelerated */ - accelerated = !!(src->flags & SDL_HWACCEL); - if (accelerated) { - src->map->hw_blit = DSp_HWAccelBlit; - } - return (accelerated); -} - -static int -DSp_HWAccelBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect) -{ - CGrafPtr save_port; - GDHandle save_device; - Rect src_rect, dst_rect; - RGBColor black = { 0, 0, 0 }; - RGBColor white = { 0xFFFF, 0xFFFF, 0xFFFF }; - -#ifdef DSP_TRY_CC_AND_AA - UInt32 mode; -#endif - - SetRect(&src_rect, srcrect->x, srcrect->y, srcrect->x + srcrect->w, - srcrect->y + srcrect->h); - SetRect(&dst_rect, dstrect->x, dstrect->y, dstrect->x + dstrect->w, - dstrect->y + dstrect->h); - - GetGWorld(&save_port, &save_device); - SetGWorld(dst->hwdata->offscreen, NULL); - - RGBForeColor(&black); - RGBBackColor(&white); - -#ifdef DSP_TRY_CC_AND_AA - - if ((src->flags & SDL_SRCCOLORKEY) && (src->flags & SDL_SRCALPHA)) { - - OpColor(&(src->hwdata->alpha)); - - CopyDeepMask(GetPortBitMapForCopyBits(src->hwdata->offscreen), - GetPortBitMapForCopyBits(src->hwdata->mask), - GetPortBitMapForCopyBits(dst->hwdata->offscreen), - &src_rect, &src_rect, &dst_rect, blend, NULL); - } else { - - if (src->flags & SDL_SRCCOLORKEY) { - RGBBackColor(&(src->hwdata->trans)); - mode = transparent; - } else if (src->flags & SDL_SRCALPHA) { - - OpColor(&(src->hwdata->alpha)); - mode = blend; - } else { - - mode = srcCopy; - } - - CopyBits(GetPortBitMapForCopyBits(src->hwdata->offscreen), - GetPortBitMapForCopyBits(dst->hwdata->offscreen), - &src_rect, &dst_rect, mode, NULL); - } -#else - - CopyBits(&(((GrafPtr) (src->hwdata->offscreen))->portBits), - &(((GrafPtr) (dst->hwdata->offscreen))->portBits), - &src_rect, &dst_rect, srcCopy, NULL); - -#endif /* DSP_TRY_CC_AND_AA */ - - SetGWorld(save_port, save_device); - - return (0); -} - -static int -DSp_FillHWRect(_THIS, SDL_Surface * dst, SDL_Rect * rect, Uint32 color) -{ - CGrafPtr save_port; - GDHandle save_device; - Rect fill_rect; - RGBColor rgb; - - SetRect(&fill_rect, rect->x, rect->y, rect->x + rect->w, - rect->y + rect->h); - - GetGWorld(&save_port, &save_device); - SetGWorld(dst->hwdata->offscreen, NULL); - - Index2Color(color, &rgb); - - RGBForeColor(&rgb); - PaintRect(&fill_rect); - - SetGWorld(save_port, save_device); - - return (0); -} - -static int -DSp_FlipHWSurface(_THIS, SDL_Surface * surface) -{ - if ((surface->flags & SDL_HWSURFACE)) { - CGrafPtr dsp_front_buffer, save_port; - Rect rect; - -#if ! TARGET_API_MAC_OSX - unsigned int old_count; -#endif - - /* pseudo page flipping for VRAM back buffer */ - DSpContext_GetFrontBuffer(dsp_context, &dsp_front_buffer); - SetRect(&rect, 0, 0, surface->w - 1, surface->h - 1); - - GetPort((GrafPtr *) & save_port); - SetPort((GrafPtr) dsp_front_buffer); - - /* wait for retrace */ - /* I have tried doing the swap in interrupt routine (VBL Proc) to do */ - /* it asynchronously, but apparently CopyBits isn't interrupt safe */ - -#if ! TARGET_API_MAC_OSX -#ifndef DSP_NO_SYNC_VBL - old_count = retrace_count; - while (old_count == retrace_count); -#endif -#endif - - CopyBits(GetPortBitMapForCopyBits(dsp_back_buffer), - GetPortBitMapForCopyBits(dsp_front_buffer), - &rect, &rect, srcCopy, NULL); - - SetPort((GrafPtr) save_port); - - } else { - /* not really page flipping at all: DSp just blits the dirty rectangles from DSp_UpdateRects */ - Boolean busy_flag; - DSpContext_SwapBuffers(dsp_context, NULL, &busy_flag); /* this waits for VBL */ - DSpContext_GetBackBuffer(dsp_context, kDSpBufferKind_Normal, - &dsp_back_buffer); - surface->pixels = GetPixBaseAddr(GetPortPixMap(dsp_back_buffer)); - } - return (0); -} - -static int -DSp_LockHWSurface(_THIS, SDL_Surface * surface) -{ - if (LockPixels(GetGWorldPixMap(surface->hwdata->offscreen))) - return 0; - else - return -1; -} - -static void -DSp_UnlockHWSurface(_THIS, SDL_Surface * surface) -{ - UnlockPixels(GetGWorldPixMap(surface->hwdata->offscreen)); -} - -static void -DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * sdl_rects) -{ - return; -} - -static void -DSp_DSpUpdate(_THIS, int numrects, SDL_Rect * sdl_rects) -{ -#if ! TARGET_API_MAC_OSX /* Unsupported DSp in here */ - int i; - Rect rect; - - for (i = 0; i < numrects; i++) { - - rect.top = sdl_rects[i].y; - rect.left = sdl_rects[i].x; - rect.bottom = sdl_rects[i].h + sdl_rects[i].y; - rect.right = sdl_rects[i].w + sdl_rects[i].x; - - DSpContext_InvalBackBufferRect(dsp_context, &rect); - } -#endif -} - -static int -DSp_CreatePalette(_THIS) -{ - - - /* Create our palette */ - SDL_CTab = (CTabHandle) NewHandle(sizeof(ColorSpec) * 256 + 8); - if (SDL_CTab == nil) { - SDL_OutOfMemory(); - return (-1); - } - (**SDL_CTab).ctSeed = GetCTSeed(); - (**SDL_CTab).ctFlags = 0; - (**SDL_CTab).ctSize = 255; - CTabChanged(SDL_CTab); - SDL_CPal = NewPalette(256, SDL_CTab, pmExplicit + pmTolerant, 0); - - return 0; -} - -static int -DSp_DestroyPalette(_THIS) -{ - - /* Free palette and restore original one */ - if (SDL_CTab != nil) { - DisposeHandle((Handle) SDL_CTab); - SDL_CTab = nil; - } - if (SDL_CPal != nil) { - DisposePalette(SDL_CPal); - SDL_CPal = nil; - } - RestoreDeviceClut(SDL_Display); - - return (0); -} - -static int -DSp_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color * colors) -{ - CTabHandle cTab; - - int i; - - cTab = SDL_CTab; - - /* Verify the range of colors */ - if ((firstcolor + ncolors) > ((**cTab).ctSize + 1)) { - return (0); - } - - /* Set the screen palette and update the display */ - for (i = 0; i < ncolors; i++) { - int j = firstcolor + i; - (**cTab).ctTable[j].value = j; - (**cTab).ctTable[j].rgb.red = colors[i].r << 8 | colors[i].r; - (**cTab).ctTable[j].rgb.green = colors[i].g << 8 | colors[i].g; - (**cTab).ctTable[j].rgb.blue = colors[i].b << 8 | colors[i].b; - } - - SetGDevice(SDL_Display); - SetEntries(0, (**cTab).ctSize, (ColorSpec *) & (**cTab).ctTable); - - return (1); -} - -void -DSp_VideoQuit(_THIS) -{ - int i; - - /* Free current video mode */ - DSp_UnsetVideoMode(this, this->screen); - - /* Free Palette and restore original */ - DSp_DestroyPalette(this); - - /* Free list of video modes */ - if (SDL_modelist != NULL) { - for (i = 0; SDL_modelist[i]; i++) { - SDL_free(SDL_modelist[i]); - } - SDL_free(SDL_modelist); - SDL_modelist = NULL; - } - - /* Unload DrawSprocket */ - DSpShutdown(); -} - -#if SDL_VIDEO_OPENGL - -/* swap buffers with v-sync */ -static void -DSp_GL_SwapBuffers(_THIS) -{ - -#ifndef DSP_NO_SYNC_OPENGL - - unsigned int old_count; - - old_count = retrace_count; - while (old_count == retrace_count); -#endif - - aglSwapBuffers(glContext); -} - -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macdsp/SDL_dspvideo.h b/src/video/macdsp/SDL_dspvideo.h deleted file mode 100644 index e2ad17526..000000000 --- a/src/video/macdsp/SDL_dspvideo.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_dspvideo_h -#define _SDL_dspvideo_h - -#if TARGET_API_MAC_OSX -# include /* Drawsprocket.framework */ -#else -#include -#endif - -#include "../maccommon/SDL_lowvideo.h" - -/* DrawSprocket specific information */ -struct DSpInfo -{ - DSpContextReference dsp_context; - CGrafPtr dsp_back_buffer; - int dsp_old_depth; - - /* Flags for hw acceleration */ - int dsp_vram_available; - int dsp_agp_available; - - -}; -/* Old variable names */ -#define dsp_context (this->hidden->dspinfo->dsp_context) -#define dsp_back_buffer (this->hidden->dspinfo->dsp_back_buffer) -#define dsp_old_depth (this->hidden->dspinfo->dsp_old_depth) -#define dsp_vram_available (this->hidden->dspinfo->dsp_vram_available) -#define dsp_agp_available (this->hidden->dspinfo->dsp_agp_available) - -#endif /* _SDL_dspvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macrom/SDL_romvideo.c b/src/video/macrom/SDL_romvideo.c deleted file mode 100644 index 70fb6870d..000000000 --- a/src/video/macrom/SDL_romvideo.c +++ /dev/null @@ -1,762 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#if USE_QUICKTIME -#include -#endif -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -/* The fullscreen code requires the QuickTime framework, and the window - is still at the back on Mac OS X, which is where this code is needed. - */ -#if USE_QUICKTIME -#include -#endif -#else -#include -#include -#include -#include -#include -#include -#endif - -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../SDL_sysvideo.h" -#include "SDL_romvideo.h" -#include "../maccommon/SDL_macgl_c.h" -#include "../maccommon/SDL_macwm_c.h" -#include "../maccommon/SDL_macmouse_c.h" -#include "../maccommon/SDL_macevents_c.h" - -/* Initialization/Query functions */ -static int ROM_VideoInit(_THIS, SDL_PixelFormat * vformat); -static SDL_Rect **ROM_ListModes(_THIS, SDL_PixelFormat * format, - Uint32 flags); -static SDL_Surface *ROM_SetVideoMode(_THIS, SDL_Surface * current, int width, - int height, int bpp, Uint32 flags); -static int ROM_SetColors(_THIS, int firstcolor, int ncolors, - SDL_Color * colors); -static void ROM_VideoQuit(_THIS); - -/* Hardware surface functions */ -static int ROM_AllocHWSurface(_THIS, SDL_Surface * surface); -static int ROM_LockHWSurface(_THIS, SDL_Surface * surface); -static void ROM_UnlockHWSurface(_THIS, SDL_Surface * surface); -static void ROM_FreeHWSurface(_THIS, SDL_Surface * surface); - -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ -/* Saved state for the menu bar */ -static RgnHandle gSaveGrayRgn = nil; -static short gSaveMenuBar = 0; -static Boolean gSaveCSVis = true; - -#if powerc -/* Mixed mode glue to activate the 68K emulator and twiddle a register */ -#define ONEWORDSTUB(p1) \ - { 0x41FA, 0x0010, 0x209F, (p1), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -#define TWOWORDSTUB(p1,p2) \ - { 0x41FA, 0x0012, 0x209F, (p1), (p2), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -#define THREEWORDSTUB(p1,p2,p3) \ - { 0x41FA, 0x0014, 0x209F, (p1), (p2), (p3), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -/* ControlStrip inline glue for PowerPC */ -static pascal Boolean -SBIsControlStripVisible(void) -{ - static short procData[] = TWOWORDSTUB(0x7000, 0xAAF2); - ProcInfoType procInfo = kD0DispatchedPascalStackBased - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) - | DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE(kFourByteCode); - - return ((Boolean) - CallUniversalProc((UniversalProcPtr) procData, procInfo, 0x00)); -} - -static pascal void -SBShowHideControlStrip(Boolean showIt) -{ - static short procData[] = THREEWORDSTUB(0x303C, 0x0101, 0xAAF2); - ProcInfoType procInfo = kD0DispatchedPascalStackBased - | DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE(kFourByteCode) - | DISPATCHED_STACK_ROUTINE_PARAMETER(1, - SIZE_CODE(sizeof(Boolean))); - - CallUniversalProc((UniversalProcPtr) procData, procInfo, 0x01, showIt); -} -#endif /* powerc */ -#endif /* !TARGET_API_MAC_CARBON */ - -/* Macintosh toolbox driver bootstrap functions */ - -static int -ROM_Available(void) -{ - return (1); -} - -static void -ROM_DeleteDevice(SDL_VideoDevice * device) -{ - SDL_free(device->hidden); - SDL_free(device); -} - -static SDL_VideoDevice * -ROM_CreateDevice(int devindex) -{ - SDL_VideoDevice *device; - - /* Initialize all variables that we clean on shutdown */ - device = (SDL_VideoDevice *) SDL_malloc(sizeof(SDL_VideoDevice)); - if (device) { - SDL_memset(device, 0, (sizeof *device)); - device->hidden = (struct SDL_PrivateVideoData *) - SDL_malloc((sizeof *device->hidden)); - } - if ((device == NULL) || (device->hidden == NULL)) { - SDL_OutOfMemory(); - if (device) { - SDL_free(device); - } - return (0); - } - SDL_memset(device->hidden, 0, (sizeof *device->hidden)); - - /* Set the function pointers */ - device->VideoInit = ROM_VideoInit; - device->ListModes = ROM_ListModes; - device->SetVideoMode = ROM_SetVideoMode; - device->SetColors = ROM_SetColors; - device->UpdateRects = NULL; - device->VideoQuit = ROM_VideoQuit; - device->AllocHWSurface = ROM_AllocHWSurface; - device->CheckHWBlit = NULL; - device->FillHWRect = NULL; - device->SetHWColorKey = NULL; - device->SetHWAlpha = NULL; - device->LockHWSurface = ROM_LockHWSurface; - device->UnlockHWSurface = ROM_UnlockHWSurface; - device->FlipHWSurface = NULL; - device->FreeHWSurface = ROM_FreeHWSurface; -#if SDL_VIDEO_OPENGL - device->GL_MakeCurrent = Mac_GL_MakeCurrent; - device->GL_SwapBuffers = Mac_GL_SwapBuffers; - device->GL_LoadLibrary = Mac_GL_LoadLibrary; - device->GL_GetProcAddress = Mac_GL_GetProcAddress; -#endif // Have OpenGL - device->SetCaption = Mac_SetCaption; - device->SetIcon = NULL; - device->IconifyWindow = NULL; - device->GrabInput = NULL; - device->GetWMInfo = NULL; - device->FreeWMCursor = Mac_FreeWMCursor; - device->CreateWMCursor = Mac_CreateWMCursor; - device->ShowWMCursor = Mac_ShowWMCursor; - device->WarpWMCursor = Mac_WarpWMCursor; - device->InitOSKeymap = Mac_InitOSKeymap; - device->PumpEvents = Mac_PumpEvents; - - device->free = ROM_DeleteDevice; - - return device; -} - -VideoBootStrap TOOLBOX_bootstrap = { - "toolbox", "MacOS ROM Toolbox", - ROM_Available, ROM_CreateDevice -}; - - -static int -ROM_VideoInit(_THIS, SDL_PixelFormat * vformat) -{ - long info; - - /* Check out some things about the system */ - Gestalt(gestaltQuickdrawVersion, &info); - if (info == gestaltOriginalQD) { - SDL_SetError("Color Quickdraw not available"); - return (-1); - } - - /* Start ROMintosh events */ - Mac_InitEvents(this); - - /* Get a handle to the main monitor */ - SDL_Display = GetMainDevice(); - - /* Determine the current screen size */ - this->info.current_w = (**SDL_Display).gdRect.right; - this->info.current_h = (**SDL_Display).gdRect.bottom; - - /* Determine pixel format */ - vformat->BitsPerPixel = (**(**SDL_Display).gdPMap).pixelSize; - switch (vformat->BitsPerPixel) { - case 16: /* 5-5-5 RGB */ - vformat->Rmask = 0x00007c00; - vformat->Gmask = 0x000003e0; - vformat->Bmask = 0x0000001f; - break; - default: - break; - } - - /* Create our palette */ - SDL_CTab = (CTabHandle) NewHandle(sizeof(ColorSpec) * 256 + 8); - if (SDL_CTab == nil) { - SDL_OutOfMemory(); - return (-1); - } - (**SDL_CTab).ctSeed = GetCTSeed(); - (**SDL_CTab).ctFlags = 0; - (**SDL_CTab).ctSize = 255; - CTabChanged(SDL_CTab); - SDL_CPal = NewPalette(256, SDL_CTab, pmExplicit + pmTolerant, 0); - - /* Get a list of available fullscreen modes */ - SDL_modelist = (SDL_Rect **) SDL_malloc((1 + 1) * sizeof(SDL_Rect *)); - if (SDL_modelist) { - SDL_modelist[0] = (SDL_Rect *) SDL_malloc(sizeof(SDL_Rect)); - if (SDL_modelist[0]) { - SDL_modelist[0]->x = 0; - SDL_modelist[0]->y = 0; - SDL_modelist[0]->w = (**SDL_Display).gdRect.right; - SDL_modelist[0]->h = (**SDL_Display).gdRect.bottom; - } - SDL_modelist[1] = NULL; - } - - /* Fill in some window manager capabilities */ - this->info.wm_available = 1; - - /* We're done! */ - return (0); -} - -static SDL_Rect ** -ROM_ListModes(_THIS, SDL_PixelFormat * format, Uint32 flags) -{ - if (this->screen->format->BitsPerPixel == format->BitsPerPixel) { - if ((flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - return (SDL_modelist); - } else { - return ((SDL_Rect **) - 1); - } - } else { - return ((SDL_Rect **) 0); - } -} - -static void -ROM_HideMenuBar(_THIS) -{ -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ - RgnHandle drawRgn = nil; - RgnHandle tempRgn = nil; - RgnHandle grayRgn = nil; - WindowPtr window = nil; - GDHandle gd = nil; - GrafPtr savePort; - long response; - short height; - EventRecord theEvent; - - height = GetMBarHeight(); - - if (height > 0) { - tempRgn = NewRgn(); - drawRgn = NewRgn(); - gSaveGrayRgn = NewRgn(); - if (!tempRgn || !drawRgn || !gSaveGrayRgn) { - goto CLEANUP; - } - grayRgn = GetGrayRgn(); /* No need to check for this */ - - GetPort(&savePort); - - /* Hide the control strip if it's present, and record its - previous position into the dirty region for redrawing. - This isn't necessary, but may help catch stray bits. */ - CopyRgn(grayRgn, tempRgn); - if (!Gestalt(gestaltControlStripAttr, &response) && - (response & (1L << gestaltControlStripExists))) { - gSaveCSVis = SBIsControlStripVisible(); - if (gSaveCSVis) - SBShowHideControlStrip(false); - } - DiffRgn(grayRgn, tempRgn, drawRgn); - - /* Save the gray region once the control strip is hidden */ - CopyRgn(grayRgn, gSaveGrayRgn); - - /* Change the menu height in lowmem */ - gSaveMenuBar = height; - LMSetMBarHeight(0); - - /* Walk the monitor rectangles, and combine any pieces that - aren't in GrayRgn: menubar, round corners, fake floaters. */ - for (gd = GetDeviceList(); gd; gd = GetNextDevice(gd)) { - if (!TestDeviceAttribute(gd, screenDevice)) - continue; - if (!TestDeviceAttribute(gd, screenActive)) - continue; - - RectRgn(tempRgn, &(*gd)->gdRect); /* Get the whole screen */ - DiffRgn(tempRgn, grayRgn, tempRgn); /* Subtract out GrayRgn */ - UnionRgn(tempRgn, drawRgn, drawRgn); /* Combine all the bits */ - } - - /* Add the bits into the GrayRgn */ - UnionRgn(drawRgn, grayRgn, grayRgn); - - /* Modify the vis regions of exposed windows */ - window = (FrontWindow())? FrontWindow() : (WindowPtr) - 1L; - PaintBehind(window, drawRgn); - CalcVisBehind(window, drawRgn); - - SetPort(savePort); - - /* Yield time so that floaters can catch up */ - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - } - - CLEANUP: - - if (tempRgn) - DisposeRgn(tempRgn); - if (drawRgn) - DisposeRgn(drawRgn); -#endif /* !TARGET_API_MAC_CARBON */ -} - -static void -ROM_ShowMenuBar(_THIS) -{ -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ - RgnHandle drawRgn = nil; - RgnHandle menuRgn = nil; - RgnHandle tempRgn = nil; - RgnHandle grayRgn = nil; - WindowPtr window = nil; - GrafPtr wMgrPort; - GrafPtr savePort; - Rect menuRect; - long response; - short height; - EventRecord theEvent; - RGBColor saveRGB; - RGBColor blackRGB = { 0, 0, 0 }; - - height = GetMBarHeight(); - - if ((height <= 0) && (gSaveMenuBar > 0)) { - drawRgn = NewRgn(); - menuRgn = NewRgn(); - tempRgn = NewRgn(); - if (!tempRgn || !drawRgn || !gSaveGrayRgn) { - goto CLEANUP; - } - grayRgn = GetGrayRgn(); /* No need to check for this */ - - GetPort(&savePort); - GetWMgrPort(&wMgrPort); - - /* Set the height properly */ - LMSetMBarHeight(gSaveMenuBar); - - /* Restore the old GrayRgn: rounded corners, etc, but not - the menubar -- subtract that out first! */ - if (gSaveGrayRgn) { - menuRect = (*GetMainDevice())->gdRect; - menuRect.bottom = menuRect.top + gSaveMenuBar; - RectRgn(menuRgn, &menuRect); - - DiffRgn(grayRgn, gSaveGrayRgn, drawRgn); /* What do we inval? */ - DiffRgn(drawRgn, menuRgn, drawRgn); /* Clip out the menu */ - - /* Now redraw the corners and other bits black */ - SetPort(wMgrPort); - GetClip(tempRgn); - SetClip(drawRgn); - GetForeColor(&saveRGB); - RGBForeColor(&blackRGB); - PaintRgn(drawRgn); - RGBForeColor(&saveRGB); - SetClip(tempRgn); - SetPort(savePort); - - UnionRgn(drawRgn, menuRgn, drawRgn); /* Put back the menu */ - - /* Now actually restore the GrayRgn */ - CopyRgn(gSaveGrayRgn, grayRgn); - DisposeRgn(gSaveGrayRgn); - gSaveGrayRgn = nil; - } - - /* Modify the vis regions of exposed windows and draw menubar */ - window = (FrontWindow())? FrontWindow() : (WindowPtr) - 1L; - PaintBehind(window, drawRgn); - CalcVisBehind(window, drawRgn); - DrawMenuBar(); - - SetPort(savePort); - gSaveMenuBar = 0; - - /* Now show the control strip if it's present */ - if (!Gestalt(gestaltControlStripAttr, &response) && - (response & (1L << gestaltControlStripExists))) { - if (gSaveCSVis && !SBIsControlStripVisible()) - SBShowHideControlStrip(true); - gSaveCSVis = true; - } - - /* Yield time so that floaters can catch up */ - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - } - - CLEANUP: - - if (drawRgn) - DisposeRgn(drawRgn); - if (menuRgn) - DisposeRgn(menuRgn); - if (tempRgn) - DisposeRgn(tempRgn); -#endif /* !TARGET_API_MAC_CARBON */ -} - -/* Various screen update functions available */ -static void ROM_DirectUpdate(_THIS, int numrects, SDL_Rect * rects); -static void ROM_WindowUpdate(_THIS, int numrects, SDL_Rect * rects); - -static void -ROM_UnsetVideoMode(_THIS, SDL_Surface * current) -{ - /* Free the current window, if any */ - if (SDL_Window != nil) { - GWorldPtr memworld; - - /* Handle OpenGL support */ - Mac_GL_Quit(this); - - memworld = (GWorldPtr) GetWRefCon(SDL_Window); - if (memworld != nil) { - UnlockPixels(GetGWorldPixMap(memworld)); - DisposeGWorld(memworld); - } - if ((current->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { -#if USE_QUICKTIME - EndFullScreen(fullscreen_ctx, nil); - SDL_Window = nil; -#else - ROM_ShowMenuBar(this); -#endif - } - } - current->pixels = NULL; - current->flags &= ~(SDL_HWSURFACE | SDL_FULLSCREEN); -} - -static SDL_Surface * -ROM_SetVideoMode(_THIS, SDL_Surface * current, - int width, int height, int bpp, Uint32 flags) -{ - Rect wrect, orect; -#if TARGET_API_MAC_CARBON - Rect tmprect; -#endif - - /* Free any previous video mode */ - ROM_UnsetVideoMode(this, current); - - /* Create the ROM window and SDL video surface */ - current->flags = 0; /* Clear flags */ - current->w = width; - current->h = height; - SetRect(&wrect, 0, 0, width, height); - if (SDL_Window) { - /* If we recreate the window, don't move it around */ -#if TARGET_API_MAC_CARBON - orect = *GetWindowPortBounds(SDL_Window, &tmprect); -#else - orect = SDL_Window->portRect; -#endif - OffsetRect(&wrect, orect.left, orect.top); - } else { - /* Center the window the first time we show it */ - OffsetRect(&wrect, - (SDL_modelist[0]->w - width) / 2, - (SDL_modelist[0]->h - height) / 2); - } - -#if defined(__MACOSX__) && !USE_QUICKTIME - /* Hum.. fullscreen mode is broken */ - flags &= ~SDL_FULLSCREEN; -#endif - if ((flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - /* Create the fullscreen window and use screen bits */ - current->flags |= SDL_HWSURFACE | SDL_FULLSCREEN; - if (SDL_Window) { - DisposeWindow(SDL_Window); - } -#if USE_QUICKTIME - BeginFullScreen(&fullscreen_ctx, nil, 0, 0, &SDL_Window, nil, 0); -#else - SDL_Window = NewCWindow(nil, &wrect, "\p", true, plainDBox, - (WindowPtr) - 1, false, 0); - ROM_HideMenuBar(this); -#endif - current->pitch = (**(**SDL_Display).gdPMap).rowBytes & 0x3FFF; - current->pixels = (**(**SDL_Display).gdPMap).baseAddr; - this->UpdateRects = ROM_DirectUpdate; - } else { - GWorldPtr memworld; - PixMapHandle pixmap; - int style; - - style = noGrowDocProc; - if (flags & SDL_NOFRAME) { - style = plainDBox; - current->flags |= SDL_NOFRAME; - } else if (flags & SDL_RESIZABLE) { - style = zoomDocProc; - current->flags |= SDL_RESIZABLE; - } - if (SDL_Window && (style == current_style)) { - /* Resize existing window, if necessary */ - if (((orect.right - orect.left) != width) || - ((orect.bottom - orect.top) != height)) { - SizeWindow(SDL_Window, width, height, false); - } - } else { - /* Recreate the window in the new style */ - if (SDL_Window) { - DisposeWindow(SDL_Window); - } - SDL_Window = NewCWindow(nil, &wrect, "\p", true, - style, (WindowPtr) - 1, true, 0); - - /* Set the window title, if any */ - { - char *title; - SDL_WM_GetCaption(&title, NULL); - if (title) { - Mac_SetCaption(this, title, NULL); - } - } - } - current_style = style; - SetPalette(SDL_Window, SDL_CPal, false); - ActivatePalette(SDL_Window); - if (NewGWorld(&memworld, 0, -#if TARGET_API_MAC_CARBON - GetWindowPortBounds(SDL_Window, &tmprect), -#else - &SDL_Window->portRect, -#endif - SDL_CTab, nil, 0) != noErr) { - SDL_SetError("NewGWorld() failed"); - return (NULL); - } - SetWRefCon(SDL_Window, (long) memworld); - pixmap = GetGWorldPixMap(memworld); - LockPixels(pixmap); - current->pitch = (**pixmap).rowBytes & 0x3FFF; - current->pixels = GetPixBaseAddr(pixmap); - this->UpdateRects = ROM_WindowUpdate; - } - SetPortWindowPort(SDL_Window); - SelectWindow(SDL_Window); - - /* Handle OpenGL support */ - if (flags & SDL_INTERNALOPENGL) { - if (Mac_GL_Init(this) == 0) { - current->flags |= SDL_INTERNALOPENGL; - } else { - current = NULL; - } - } - - if ((flags & SDL_HWPALETTE) && (flags & SDL_FULLSCREEN)) - current->flags |= SDL_HWPALETTE; - - /* We're live! */ - return (current); -} - -/* We don't actually allow hardware surfaces other than the main one */ -static int -ROM_AllocHWSurface(_THIS, SDL_Surface * surface) -{ - return (-1); -} -static void -ROM_FreeHWSurface(_THIS, SDL_Surface * surface) -{ - return; -} -static int -ROM_LockHWSurface(_THIS, SDL_Surface * surface) -{ - return (0); -} -static void -ROM_UnlockHWSurface(_THIS, SDL_Surface * surface) -{ - return; -} - -static void -ROM_DirectUpdate(_THIS, int numrects, SDL_Rect * rects) -{ - /* The application is already updating the visible video memory */ - return; -} - -static void -ROM_WindowUpdate(_THIS, int numrects, SDL_Rect * rects) -{ - GWorldPtr memworld; - GrafPtr saveport; - CGrafPtr thePort; - const BitMap *memBits; - const BitMap *winBits; - int i; - Rect update; - - /* Copy from the offscreen GWorld to the window port */ - GetPort(&saveport); - SetPortWindowPort(SDL_Window); - thePort = GetWindowPort(SDL_Window); - memworld = (GWorldPtr) GetWRefCon(SDL_Window); -#if TARGET_API_MAC_CARBON && ACCESSOR_CALLS_ARE_FUNCTIONS - memBits = GetPortBitMapForCopyBits((CGrafPtr) memworld); -#else - memBits = &((GrafPtr) memworld)->portBits; -#endif -#if TARGET_API_MAC_CARBON && ACCESSOR_CALLS_ARE_FUNCTIONS - winBits = GetPortBitMapForCopyBits(thePort); -#else - winBits = &SDL_Window->portBits; -#endif - for (i = 0; i < numrects; ++i) { - update.left = rects[i].x; - update.right = rects[i].x + rects[i].w; - update.top = rects[i].y; - update.bottom = rects[i].y + rects[i].h; - CopyBits(memBits, winBits, &update, &update, srcCopy, nil); - } -#if TARGET_API_MAC_CARBON - if (QDIsPortBuffered(thePort)) { - QDFlushPortBuffer(thePort, NULL); - } -#endif - SetPort(saveport); -} - -static int -ROM_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color * colors) -{ - CTabHandle cTab; - int i; - - /* Get the colortable from the either the display or window */ - if ((this->screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - cTab = (**(**SDL_Display).gdPMap).pmTable; - } else { - cTab = SDL_CTab; - } - - /* Verify the range of colors */ - if ((firstcolor + ncolors) > ((**cTab).ctSize + 1)) { - return (0); - } - - /* Set the screen palette and update the display */ - for (i = 0; i < ncolors; ++i) { - int j = firstcolor + i; - (**cTab).ctTable[j].value = j; - (**cTab).ctTable[j].rgb.red = colors[i].r << 8 | colors[i].r; - (**cTab).ctTable[j].rgb.green = colors[i].g << 8 | colors[i].g; - (**cTab).ctTable[j].rgb.blue = colors[i].b << 8 | colors[i].b; - } -// if ( (this->screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN ) - { - GDevice **odisplay; - odisplay = GetGDevice(); - SetGDevice(SDL_Display); - SetEntries(0, (**cTab).ctSize, (ColorSpec *) & (**cTab).ctTable); - SetGDevice(odisplay); - } - return (1); -} - -void -ROM_VideoQuit(_THIS) -{ - int i; - - /* Free current video mode */ - ROM_UnsetVideoMode(this, this->screen); - if (SDL_Window) { - DisposeWindow(SDL_Window); - SDL_Window = nil; - } - - /* Free palette and restore original one */ - if (SDL_CTab != nil) { - DisposeHandle((Handle) SDL_CTab); - SDL_CTab = nil; - } - if (SDL_CPal != nil) { - DisposePalette(SDL_CPal); - SDL_CPal = nil; - } - RestoreDeviceClut(GetMainDevice()); - - /* Free list of video modes */ - if (SDL_modelist != NULL) { - for (i = 0; SDL_modelist[i]; ++i) { - SDL_free(SDL_modelist[i]); - } - SDL_free(SDL_modelist); - SDL_modelist = NULL; - } -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macrom/SDL_romvideo.h b/src/video/macrom/SDL_romvideo.h deleted file mode 100644 index 76b663c5a..000000000 --- a/src/video/macrom/SDL_romvideo.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_romvideo_h -#define _SDL_romvideo_h - -#include "../maccommon/SDL_lowvideo.h" - -#endif /* _SDL_romvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */