From 031dde06b9c7df4336e8f522dde6c9ac8a74972f Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov <lyubomir.marinov@jitsi.org> Date: Fri, 25 Jan 2013 07:14:56 +0000 Subject: [PATCH] Replaces D3DXLoadSurfaceFromMemory with LockRect. Contributed by James M. Martin. --- lib/native/windows-64/jnawtrenderer.dll | Bin 50329 -> 50001 bytes lib/native/windows/jnawtrenderer.dll | Bin 47636 -> 47377 bytes src/native/build.xml | 16 +++++- .../jawtrenderer/JAWTRenderer_Windows.c | 47 +++++++++--------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/lib/native/windows-64/jnawtrenderer.dll b/lib/native/windows-64/jnawtrenderer.dll index 57548dbe3e98e949cb93807b9a68d7b37f393735..ba48e246063ae185bfe19c37d6ae6da5a1bf400a 100755 GIT binary patch delta 11935 zcmbQ)$$YVmc|r##mp)S<!!!nliis25nO+4>yk*7og=4Z9qa35jWJhM1$$^aGtO=hO z7+y?XI8A(_0SlL2Noqw20|SFb_T)*7^B5Z@8#0xHw5(#1VKkV0oGFsgWU?ajD;~#8 z1_qDL!ycUnUmTk(&QinJIC%<-C1d;Kb1ZI*43kA!H;b}xF)(<v9`NWqR^sW=&1-v* zf#Jo6$#+@R7$YaMu%&AJPGewr`R?EU|2yRw7#LpM0depD`~TmgSG3_R1A|8|Z{b@8 zh8I^RPh@l9Th7hE;Mw`Y@RCR8&lk5QKW5Wo%$_X7Zee_g4=mAn3nY;$&A`xlpz~O1 zd-HF`(k8=8o}Dj1;=a-h3~)}s<XUzeCS~c#tJ(D!KTp2JZo;^3GCzj{+g)A;h8Gc& zLpg%Qx1=yI@XI?egavyvztPyKz`(#@`0YjA<oz6CjMFDy<1h&K=oa$qF68j(JnhlV z<k5PdM8l)?TM3(owX;Ntu1BY{#BpZ@Mg|6k9U#J^`A9@`+~G8Sc^3u-k8UrH|DyNq zF)+M71G2-To6V#1<NpAO)&mu%Ci`+uWVD%lpHo!yxQmJg69WT-$8i@GkOLV0PY__7 z%*Z9hGbb%AO^;u`g@J*AVX{2e#d^mu$56+R&~UJG13bGOI6S)NsBB<hVDRZY>XW=g z<p2W%gG=`sl@lQIS`U<PxmqR|@VAICf}G>4aoiPbfk*4f5+RRn#{U5V9^I}S9>-lZ zKvsZ!C+N{F;L&;Te~^I3aaRtoXmhOuLrJJ>=L?tm&PN`dFJCPG_y2$EfeL4jZeI?M z-cSw4onj0O46dCoJh~Y@Izv=6Tsj|tJYxXTj_?#Hm|73;cdP)pu`|`cr88H+quW;l z5^}94OJY5`8C?xex*8tv=nYYE_#cn~vc>b@6DGrNuB~r9y6bCHJbaQ%R2=G5prOLx z0ZtIUoe!FiG5Rom_hEee!ZDG7!Nu}j=@XFQU|$wMtY|(G5FHmE>lou0>j;Y^SIZ0m z{?<qT{{MIE4p3;l#NU$j|NsA&7yteL4~ax**ccvoy?=t}gb5Q~-v0gnKO$NfUUE-P z;xS^<NSZv2r;~B+WCh+?j6#!l^SVn(-C$stFahRJPy#dX0Hq?{jgxiwBt`h+L2<%6 zVFv@l3vY1z@b*lO<Wq2d90!u{QBm;dJp4ipEaRi1;nB(J1yU-?$iT1@6fqv1td1ao zJs{<sH$0k;7(^fT=)Cz~bkU8;d-!sUAEz)dFqLo}XT1($FfcGQ|6(c;YW~GoVh;-s zjp(?;6FholPd)+VL(@Z(qxn11I%7c`(MQD~$|K>$P9czcN>nsn<b!2A5<EI@d3Jty z@j!@y;YD&R1H%M(DrG=Pp$Q(H=el`sE(R4L*L^yVww~ng+YR;*>z>J;0)dQKlV=MU za#(;Abjw;!z9OK+C_4GOfQ`6d3<E<NEa-fCb5smGx@C`Co$Mv3EI9ot1H=Ez;2i(U zqx0j7<CE(Io%Nj;F)%ppZ~&$I?hq9Zk8U3o17F6E|3$T~g31d1R=)rL|Nj@QxdQSP zZ|LL?f>L_F7BVn6c892Nc=YmqD`a5s>vl2VcroWMsBGdrS_pFXrx(2t?zO_n7DDQb zb0;SVi7>WIE)`N!Oe_PLB^y=7z;K*3VIe5BGcb5)9`WdP0Yx6G=j1&?61o~?3=FQV zxA|M=gVKGss0^5YiNCcU%;yyV^G}wFdGyM1OlB0;W1KtLK-h}WYI3%)BBR6PUSTbV z&;<+(hPMsBwI1N_Tk!Ayf1hqur^}#Nu{FNT!0=iI9#qZ87(JQ~OIVvKFJNHc?=1lp zv)!zGlfMgVGCi3;SxMxB{HJ*!SMz?(1L=1b@acBu=nmj`G5HtR*EW+4Ma2}Cg3?qs zs8lbJ{eQuun{^6Epf`ZS161U6indP95LFcPj$~kH{_(%_aEVUqZI514>&df3wLSSG z85mx(gELR(;a+FP&O;u}HrE(RKfT`4&1y9d6d5IKpAUmd#N(`L^B5RF1?TIQ2@@tv zfER5J9^JC>lljCH8GR=kh>2^OUSMGG=}u8m_%F(Ifq|j(D3m__UsUM=$U8nN2A#+L zi@HuO5Yy*83reP)tk+^EuMo44_nFJU@L%-ad60Ky&F3*NfXkQA6X2|J{`}<sVy5*! z=78eb1!VqIutL^*a~T*6PkMBk#?A%B?&gII44f<s2adC@T?lcpM<?s1g&;Fof5(6{ zyFT#fW@P}|?E2!rXc)+tUf%o|kmZ@@LFDFh3=F$KhJeafQP=Yf3@=WEf=qA~;PB{V z&7BMKh%1Q6wE3|3MMiOj1)#txRrP3nTcY66%WIJhathnz)sh;#Kj$+r>;x6CKE0~B zlOISbGx|<ukqTljn-8)oVREcg8q>>pn~zFOV^k7c01|tA5@eUG&H_+veY?ciqg%J( z6iCSS<;lslGFlv8K?-_#_f1|eBhA<}`Lv9sS_arOE09DtYx8`N19?M0RHtkym~s~Q zFIqfVOIB8kbv^?_=jql1rTm5mJerRvL?7mtZvbTpk6vC*uraq!fNT?0nOrEV&T(ZP z$W8xFOkN<XEV2^JxqO0w;q_&YZYKecPS$;sughv@dV!NmX<9d{!#q%0V=TSx(aRe$ z4-^hs^FXG9Oc4QTJd`$}n^g*|zC;~dz8z;}ho&x%<|7)1LGr)mf<m-p+KZ2W|Nnp8 z@6pT40k&Fca<<%Bi7i+D|9=txA5^)OM0+HQKDYwP60CD48^~u18iFM6fNQ=I36EZ0 z#mQ^rwSB%`{{R04C`TGzYCTXQ?2*hW57s1l=kovm{M$pA*g7wOZ3h+q3ZUY@m-iq@ zPY%SS0FPwRx0k`zteUK>5F!`~l4SVz|3An;k6u>S$sG!6jB=CLD@ZW1PClVvDsleO z|Nk$l{(@bZ=8??$`w~dI>5j>wip7j3lRFg~G?I^i;`o3^C+o^t3=I6OCI3OS8K|Xo zG6@u5)gbv!)}GCVN)e2VlQ(xMmx+k-_<~aWi?470|9@HWA7rNJU!TpQ7KV&WkG&^* zSl(rn-mGTT#>iN<d9Ae!E2H=3Qw|(VOs||bUvWxeWNe;n?xMmNH95w`oKbS}6qiZ5 z>l_&vT2FrBkL2Cs$iVQ4KazC`n2vza2kQhr@oRxqESenb>cjNbaq>df_l!A{C%Ua- zJUQ9MU4iky<XHDWzI*lz3_hTi#V39N*2c+u++7%1CNp{%G2OJ=Z0Zrt$T(qgucxJO zoGqx<&^yTA&dLe0Q9v|g@=Z^B#*)dBUZzafY&HjY)w46&ZoUwx#mG2m^6wx$rpLyU zwS%1*&uz{RzQoALJlQGqp7t991_sBSpz7iif8?1oevN~l_yv7bG<>>aR5U>TxNHD2 zJ%aVJ!Q?o1)y)NAUQCQplXpkxi+lBf@<@z|f=BDg&THKk9{jF1|BJ><W{kArSCnR8 z@a(p8>^$Pp&HAQyvsa`lBctl%f+%~Yzul8JMonhSnCu!I#x%2g^4w?@zS$C>GS5ZD z!l#$_f5PPR(N2o{6BrnLTTgm+Ui0WY=gIH-(x>zIe^FBj1_sB@qaNL?%#)2`UMfg- zfy$$E9-Y^HIuEBEcTurpVCdHPFRCdHa+~O^&DOEGOrldn7#O-`^<o(qI?uHpD3$2E z(P^qMd2hUQWQjUR|H1#FliR?_s6?&v<NphttZ!l%7&>npXLS&PmVnJiK<x*3-E*8( zO$3r9U(W%R?w}TRx2Ti|14HYjQlW0vHIoe!#OuXjrYl2Dm-v5S7pMy8WUT~QAbMSx zfdQOlx>++~K+XBruR(PKxXG*0&3Yu2fx#pBWAhKD5{K3UrD+=&KeV&1PX*=cQa_Jg zUa)+(?A=ySBf+DW_f9I5u^QC*V5?vE|Nn8;np6e`aFe@NWSd7X>qL;5y*!|bF0K_~ zdvu(~{|6vT%(_{FQXyrJyhpd}y;e{X12yk=f*k$-ayP3nM7rc1Ncmcj)1%`KA7_<- z+VOf8q&v`T%bCi+5YJS?4yyb>{e$F_9=)t$V7o;+Js|d*gY5tR02F@UB4Y<L0|Uc{ zcGmMLAU80TaKXw}2L_LB*_ADzDCNDB0`=p^l*vmIjTuEI-%KoJ`X@L!AW59*Y1HJ* zBvr<Jllzm57_}!KN;<)~Yjbz<bVkNmla*6j7<nhJNDX7$H~D|67USg2T4|DOjGdER za+1W=WWedbqucaIB?H6%Yv4W}>w?L9b7bqA*pY$>o&r32Mc+z;G~I-$J{8HpP;#Q1 z!J}7HA5^Avih96x9-i=DwW$i!M*goV1f`>(G>mTr<tIUDE(l$(`l}M6@eq`T@pnP_ zpP)3%056C}RT%vWDi6~)3(9{4rC|<Gg6e~*hnQRcUlpbSq7c?p{jd6|0^%?ss6k9n zItnVD1*NUfXqbExRJ;oxT|eQ!>LRFuSLF~3VH&-l;-{eEMNqyFlwJiD{{*FB>V84_ zNl<mSpnRD5Fnvaq3=EUc<^7seARrVVolyYE@(@y?da_bM9^-+{6AK<Q)!Xd)|Nr+E z2$q4ed7$*1oe*)5e9X@O|81arnVtXt|JebNI|Ee<QbPu=2V1@oYDf)~j@kA9KhN&} z|KC9QI=dm3fh@QKwHU-k$8|{RU~-Ol)c@X64>5QSRMDF4|Np<){{Mf@_W%ENK<sV* z|L@rb5u39OqPB3`|NlPQ{{I);_WwV~@H<-};vfs>Z2kWqqz)tw;)5`Z4HEavOUum5 zEU9GhOY~zfU|<Lr*!%zgf;|v?VDJC`6E-uJdNbFXh%qp@Y+zt;5My8v5NBWr*Z`q> zBp4WCHZU+ukYHe#D#5@|uz`VLfdm7?QV9lzk_`+D8zdMQiX|BsDmE}MG)OWqXi70K zbZlT?Fpy$kFqUFqn6rU_AwY_O;g=Kx!vfHdgfs(#h%^JkiVX}53epS={?ZH#8#XZ1 zGXzL8Fzl3OVA!#Nf#HBO1H)ly28JUW7#J={Gca6{W?(q6fq~(HGy}sEX$FQf8yFZq zNHZ|F$uKZn09hczz)&H_z;FlT2ss9ZEJX%}4;vU53KSU_mMStZuxw;t*r3S3AfUv+ zz_SrT>nJfWNNi+aFi>J(_^njWz#y}cfq_Apf#J6@1A`8Tt-`>tNR@%X2BcY)fnkms z1B1&(28IP{3=Fjz3=AO~85kNg7#QAaFfb%+WMKH9!N8EO$-q#sk%6H=lYxO>i-Dm5 zWSJHN!*VSKh7OQ9S_}-gwHO#CY-C_~pvAzTqRqfC1>}f&Z3c$D+6)XcHZm|A&}Lxx zq0PXs1mp-E1_lEi28J~tMLG-&3v?J5wtyU=!@zJ{hk;?wMh1opIt&alx(p0QHZm|M z=rS;@(`8_|0J2P%fgw|mf#CtjL3#`f#d-`3FF@w&F)$p{V_<j#(yPb7a7~Yaq5cEN zMS2VjqWTOBUqA-wGcY*nGcf$w$iNVw&%hvWz`($=iGe}EfPtahfPsN$69Yqo0Ruz6 zAp?WRCI*HALk0$2BL)VQO$-bMMhpz6j2IY9HZd?<Fk)bsZ_2=6vx$LWfhhySTnh#U z9}wGufuYBefgxoR1H%MMhI)pNHVh0En-~}vY#A7i+cGe8fHd1OFl@AAV3@Lrf#HB1 z14Ebt1H*z%3=9bl3=Hiq3=C^Pnq3$e>|Gfc4s2pzaByW{*yzW=a0aB_kAa~ng@NG- zNDXK_FO`9TVKW1RKq>=+e<}k5$7TkGfK&zst271%k<IlC3=U}w413ZU7&JCBFdRr{ zU{K3oU@+Otz+jNUz+jxoz~Hi(fx#h@fnjzg14G1S28IQh3=9`C85lA)LulnJ28IHV z`YZ+ppDYH38juB93=9{t85kNsYO)y^d~z5VW`M+V7#P;%Ffc6H%)qcAhk+rhK9_-E z&1MFMf?NiMIk^lBJ3toXGB7;KWnkE|nStR$E(61nJO+j%AcOK47}W9^7%qS;%V%J? zlh43#V>1K8gM0=CwgLu*7a(62Ffb?=GBA7qsVQV&$S7i9;Ml^zP*B9ckXp>ZAOT_* zGcar`W?<0S!oZMqpqPQ-X9)v?!4?JvhEfKGXQd1bHd`1NK9n*rd<BhYfW*rg7$nLW z7(%u%FesEWFi2G}FhqdZ6$}iC6$}h1AVVt{7^*557&5jnFf>#!Fl?`2V943Rz;K{~ zfx*9$fuUr}=EkNV#z}Rt!h9SIe3Q5gI1@Mu*aO%Ouv}nzusNe{3M<QJJ*L3P94!h$ zph5>!*nkQdP~l=Awb`oW7-Le!2S~*NB5!<WU;vF_cOZ#{{9s@x_{6|a@DZc}f=~Ql zV2Jq4z~Jx+!UvHzelRd-d|_Y+KoWcLgMq=~%S1)7dXFz4H3%F9<rhKeE+{<@N^gPE zr=avLDE$sfGkk@ZB?YCmptKv5j)Kxf5W1eB3Bq8Q0i`!V=@U@;4wU`|rMbRAEYN_` z22k1sN(VvdJSg1&r6)jXh;9akWng|i1H%?DgMr}?l)eO|A3*6>Q2HB`{s*NwzC(-> zg3?k@S_w+)Kxq>wZ3Cs<pmYd`2K5@^Knw;3h72fOGWlVrc>NS8ZyuCh0i_|9GB9jH z;~zoeQy8)J3>3yJg%MlNz(85dQW&uz3=9ku#Vi8@1J;NQrZi%?7+f-oQj<%JU7U+j z6H8Jp8Lm&hdsuw)r>-F8dIknB$MBGN_tX-{aF7=mJ}@w(7^hh3rR3y*QjW+61_m19 zdJMz8U4#5weT<D@4$%0(z(6~!2QfUixGcG-1Y)Jl2L^`FVAmj+69PUkFk~f`gJm}# zEYM_}EIC1(2iBTbkj^OBtT^ci<EBZBOq+S9d}f?zz%yyu0}%%{P|sfh+;wJP=we`C z5MZDDWts`o1dhoDv*c{_7#SEAa3HIxWMp92fFg2~k%6Is6IqQg69a<**W{Mz5sdPa zRc9zO1#nF^m?b5hSdv<i37VtihN;#|%gg~)?uwJ^XDBnOPF_4iSv3GI3yRt%CI*HB za1oe#^~tYiC^PCz=AWs|bb%Y>RPlLC3=9u26zWgToT)6_z=v+3>E!t{m6-|zL0UC$ zF)=V~5QHg-kIzla%wu2>5Q2%oY_*!qJxiI<V6y%!Wnl(kbXkYVsk4-s7(~EE8Za|3 zY!HPh0eQrYnSo(}7)%6aq|@Y!vy>U#Cx4x#Z2mz4CJRzu#mvA^Ac-t8i<yBzKnf-T zGr@DR|7>N(u*t=<m6<k3fh@1T%FMv<0Im>Z*b`<31_NoBR*=X~W=LC|kpUL_Vk`^{ z3^K@S^jH`e3{XTISr`}=poj#rFfd#|5y{hFVPH^@MK)*x3j@OjxCqSU(UW86C^HsJ zZk(emTp$Ni50j0Z%s4}tF@EyxIm(l7&EcBNF;|N5z~sg`(vzlfO#U~AcXIGtamEW! z0mkgf{d1KWA3(X2`{oKvel}NxNkJZz@Fq>;U@V#}KTlcM!4%z^vdN+Il$j3L!PHev zo;y!jRUj0m4ir`|Sr`}s;36;w)=z#qPucuHII_ympb(3IiR2~~<)r2@FgQfQL|}T` zCfm<fW?B#liY{v&RtAO(a3vrMWmp*)45DC~KqBg_3=9Eq5tuREllRV7X1p-@;e2J` zfEbv1nC#5S;tQ1PKg7bsLFROW?21DcnGUim9$925D+9v=6p{6;3=9GZ$ZB?hbR{B- zoMdHSC`dvUxdswRNk$fWz{<dI07c|AD+2>VDzcidtPBhvP(=QN)TG1Iz`O^VE%^7J zfgznSeX_y=Q8sQi1_p(6P>704fS4KR8Wv2>U8u~s2%N5#fXK-c7EWN?F*$RQa<l^% zOm%TdQEE|9e$k6em`Hq1esVSg149Q~Bt5kxHLr|;;Q?HvJh>Pg)gRy@pwRYWV_;Y? z`S~K{`T!L1P&NhzhHRMmiAniIpi*%KTupLfPELL@1498^q&PD@FENLKVFN;>q$n>r zw}9aQTm)oeA{zrk1d2!w8w10Sdbm(pL1{@c0|UbexClsF85^V{geVOf*%%ly;A-Mi zi;D6<eHFM!Vo81`NGC@Y%p1iekkq~duBN!8C>hjyVaS4KJCK%cHU@?Xa7FQ@dEoG! z0T)RtN(I#k3<;C{m&n&oXJcRx09yhX;bmZ0!p6X0Fg2s#|9_asVNf_TGcbT=(LtlY z3=HSl7#Ko0kVRgD!khtFgpnQO8i*MXT>|V33=-gYfrv6N$k($oFm#|8t<BEB@B+m_ zHtY-x94Kmn*%=rbP}JnJGcasGQB%Xtz;J^J*+KnK2XQgLte?j|IcKR-{VH|_1`8D9 zwzD%ZIG~7}XJ=p#U|?VXc@yHBXY33N2CNJWpaExy$S-yVh6of#@Nh6Nyg(6=;b35x z0CfOFmsT7oTp1V`5CQH45)nWai3W)<C?KgR<zQd{Wn6@=i5v_JpmiynP~#aG7IQE# z6ilvNW>~+UgMk4wG!8NbV(n>=Y7{Tt;DC4$q5l;J149Bz7&34&FchG8NRSiVRz*$* zh6)rldOn;C44|b3h@iLRWMDXfqR5StfdN#2AwoEwlYwCZiuDzo3=AHVyO+z?_i!>W zY(R1T3{D1y87LwvK|Vo=v+W=|P)xkYi5`nzKwd;Kha2Q<l;}{d=VD-(fntyu7X!lq z6c0Iqw4sQ^LDe9VOePltg8_<V6<iDqphZWBU}y)e7h_-m1wFJSIg`tbf#Cv*^;@_Y z7(gupL<Aq_Vqn;TqUILY<a;ZW>R*A}g_7R>b1^V%Kv62o&A_k%#a%|+pzMrXEI5MH zp!m;+n}Hz%MOPe17fR5T)N?a1fZ9T!WC+3x3_aWo44}k^aQiZD^jxwVWDo-b1IX<V zT}QbY7&=fayT{GI;K72N<zI0#Fg!qU;&*OPClRH16XjuG_<-VjeI5p|8zBw~&Ph!L zjoK@qSZ2q=z+i!5SpW|M!wZx`F`kEk0kpyl<X{kHV94QNFk#?8DFdr`7#Ki3dWdD9 zK%T<Gz;FS@vZa&fuTmD@$iu+Uz=B-j9N=MKh?snHm3;kK9!NGsnDP|l320FOvHUL& zdIsm^Wnfr<Vv`~-1H%nafeY2iz+lPCz)*n_JR!W`mMl_P7+=rJz@Q+ETs)TXg1my9 zYCCut7z9w%Oygx>=s+=g1IQed2s_Tpz_0>E%^h9_v><%VThG9dfuijnF9X8|6cKJd z28IPF1}X7DoQNnwP5BrYUZAK6=3`*+KrttmkAZ;$CE~0280r}gphQdu9|OY;6m3&M zmN6lh=_~jc7!IIVc7l(A;RH%_JmLc<M5J>6J4g+RE<Sz+236EzT85v2;RcF9n*0n5 z29ved%KLioGcX9CI4z5xfnfrQNCiIw!w(ew?fmF<_f&ochKkA4*UD=y<7Z%afTDUA zNHvOy$M_i-c1*s%R=)l=KPc1%ki7JTpMk*xrGR4-fTVIn%!mjuFn}gWKq(o785j%& z7#K8A>~I!fV3>g7j!*#xh5(dSNs5>N1H%UtMHK=J3>K3c*U8uS3P2o!C}d^{Ffd4< zq}gQx3=9b<`u7PiFgTz%<e~rrLj#J)Ljg!8N0jP6K<1#R;j9;AV7P!HBqa#Ru^=CV zFav{;AOnL9ijTZNYEaT+gdiw{k&{{hhDf6z1H%s#yZQv{85kPC9Yt9CXtp2&g9eK4 zHwrQ^NT67@PmqBj03IIk`FY?$hz4+T6K2juLG()Yu^>ba5yAfj8S25#MhJ-uF)++P zaigjb1A_!gjczN%z;FO=J;;DyAqIvYC>bPM2;KT#AqIv96g5kQ7#MU>6X8}N28I(T z<@tFb28IRDf{|&m;6`DlheDgxHpa7Up1*w~<K%*!J2yM+YGvjF4Hd<w<mAL><|XE) rZa%h`pK0^!{Vy2#;xkecQ{rLLlP?{7Ir+*V_01xOof#+R9nl5=*mT`& delta 12263 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 CFe(%P diff --git a/lib/native/windows/jnawtrenderer.dll b/lib/native/windows/jnawtrenderer.dll index e5465904230447c901d1ea3540cfa256b538b16d..bc476fd12152af7756df62fff719a5c820066962 100644 GIT binary patch delta 8069 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 Mwo7lW-#(QI0DoplS^xk5 delta 8289 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 diff --git a/src/native/build.xml b/src/native/build.xml index 45102fa6..d06d0e63 100644 --- a/src/native/build.xml +++ b/src/native/build.xml @@ -52,6 +52,18 @@ <os arch="x86_64" /> </or> </condition> + <condition property="is.running.windows_32" value="y"> + <and> + <isset property="is.running.windows"/> + <equals arg1="${arch}" arg2="32" /> + </and> + </condition> + <condition property="is.running.windows_64" value="y"> + <and> + <isset property="is.running.windows"/> + <equals arg1="${arch}" arg2="64" /> + </and> + </condition> <!-- Cross compilation. It is mainly used on Linux to cross-compile 32-bit @@ -235,9 +247,9 @@ <linkerarg value="-ojnawtrenderer.dll" if="is.running.windows" /> <linkerarg value="-Wl,--kill-at" if="is.running.windows" /> - <linkerarg value="-L${system.JAVA_HOME}/lib" if="is.running.windows" /> + <linkerarg value="-L${system.JAVA_HOME}/lib" if="is.running.windows_32" /> + <linkerarg value="-L${system.JAVA_HOME}/jre/bin" if="is.running.windows_64" /> <linkerarg value="-ld3d9" location="end" if="is.running.windows" /> - <linkerarg value="-ld3dx9" location="end" if="is.running.windows" /> <fileset dir="${src}/native/jawtrenderer" includes="org*.c JAWTRenderer_Windows.c" if="is.running.windows"/> </cc> diff --git a/src/native/jawtrenderer/JAWTRenderer_Windows.c b/src/native/jawtrenderer/JAWTRenderer_Windows.c index bf161c0d..a38548e3 100644 --- a/src/native/jawtrenderer/JAWTRenderer_Windows.c +++ b/src/native/jawtrenderer/JAWTRenderer_Windows.c @@ -8,10 +8,11 @@ #include "JAWTRenderer.h" #include <d3d9.h> -#include <d3dx9tex.h> #include <jawt_md.h> #include <stdint.h> +#include <stdio.h> #include <stdlib.h> +#include <string.h> typedef struct _JAWTRenderer { @@ -63,12 +64,13 @@ jboolean JAWTRenderer_paint (jint version, JAWT_DrawingSurfaceInfo *dsi, jclass clazz, jlong handle, jobject g, jint zOrder) -{ - HDC hdc = ((JAWT_Win32DrawingSurfaceInfo *) (dsi->platformInfo))->hdc; +{ + JAWT_Win32DrawingSurfaceInfo *win32dsi + = (JAWT_Win32DrawingSurfaceInfo *) (dsi->platformInfo); JAWTRenderer *thiz = (JAWTRenderer *) (intptr_t) handle; LPDIRECT3DDEVICE9 device = thiz->device; - HWND hwnd = WindowFromDC(hdc); + HWND hwnd = win32dsi->hwnd ? win32dsi->hwnd : WindowFromDC(win32dsi->hdc); if (device && (thiz->hwnd == hwnd)) { @@ -103,9 +105,10 @@ JAWTRenderer_paint hr = IDirect3DDevice9_BeginScene(device); if (SUCCEEDED(hr)) { - IDirect3DDevice9_UpdateSurface( + IDirect3DDevice9_StretchRect( device, - thiz->surface, NULL, backBuffer, NULL); + thiz->surface, NULL, backBuffer, NULL, + D3DTEXF_LINEAR); IDirect3DDevice9_EndScene(device); clear = FALSE; } @@ -181,7 +184,7 @@ JAWTRenderer_process width, height, D3DFMT_X8R8G8B8, - D3DPOOL_SYSTEMMEM, + D3DPOOL_DEFAULT, &(thiz->surface), NULL); if (SUCCEEDED(hr)) @@ -209,23 +212,21 @@ JAWTRenderer_process if (thiz->surface) { - RECT rect; + HRESULT hr; + D3DLOCKED_RECT lockedRect; + + hr = IDirect3DSurface9_LockRect(thiz->surface, &lockedRect, NULL, 0); + if (SUCCEEDED(hr)) + { + jint y; + jbyte *dst = lockedRect.pBits; + INT dstPitch = lockedRect.Pitch; + size_t widthInBytes = width * sizeof(jint); - rect.bottom = height; - rect.left = 0; - rect.right = width; - rect.top = 0; - D3DXLoadSurfaceFromMemory( - thiz->surface, - NULL, - NULL, - data, - D3DFMT_A8R8G8B8, - width * 4, - NULL, - &rect, - D3DX_FILTER_NONE, - 0); + for (y = 0; y < height; y++, dst += dstPitch, data += width) + memcpy(dst, data, widthInBytes); + IDirect3DSurface9_UnlockRect(thiz->surface); + } } return JNI_TRUE; -- GitLab