From a3897183c7d63e274db2a7b625568ef1b6c6a384 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 20 Aug 2002 00:20:06 +0000 Subject: [PATCH] Updated for embedded Visual C++ 4.0 --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40454 --- Makefile.am | 1 + README.WinCE | 5 +-- VisualCE.zip | Bin 0 -> 9350 bytes include/SDL_main.h | 7 ++-- src/audio/windx5/SDL_dx5audio.c | 10 ++--- src/main/win32/SDL_main.c | 3 ++ src/timer/win32/SDL_systimer.c | 4 +- src/video/SDL_sysvideo.h | 1 + src/video/wincommon/SDL_lowvideo.h | 6 ++- src/video/wincommon/SDL_sysevents.c | 33 +++++++++------- src/video/wincommon/SDL_wingl.c | 6 +-- src/video/windib/SDL_dibevents.c | 27 ++------------ src/video/windib/SDL_dibvideo.c | 47 ++++++++--------------- src/video/windx5/SDL_dx5events.c | 28 +++++++++++--- src/video/windx5/SDL_dx5video.c | 56 +++++++++++++++++++--------- src/video/windx5/SDL_dx5video.h | 2 +- 16 files changed, 126 insertions(+), 110 deletions(-) create mode 100644 VisualCE.zip diff --git a/Makefile.am b/Makefile.am index a6b75f95a..fbbccda30 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,6 +39,7 @@ EXTRA_DIST = \ Borland.zip \ VisualC.html \ VisualC.zip \ + VisualCE.zip \ MPWmake.sea.bin \ CWprojects.sea.bin \ PBProjects.tar.gz \ diff --git a/README.WinCE b/README.WinCE index 944df834b..7ca50fe69 100644 --- a/README.WinCE +++ b/README.WinCE @@ -1,8 +1,7 @@ +Project files for embedded Visual C++ 4.0 can be found in VisualCE.zip + NOTE: -SDL is NOT SUPPORTED on the WinCE platform! This is for experimental -purposes only. - There are several SDL features not available in the WinCE port of SDL. - DirectX is not yet available diff --git a/VisualCE.zip b/VisualCE.zip new file mode 100644 index 0000000000000000000000000000000000000000..834b4fb60d5828afe608600d36e7bf5023706464 GIT binary patch literal 9350 zcmZ{qWmJ^w*T#o#knWO{F6j`E?i#uq25FFPK}5P^=x&e(rMqirq(K-u1@v7W&wGx? zbNmM(FJ}3Zu0MORe-4rA##jd4^0)VRz zHx*%uG!@Z$4G*}4fq_;1E4K8vSd3p|HC`(IjPLl5csu|AfDDlI$7NMEW9l442LOaK z0RX(;<27C?vH>Mk|44(}h%FZB=bA3Z5XrCC%+W=5Qd zOJ_=oUCOD&%c-s!FBjCrEW$pGryPaI$R%7G^h;8i-es zGf@VWCm~5KvdRZre(S6Yd8LVwPcs|m=G%95M}R~qBIlndP2^sT*jV+=$hHp)#~Zg=HwUP^ZInJaqh`>Ws&KpeG;}#nVrd864WfR#%>U-i8s<4+xLr$Vg2NS$d}y3;NP(!5HzNSB2e5b2&wd zktIyk{e5fVJ*HhrDR=9+Q@K(85h}=9xxL;?JsMU*K29;{( z3R}}1W&3TQCGs&X2254D9pH|NKh!#2bn3KNX^KAIOFr=#44YRo*mn6#>?sIT#??3l zXHuh_ZBe*^Bg`Xbe_Zp1j?{I3kNQCkxn)AN8jDmkY(UcUSIHo-%J3nyjr8`ecZ8*y+gt@G<2Ya%N9JTgb2JdxhG`p7+ZI~zwM50DN!)lyrBg_!q{O03N z?<-ucIUd8twAVe=*GC-S#%iD$^Lpchi-v;%7@U3n{oTq+h`6|^dqAk&W7F3~r3M!_ z-O6uQ`-tgT) z4px@0%89XrPg(lGf)n>qa1AdRNJ4|&4Lk0?6u%)iYQ`n)#@{chK^CTz4d1_`JyVb% z^jx>)ZEf%LBHUck8o1G0vu?&hqV?AS1XLPDejCuea+xXu-@gY29vD%zaD-3@aw?9I zrR{Hz2ncS>IB#xYZArpi*jk*M>fJuqyTz~b4P>Fri@AA-V)TW&pCJ0#++O2ntt`#W ztdD;_!4N#?HWtWXlvc!b9vEOa%_phbWqN`SRBEJ?VN;>iRvWX)uh1!?aDdmYke9Bw zLLrSNcc3d3{{RgaXd>70k7^V$M^lh@IUGv7UDC-eGiP49Enwo8j)2G_Qs=HmQGYrD z&YF6!ADJtD@xt*1i#ila9ty%@tkFEiNEG|8;vnPrUU&x?Xdm%83SA}N`hexVq+x@c z3$;x*FJ-Jnr)D>F5faBjqkRTT`~(o-K%OV=pPcoIayBJ8{oG4a-Om#QTP{mcQsm#1hX#x`B z2)NZu^TPP_H2|9^!hB53`DwMSgWPixDq@*BGEa&2xS}|0YOy4Pu^fsTR_T)?zpTDC=sEX3$P~a{?3ul@7!Me5!wGytL z--bYGdiEfJ?5y$y?sI?sC4RMcJ;%;@9_eW%m2s`qGQ%$&yc)2)NZNRy#!T=`eeW2T zrS<63^gSAr!KDb7pv;@e5vw)%_|zois!}r7TBd6E6l0`uhhH+RgP-M)>O%Ws>TO*U6hzr+}E4zcK40y?7~8!0eF@qg4+UJ zu|iRHlaE4f%Z2(@#rJE%){qsCUgYHDB+NW>5i~@u?wa)J52|-VZ%Lm`j7|~qHj>#7 z&(B)FR!WP3|5>c=N9#Ao}?#jI^^m0P1`4n za>+P$i70Zn^U<&q##u;zm-TVNSR99ifkwtPV{)ol>(nRs9-!`4(aF|DHGmjRv{Pv# zzpwz!P*;~s-;b*;N(iGH5 z43{)V39c$ORvkZ((_2HYAs>R|ZXjRiEEf+GQa>*Xv0Rzi?kGHyqTYCo5U*NFt2b=T zyUGGglQWqReE!6^TP3HUv(A1o5SS=e!DQWnz;!KXlM8qYCg+bQ9Wb_{-+z4&%nsl98%(d_+0CBZssKhu|_HEV4<8m$E)#dwf; zjwtzhhadHJfLedvdv{wdURFiP316t;fTd}=nv^;3#hBp)^H!Hn4AQdFhB?Q`svpG% zE9HwENnq`>ecUO0V9@~$cD*7n>=f$IxUzO0oi$v}lFxM}fHxeeZxP-12t+37zt*H9 z4^p)HT`&Bcpb`}A0wyU=O; zv9Nd2JZKW8{-g9JUpTAJ8deXjGzkYBNXlIvKQsR~M9tcD4ml7g3D zo-&l@%xelr^ll6AzW0ypXD2HGDvY-Z_SC{s)USee5Q99-!OW+vQ) zv*Bw)_PQ3{TFc$98y&D5Fq09yhn_2~`7V6#AKl|NGJNJ~ag-^u9JiB1q}cU%nE{Q- z{?aOvXZmSmZvJ_Aa$^Y=;wZ>aY(V0Im8I_l+S~0qzws8HzFuFOnJ{-fpVXp*UUC_w zijs-R!b^^U&6ib{L&%DoB>6(lj{BMxxOk?`1Dl^(=&X2`*u;`eCYDN>pdyBw*y&~E zc)cV(&OS9P@Ty@`n_%{keE2-ZzXI#T0Y>f#dp#jFUi^uN5O6xWy=JhWNbXgn?%M_y zRcJtv9n!e6qYpv4bTi7`PQ*qcwUx2t=&+WIRBMJQok|fx{y5k8M+*zRmgWfbwXLqh za}g#X{r9hh^fx{EjB`F*`7`x>0=(6=Q!w2V85zB~d$)(uZoz|b7XKkN$AjmR;9PMR z9#{Rw{mt1hf^y{01L{T#sgS}j2u6_o^yAhLGs2vntj34p#V$mX?uoo&nY^ljvaNL- zg)OyY_1-RUznV#sL`q+(#MdLo6K0^?qTT`I6AV=zO}P)BcbAy$`9}lZYs30&5715k ziL^6aOv5MR+UOWa z{B#<19lHjJnR?je)C;Mk7mPB(QdaPaH(DOtcW>0GL1k0G|A2huDCU+J9If z(cc^uR6|Lj=f#r_!mpIzv$9;1jzsB_u_DA}+Jf8`WXp`G=e(;Javx+50vxA{B7^f{ zQG?+|e1)w%cA?{psOo7$_hdZjYDDT0a)}~mMBqecMB}1&EE_Og5oUrR)H8GwoVh&j z3SQ_tG^D@RxD|nLRf;3EVvJmOy3K?@C9EZPIbZYb5`BcOMQ0ghcX5Ot6)ZC1946Hj zBn-=-o?|A~ifZymbuhbm&C0E-Ibnt)p@}jqFpHPYI~YUjuEi^Tbej*aS{D~UyeEOz zNS_xf*}Z5np()qmEFiLurFkMD+TK zrF`wq=yG#hV>qz=)2}YlcX0g-Z<->EwZ0eEVSUX$7koz9>(ak9e$(8>|LxcT=5GgE z^_zpm{_V;gOl@ENbg={BrXtM0x!}KDtjpNeSRXt9aDfc~ko^}!BzufGv zxH)YH$0gY(-+bfFDT`i-@o2$ZOp}R3Cjdw>4FSxtMIusl^M?qHwH+TDvI3QF)*a{j zpV4wsLsK-ly1^;d)>hUOKE^!}8qc0`#ss}5+ie{UQxTSrK;ouuM`n5Uk&8q!+Xr2q zgI?6$USn&NL3mQt1lwDQ0G+-GCIPxm8bC(b;g93iIhoqacuc?Is&RTVNjS~G>1)Qd z`805*&Pc=LWG#p@=*$AKh%<9z>nsjuLU1o+k#Gba8jo~E(%x~D*7?v&Qya^`@m_B9 zS*EiLPRslY<2a3uTmzp+ai0W0|M!ymu1pJO-%C3S<>IU$lzO@tK=q5>7oXp}UO~t< zs2Aur?9c3!n~6x$ZGNVMb7lgwrMAa@@kpSF!}-D7q)LL?oX9~n5Otj)2<;0)g2{;a zA+J=(Fxfdd&tX#v+7-jnfl}7BnId# zbEQsx!9u7yf-h9)2Dh$W2hw#`!Zkki->+Q<w8C{_rDqLE`RNXmAIR_0a(e4!+gE^YR@NTlX#9C1BX%0qqd>*5 zbGrqk$+h;rERm_4Rng{QU5W$P)$!TTcM*&E{*KI(Le6?TLd^ZI*h+_J-}cZpVz7yi zK)SR(7?ztp;XdF_p}`ihT&`z3%7t0_bd`RWTXcA(E?J#XD4lPW*lLxp%QafI=6J1K zepPn1E@F))Ud#H3p1XLrPja#Ahn>d7YOu8NdU6Dz}ZZXLS z{a8vtU=!c~W*G^>zgshVP$j2G%rPgrThmcR31uLFWlC``Au=(>9JoqFBs&BN!I zh+C+hHFPdpBc3$4d$n7dwPqZJak1h*dSWJgq=fFeReOIa;0Xba%^V>*w-ScD{{~v< zYh%yO<%&q3i+TQVB54`?okwLyoIrANcn8%;ILBy{3tFszo^+*0YWxHeNt(0mY;C=z z?gw_OYGF81_KDbdsoC+0J91G%w&4c*7$q)lw7&Gt061(cxIQK~S1d5(M1bTvExDYX zno#B=V9PKE$9z65aNrnizELE3;oxu7$wR2<#L2qzR#;v|OyL!Kcv?Rq&dfET!MsKq z?LC#y?Zv^1@XW4r?*gPa}SeNq3wG^faz}R|q zbOzOZXHDpz8p&`RO&x=n1`oD3$@m%#K6W$5U&{A+xtHg)cb7mf4Fd1YQ4OJPfIk5;cGJ$C&NFi4bXAYsQAt_k4-^e^^Ub_aS8ins}F156&PVT&86WiKk@GcGbCXSMFKc8jH9=P_=~ETy z8V4{%7oD=+g5D-F+am#1oyrBd&Q&b8+_jr0*Uwh=bE;VPTV2KdwI;e*y1JQyoNP>g zR@TY?Sy_KHL<^jcr%(g{Aek5dp!#phU%bDn>yHNcYjxexIdoj+ee%5>a7X#-izttj z!$^$PD;_K-7J=tq2tmbi;Q&}EPF`HOS;l9zoJRrca&n~z7p20d3!yf96Hl|@1zkY&^L@&V)gI?Hd#uLixNrac9Vlb~NK@i$|X8lrpI(E{Y z%aWt{Di!nqy!Q(@8B?xjKo66P*xrf|@-X`*@*&Jk4%s*rz4`QWO$pG<{A4XiH1L}V z?3=Z;&rSjC^eXB32}6)vm|^0ZGW^#*^IU-~agq|$SUCsxn8ma&6;MlDT}qP8JAn5E z&U<35pMcudK%Uk0`xfh{fiYY-dTt89H(_kpAks}IQUjMUwkhaS30P)v?0&OvTxM#W z9nUU(#wPmjGfNpw7za92?g&NU8Kk`C?Tv|Q&y+squ0??h@18Z2^-L^d=OK%#qOnk99)GnmrIy?^xa%0`-!)$|3!Q=1^Oy{J&SlFOI zgn?i#WHx{7i3acag1A#O^dT>G9laTY1NEKptb;WOI_bRYBa;S|{Gnj)UNULeqE3A@ zV-K>xRRPb_if8I>>|m-@>;cel2WX@}bi;-tv}h}0nL448mO}6%&6+#L1wFx=fv0FT z3V#a&GqO(N1XVth8pYa6+I9MQeGiPMtvx?TwRmtB6j04~z-#b|T_)eToZ9y5dkW7b zz%aX`^B5MM4G$Rm5zn0K&e;{zY1=t!)RqM2ETf!f>(N5@)}Svf0zGdsMnYo`ClN%E zDW#kACUN25MJ^$NLc?(Ndv}cBR+HSn>r)t8&i%YTo%GHw-0CqY>V1 z!ka7yTDwS`%pkp8*mYaPFN`X#0h#%10xL1pg`=t=CNcD8=HsiV(d4O47M|pWT`H?o z>n#5UGjOHpv*Jf(`y5hvE)H#Jo8#L{+DB=T7=bVwK7JgUMW#ob zHz{RzT2RUXMU4KOd=IM43T>fGz<73OhHl4J1x{PmH*21tj=n3J$HbINN}fbz?2gVL zi^c^10n>i|hS*R^Z@>-m=DBx4iK~{@$Zg3!7m(81uV6gk?EVsiZa2)u8IN#-V#COu zhdBJ@o4D%U#v1mgakzPBG?tTd_ev~1XQNnYwKRUY#qh$;&Ql?Ss08AJE1?48(t`)j z^|J;2wn{?YWpzDb$C{~_xDE7Q+y_@s`#Ni@uC3zl&tDE1c9}0~uiz&(c_1*WW)sDo zv@`2y;D3jbWHNWL+oOJzp=`Q@4{)lG_E6{Ls#jr&ny6@CXU)e_*o$tY>ZxxOdF}87 z;(@r!=Z2^<^Jwge=;0gjO%|g&0EPb;_p4wd%3WLZrLW4fgSkHLDqL_yygSKa1%vua zQATrYx#9S>5vuiYmW{N*&S7NKE5G-4ZlVy{IS!)q*-)qrS$0}Lp)T#{;yCeprD&vL z8sVpreP|DT(MBuA;0>es_qlJwlLR>X6Rft(0!|p{@C_-H2!Wv4f@Z|Nw7NGc2^mr)tYK|wV+DBn9~LooU)7|=l=ie|j6E<1 zl@1sV>Lx95@e=@lOOtb5(p`+ zB?0@&c9}gsJG%w#!LM}lOl-OPZ?^mqNFql$e!#?>+3YWI) z-lD|>rc%I*(jB?HjmAATtkb29kL`qJdY@^oWn~Lk+N1CaCZC#l8setla=87`e;}q5 zZvYUC{cbnEaIkRS)xzeg(NZhPv{gL~1^j5_7T;dfB!F!y!9BBx@!S^DYyL%*I|rw| z@zio)((~j)K7(THQ=i7WOT5f!;_({60!~vNis&3D|AWWNu=HMue9k6?=Oo(qvcW+6lfh!-gi@7dT=H=^yGtQE%x-dlw}n&Y$sB!x!!Ip}!u;__NN}kv zFFvzOw`xMrN}Wo_IJlwlS~7dm+HeQe-bw-52|M1U)Q~Ine6<<*V()z2>C3Ve+p>W< zZ>{_LpmXH+n?QFBw6W`ZkII=ug@Li%>OwoM@|5)V=|=H8o^>lWyy;(T?{mXSpINyf z?1QiPUo4x~bF=tJZ@2u}fAnXjKYzXsi42kZMExl|5@QceiITKzty`p|x@<&kl!L7` z#CxoHp)-CQ$$OLb;Qge$HLnmO)(aGf-eeP+*|>dVpf zGw$(3Vv_VtK%cVWFpM4ELH(90lQ~#4{jM*ig2-yiC)P{rM$o|Qd95AS)4f6d6Y48o zE7%Mh7Bv=3IAcQk>@G4l8KD-qpa8togorRn1(dF6IBVc zVBI;DQ<*8=NjCa3g}8x%3auCQhzmX?u_2}eNLOWBipxLaW3EJpDvQb{&I(^zaddIQ zB%bNELM`jjo6$j(soS?aN46on1RJk+!$%k5U?A$SRt5%_RCU3YPt^HLmFuuwzB*h< zdgf%iIoEPGi@~ZNAz!Y&46xIVeI7hI0J&S1Vv}jX=C`+bLdNBG#|L*5P@s$Na zqV-9_qvHEd$7o0VZ@lXNsqTNVeTH z;x;ZS#M?fx_&jjLI{4yGKUO~pVag(>5x$j^N6?l#D96v>L6-g`oWgthwx{-(@Pa|F zI@UCm)`G7u@(uA~6k&a(rEE)0DI)=OB`+BJZ@x_^4?h zeK-&|TW5_0eY)Ts0%SID5vu_Of>eoLXr@UM)YD;EfWKUOaO=KMXT`scF6PY%qF zC6FNB-#LG+ULXMeSiSfi_wQlluef&@zZ~r+N?Yp(>W4G?8};*+{yl{I^@QIr|B3o@ zB!>X_V+e(ka~St)S`t|Q!TQH&?q8?j+~vO|&##HDko=bDPXUAg_(K5wp60)$&#!4xk^TqkA3_KL@P`ok YiA6yC@wuY{PyzUG0DwOAkN?5{0T553CjbBd literal 0 HcmV?d00001 diff --git a/include/SDL_main.h b/include/SDL_main.h index a20f9ba1e..6a7a8944e 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -30,9 +30,10 @@ static char rcsid = /* Redefine main() on Win32 and MacOS so that it is called by winmain.c */ -#if defined(WIN32) || (defined(__MWERKS__) && !defined(__BEOS__)) || \ - defined(macintosh) || defined(__APPLE__) || defined(__SYMBIAN32__) || \ - defined(QWS) +#if defined(WIN32) || defined(_WIN32) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(macintosh) || defined(__APPLE__) || \ + defined(__SYMBIAN32__) || defined(QWS) #ifdef __cplusplus #define C_LINKAGE "C" diff --git a/src/audio/windx5/SDL_dx5audio.c b/src/audio/windx5/SDL_dx5audio.c index 78ddd68c3..d79468d6d 100644 --- a/src/audio/windx5/SDL_dx5audio.c +++ b/src/audio/windx5/SDL_dx5audio.c @@ -63,7 +63,7 @@ static int Audio_Available(void) /* Version check DSOUND.DLL (Is DirectX okay?) */ dsound_ok = 0; - DSoundDLL = LoadLibrary("DSOUND.DLL"); + DSoundDLL = LoadLibrary(TEXT("DSOUND.DLL")); if ( DSoundDLL != NULL ) { /* We just use basic DirectSound, we're okay */ /* Yay! */ @@ -95,7 +95,7 @@ static int Audio_Available(void) * to fall back to the DIB driver. */ if (dsound_ok) { /* DirectSoundCaptureCreate was added in DX5 */ - if (!GetProcAddress(DSoundDLL, "DirectSoundCaptureCreate")) + if (!GetProcAddress(DSoundDLL, TEXT("DirectSoundCaptureCreate"))) dsound_ok = 0; } @@ -121,10 +121,10 @@ static int DX5_Load(void) int status; DX5_Unload(); - DSoundDLL = LoadLibrary("DSOUND.DLL"); + DSoundDLL = LoadLibrary(TEXT("DSOUND.DLL")); if ( DSoundDLL != NULL ) { DSoundCreate = (void *)GetProcAddress(DSoundDLL, - "DirectSoundCreate"); + TEXT("DirectSoundCreate")); } if ( DSoundDLL && DSoundCreate ) { status = 0; @@ -189,7 +189,7 @@ AudioBootStrap DSOUND_bootstrap = { static void SetDSerror(const char *function, int code) { static const char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { diff --git a/src/main/win32/SDL_main.c b/src/main/win32/SDL_main.c index 8625e3827..65db02f6e 100644 --- a/src/main/win32/SDL_main.c +++ b/src/main/win32/SDL_main.c @@ -225,6 +225,9 @@ int console_main(int argc, char *argv[]) /* Exit cleanly, calling atexit() functions */ exit(0); + + /* Hush little compiler, don't you cry... */ + return(0); } /* This is where execution begins [windowed apps] */ diff --git a/src/timer/win32/SDL_systimer.c b/src/timer/win32/SDL_systimer.c index 11fa67f7e..ed43bcae1 100644 --- a/src/timer/win32/SDL_systimer.c +++ b/src/timer/win32/SDL_systimer.c @@ -33,8 +33,8 @@ static char rcsid = #include "SDL_error.h" #ifdef _WIN32_WCE -#define USE_GETTICKCOUNT -#define USE_SETTIMER +//#define USE_GETTICKCOUNT +//#define USE_SETTIMER #endif #define TIME_WRAP_VALUE (~(DWORD)0) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 8d6fb1488..a325ae5d5 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -42,6 +42,7 @@ static char rcsid = #ifndef _WIN32_WCE #define HAVE_OPENGL #endif +#define WIN32_LEAN_AND_MEAN #include #endif diff --git a/src/video/wincommon/SDL_lowvideo.h b/src/video/wincommon/SDL_lowvideo.h index 32021d36c..938f301f8 100644 --- a/src/video/wincommon/SDL_lowvideo.h +++ b/src/video/wincommon/SDL_lowvideo.h @@ -53,7 +53,11 @@ static char rcsid = #define DINPUT_FULLSCREEN() DDRAW_FULLSCREEN() /* The main window -- and a function to set it for the audio */ -extern const char *SDL_Appname; +#ifdef _WIN32_WCE +extern LPWSTR SDL_Appname; +#else +extern LPSTR SDL_Appname; +#endif extern HINSTANCE SDL_Instance; extern HWND SDL_Window; extern const char *SDL_windowid; diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c index dbd8065cc..e200070e9 100644 --- a/src/video/wincommon/SDL_sysevents.c +++ b/src/video/wincommon/SDL_sysevents.c @@ -47,10 +47,15 @@ static char rcsid = #ifdef _WIN32_WCE #define NO_GETKEYBOARDSTATE +#define NO_CHANGEDISPLAYSETTINGS #endif /* The window we use for everything... */ -const char *SDL_Appname = NULL; +#ifdef _WIN32_WCE +LPWSTR SDL_Appname = NULL; +#else +LPSTR SDL_Appname = NULL; +#endif HINSTANCE SDL_Instance = NULL; HWND SDL_Window = NULL; RECT SDL_bounds = {0, 0, 0, 0}; @@ -578,21 +583,22 @@ int SDL_RegisterApp(char *name, Uint32 style, void *hInst) class.hCursor = NULL; #ifdef _WIN32_WCE { - /* WinCE uses the UNICODE version */ - int nLen = strlen(name)+1; - LPWSTR lpszW = alloca(nLen*2); - MultiByteToWideChar(CP_ACP, 0, name, -1, lpszW, nLen); - class.hIcon = LoadImage(hInst, lpszW, IMAGE_ICON, - 0, 0, LR_DEFAULTCOLOR); - class.lpszMenuName = NULL; - class.lpszClassName = lpszW; + /* WinCE uses the UNICODE version */ + int nLen = strlen(name)+1; + SDL_Appname = malloc(nLen*2); + MultiByteToWideChar(CP_ACP, 0, name, -1, SDL_Appname, nLen); } #else - class.hIcon = LoadImage(hInst, name, IMAGE_ICON, - 0, 0, LR_DEFAULTCOLOR); - class.lpszMenuName = "(none)"; - class.lpszClassName = name; + { + int nLen = strlen(name)+1; + SDL_Appname = malloc(nLen); + strcpy(SDL_Appname, name); + } #endif /* _WIN32_WCE */ + class.hIcon = LoadImage(hInst, SDL_Appname, IMAGE_ICON, + 0, 0, LR_DEFAULTCOLOR); + class.lpszMenuName = NULL; + class.lpszClassName = SDL_Appname; class.hbrBackground = NULL; class.hInstance = hInst; class.style = style; @@ -606,7 +612,6 @@ int SDL_RegisterApp(char *name, Uint32 style, void *hInst) SDL_SetError("Couldn't register application class"); return(-1); } - SDL_Appname = name; SDL_Instance = hInst; #ifdef WM_MOUSELEAVE diff --git a/src/video/wincommon/SDL_wingl.c b/src/video/wincommon/SDL_wingl.c index caf8abde8..9d067bdfe 100644 --- a/src/video/wincommon/SDL_wingl.c +++ b/src/video/wincommon/SDL_wingl.c @@ -27,7 +27,9 @@ static char rcsid = /* WGL implementation of SDL OpenGL support */ +#ifdef HAVE_OPENGL #include "SDL_opengl.h" +#endif #include "SDL_error.h" #include "SDL_lowvideo.h" #include "SDL_wingl_c.h" @@ -264,10 +266,6 @@ void WIN_GL_SwapBuffers(_THIS) SwapBuffers(GL_hdc); } -#endif /* HAVE_OPENGL */ - -#ifdef HAVE_OPENGL - void WIN_GL_UnloadLibrary(_THIS) { if ( this->gl_config.driver_loaded ) { diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index 26eb31da0..8a49ddced 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -333,28 +333,9 @@ static SDL_keysym *TranslateKey(UINT vkey, UINT scancode, SDL_keysym *keysym, in int DIB_CreateWindow(_THIS) { -#ifdef _WIN32_WCE - /* WinCE uses the UNICODE version */ - int nLen; - LPWSTR lpszW; - - if ( SDL_RegisterApp("SDL_app", 0, 0) != 0 ) { - return -1; - } - - nLen = strlen(SDL_Appname) + 1; - lpszW = alloca(nLen * 2); - - MultiByteToWideChar(CP_ACP, 0, "SDL_App", -1, lpszW, nLen); - - SDL_Window = CreateWindow(lpszW, lpszW, WS_VISIBLE, - 0, 0, 0, 0, NULL, NULL, SDL_Instance, NULL); - if ( SDL_Window == NULL ) { - SDL_SetError("Couldn't create window"); - return(-1); - } - ShowWindow(SDL_Window, SW_HIDE); -#else +#ifndef CS_BYTEALIGNCLIENT +#define CS_BYTEALIGNCLIENT 0 +#endif SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); @@ -376,8 +357,6 @@ int DIB_CreateWindow(_THIS) } ShowWindow(SDL_Window, SW_HIDE); } -#endif /* _WIN32_WCE */ - return(0); } diff --git a/src/video/windib/SDL_dibvideo.c b/src/video/windib/SDL_dibvideo.c index 5238f8134..0ab2670b7 100644 --- a/src/video/windib/SDL_dibvideo.c +++ b/src/video/windib/SDL_dibvideo.c @@ -53,6 +53,15 @@ static char rcsid = #define NO_CHANGEDISPLAYSETTINGS #define NO_GAMMA_SUPPORT #endif +#ifndef WS_MAXIMIZE +#define WS_MAXIMIZE 0 +#endif +#ifndef SWP_NOCOPYBITS +#define SWP_NOCOPYBITS 0 +#endif +#ifndef PC_NOCOLLAPSE +#define PC_NOCOLLAPSE 0 +#endif /* Initialization/Query functions */ static int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat); @@ -143,11 +152,11 @@ static SDL_VideoDevice *DIB_CreateDevice(int devindex) device->SetGammaRamp = DIB_SetGammaRamp; device->GetGammaRamp = DIB_GetGammaRamp; #ifdef HAVE_OPENGL - device->GL_LoadLibrary = WIN_GL_LoadLibrary; - device->GL_GetProcAddress = WIN_GL_GetProcAddress; - device->GL_GetAttribute = WIN_GL_GetAttribute; - device->GL_MakeCurrent = WIN_GL_MakeCurrent; - device->GL_SwapBuffers = WIN_GL_SwapBuffers; + device->GL_LoadLibrary = WIN_GL_LoadLibrary; + device->GL_GetProcAddress = WIN_GL_GetProcAddress; + device->GL_GetAttribute = WIN_GL_GetAttribute; + device->GL_MakeCurrent = WIN_GL_MakeCurrent; + device->GL_SwapBuffers = WIN_GL_SwapBuffers; #endif device->SetCaption = WIN_SetWMCaption; device->SetIcon = WIN_SetWMIcon; @@ -440,10 +449,8 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, (WS_POPUP); const DWORD windowstyle = (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX); -#ifndef _WIN32_WCE const DWORD resizestyle = (WS_THICKFRAME|WS_MAXIMIZEBOX); -#endif int binfo_size; BITMAPINFO *binfo; HDC hdc; @@ -455,12 +462,10 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, /* See whether or not we should center the window */ was_visible = IsWindowVisible(SDL_Window); -#ifdef HAVE_OPENGL /* Clean up any GL context that may be hanging around */ if ( current->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } -#endif /* HAVE_OPENGL */ /* Recalculate the bitmasks if necessary */ if ( bpp == current->format->BitsPerPixel ) { @@ -542,9 +547,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, } style = GetWindowLong(SDL_Window, GWL_STYLE); -#ifndef _WIN32_WCE style &= ~(resizestyle|WS_MAXIMIZE); -#endif if ( (video->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN ) { style &= ~windowstyle; style |= directstyle; @@ -562,13 +565,11 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, style &= ~directstyle; style |= windowstyle; if ( flags & SDL_RESIZABLE ) { -#ifndef _WIN32_WCE style |= resizestyle; -#endif video->flags |= SDL_RESIZABLE; } } -#ifndef _WIN32_WCE +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; #endif } @@ -659,11 +660,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; -#ifndef _WIN32_WCE - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE); -#else - AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE,0); -#endif + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -671,11 +668,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, if ( y < 0 ) { /* Cover up title bar for more client area */ y -= GetSystemMetrics(SM_CYCAPTION)/2; } -#ifndef _WIN32_WCE swp_flags = (SWP_NOCOPYBITS | SWP_FRAMECHANGED | SWP_SHOWWINDOW); -#else - swp_flags = (SWP_FRAMECHANGED | SWP_SHOWWINDOW); -#endif if ( was_visible && !(flags & SDL_FULLSCREEN) ) { swp_flags |= SWP_NOMOVE; } @@ -689,7 +682,6 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, SetForegroundWindow(SDL_Window); } -#ifdef HAVE_OPENGL /* Set up for OpenGL */ if ( flags & SDL_OPENGL ) { if ( WIN_GL_SetupWindow(this) < 0 ) { @@ -697,7 +689,6 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, } video->flags |= SDL_OPENGL; } -#endif /* HAVE_OPENGL */ /* We're live! */ return(video); @@ -760,11 +751,7 @@ int DIB_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) entries[i].peRed = colors[i].r; entries[i].peGreen = colors[i].g; entries[i].peBlue = colors[i].b; -#ifndef _WIN32_WCE entries[i].peFlags = PC_NOCOLLAPSE; -#else - entries[i].peFlags = 0; -#endif } SetPaletteEntries(screen_pal, firstcolor, ncolors, entries); SelectPalette(hdc, screen_pal, FALSE); @@ -917,11 +904,9 @@ void DIB_VideoQuit(_THIS) ShowWindow(SDL_Window, SW_HIDE); } #endif -#ifdef HAVE_OPENGL if ( this->screen->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } -#endif /* HAVE_OPENGL */ this->screen->pixels = NULL; } if ( screen_bmp ) { diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index 7d81ac7ac..0f49f38f0 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -43,6 +43,10 @@ static char rcsid = #define WM_APP 0x8000 #endif +#ifdef _WIN32_WCE +#define NO_GETKEYBOARDSTATE +#endif + /* The keyboard and mouse device input */ #define MAX_INPUTS 16 /* Maximum of 16-1 input devices */ #define INPUT_QSIZE 32 /* Buffer up to 32 input messages */ @@ -67,7 +71,7 @@ static WNDPROC userWindowProc = NULL; static void SetDIerror(char *function, int code) { static char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { @@ -449,6 +453,7 @@ LONG DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { +#ifdef WM_ACTIVATEAPP case WM_ACTIVATEAPP: { int i, active; @@ -467,7 +472,9 @@ LONG } } break; +#endif /* WM_ACTIVATEAPP */ +#ifdef WM_DISPLAYCHANGE case WM_DISPLAYCHANGE: { WORD BitsPerPixel; WORD SizeX, SizeY; @@ -479,6 +486,7 @@ LONG /* We cause this message when we go fullscreen */ } break; +#endif /* WM_DISPLAYCHANGE */ /* The keyboard is handled via DirectInput */ case WM_SYSKEYUP: @@ -489,6 +497,7 @@ LONG } return(0); +#if defined(SC_SCREENSAVE) || defined(SC_MONITORPOWER) /* Don't allow screen savers or monitor power downs. This is because they quietly clear DirectX surfaces. It would be better to allow the application to @@ -501,11 +510,11 @@ LONG (wParam&0xFFF0)==SC_MONITORPOWER) return(0); } - goto custom_processing; - break; + /* Fall through to default processing */ + +#endif /* SC_SCREENSAVE || SC_MONITORPOWER */ default: { - custom_processing: /* Only post the event if we're watching for it */ if ( SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE ) { SDL_SysWMmsg wmmsg; @@ -759,14 +768,21 @@ static SDL_keysym *TranslateKey(UINT scancode, SDL_keysym *keysym, int pressed) keysym->unicode = 0; if ( pressed && SDL_TranslateUNICODE ) { /* Someday use ToUnicode() */ UINT vkey; +#ifndef NO_GETKEYBOARDSTATE BYTE keystate[256]; BYTE chars[2]; +#endif vkey = MapVirtualKey(scancode, 1); +#ifdef NO_GETKEYBOARDSTATE + /* Uh oh, better hope the vkey is close enough.. */ + keysym->unicode = vkey; +#else GetKeyboardState(keystate); if ( ToAscii(vkey,scancode,keystate,(WORD *)chars,0) == 1 ) { keysym->unicode = chars[0]; } +#endif } return(keysym); } @@ -782,7 +798,9 @@ int DX5_CreateWindow(_THIS) SDL_DIfun[i] = NULL; } - /* Create the SDL window */ +#ifndef CS_BYTEALIGNCLIENT +#define CS_BYTEALIGNCLIENT 0 +#endif SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); diff --git a/src/video/windx5/SDL_dx5video.c b/src/video/windx5/SDL_dx5video.c index 695e2b144..08526288e 100644 --- a/src/video/windx5/SDL_dx5video.c +++ b/src/video/windx5/SDL_dx5video.c @@ -51,10 +51,23 @@ static char rcsid = #include "SDL_dx5yuv_c.h" #include "SDL_wingl_c.h" +#ifdef _WIN32_WCE +#define NO_CHANGEDISPLAYSETTINGS +#endif +#ifndef WS_MAXIMIZE +#define WS_MAXIMIZE 0 +#endif +#ifndef SWP_NOCOPYBITS +#define SWP_NOCOPYBITS 0 +#endif +#ifndef PC_NOCOLLAPSE +#define PC_NOCOLLAPSE 0 +#endif + /* DirectX function pointers for video and events */ HRESULT (WINAPI *DDrawCreate)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); -HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT *ppDI, LPUNKNOWN punkOuter); /* This is the rect EnumModes2 uses */ struct DX5EnumRect { @@ -443,19 +456,19 @@ static int DX5_Available(void) /* Version check DINPUT.DLL and DDRAW.DLL (Is DirectX okay?) */ dinput_ok = 0; - DInputDLL = LoadLibrary("DINPUT.DLL"); + DInputDLL = LoadLibrary(TEXT("DINPUT.DLL")); if ( DInputDLL != NULL ) { dinput_ok = 1; FreeLibrary(DInputDLL); } ddraw_ok = 0; - DDrawDLL = LoadLibrary("DDRAW.DLL"); + DDrawDLL = LoadLibrary(TEXT("DDRAW.DLL")); if ( DDrawDLL != NULL ) { HRESULT (WINAPI *DDrawCreate)(GUID *,LPDIRECTDRAW *,IUnknown *); LPDIRECTDRAW DDraw; /* Try to create a valid DirectDraw object */ - DDrawCreate = (void *)GetProcAddress(DDrawDLL, "DirectDrawCreate"); + DDrawCreate = (void *)GetProcAddress(DDrawDLL, TEXT("DirectDrawCreate")); if ( (DDrawCreate != NULL) && !FAILED(DDrawCreate(NULL, &DDraw, NULL)) ) { if ( !FAILED(IDirectDraw_SetCooperativeLevel(DDraw, @@ -511,15 +524,15 @@ static int DX5_Load(void) int status; DX5_Unload(); - DDrawDLL = LoadLibrary("DDRAW.DLL"); + DDrawDLL = LoadLibrary(TEXT("DDRAW.DLL")); if ( DDrawDLL != NULL ) { DDrawCreate = (void *)GetProcAddress(DDrawDLL, - "DirectDrawCreate"); + TEXT("DirectDrawCreate")); } - DInputDLL = LoadLibrary("DINPUT.DLL"); + DInputDLL = LoadLibrary(TEXT("DINPUT.DLL")); if ( DInputDLL != NULL ) { DInputCreate = (void *)GetProcAddress(DInputDLL, - "DirectInputCreateA"); + TEXT("DirectInputCreateA")); } if ( DDrawDLL && DDrawCreate && DInputDLL && DInputCreate ) { status = 0; @@ -596,11 +609,11 @@ static SDL_VideoDevice *DX5_CreateDevice(int devindex) device->SetGammaRamp = DX5_SetGammaRamp; device->GetGammaRamp = DX5_GetGammaRamp; #ifdef HAVE_OPENGL - device->GL_LoadLibrary = WIN_GL_LoadLibrary; - device->GL_GetProcAddress = WIN_GL_GetProcAddress; - device->GL_GetAttribute = WIN_GL_GetAttribute; - device->GL_MakeCurrent = WIN_GL_MakeCurrent; - device->GL_SwapBuffers = WIN_GL_SwapBuffers; + device->GL_LoadLibrary = WIN_GL_LoadLibrary; + device->GL_GetProcAddress = WIN_GL_GetProcAddress; + device->GL_GetAttribute = WIN_GL_GetAttribute; + device->GL_MakeCurrent = WIN_GL_MakeCurrent; + device->GL_SwapBuffers = WIN_GL_SwapBuffers; #endif device->SetCaption = WIN_SetWMCaption; device->SetIcon = WIN_SetWMIcon; @@ -670,7 +683,7 @@ static HRESULT WINAPI EnumModes2(DDSURFACEDESC *desc, VOID *udata) void SetDDerror(const char *function, int code) { static char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { @@ -994,11 +1007,13 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, SDL_primary = NULL; } +#ifndef NO_CHANGEDISPLAYSETTINGS /* Unset any previous OpenGL fullscreen mode */ if ( (current->flags & (SDL_OPENGL|SDL_FULLSCREEN)) == (SDL_OPENGL|SDL_FULLSCREEN) ) { ChangeDisplaySettings(NULL, 0); } +#endif /* Clean up any GL context that may be hanging around */ if ( current->flags & SDL_OPENGL ) { @@ -1057,6 +1072,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, video->h = height; video->pitch = SDL_CalculatePitch(video); +#ifndef NO_CHANGEDISPLAYSETTINGS /* Set fullscreen mode if appropriate. Ugh, since our list of valid video modes comes from the DirectX driver, we may not actually be able to @@ -1077,6 +1093,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, SDL_fullscreen_mode = settings; } } +#endif /* !NO_CHANGEDISPLAYSETTINGS */ style = GetWindowLong(SDL_Window, GWL_STYLE); style &= ~(resizestyle|WS_MAXIMIZE); @@ -1096,7 +1113,9 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, video->flags |= SDL_RESIZABLE; } } +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; +#endif } SetWindowLong(SDL_Window, GWL_STYLE, style); @@ -1110,7 +1129,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE); + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -1157,7 +1176,9 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, style |= resizestyle; } } +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; +#endif } SetWindowLong(SDL_Window, GWL_STYLE, style); @@ -1466,8 +1487,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), - FALSE); + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -2235,11 +2255,13 @@ void DX5_VideoQuit(_THIS) /* If we're fullscreen GL, we need to reset the display */ if ( this->screen != NULL ) { +#ifndef NO_CHANGEDISPLAYSETTINGS if ( (this->screen->flags & (SDL_OPENGL|SDL_FULLSCREEN)) == (SDL_OPENGL|SDL_FULLSCREEN) ) { ChangeDisplaySettings(NULL, 0); ShowWindow(SDL_Window, SW_HIDE); } +#endif if ( this->screen->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } diff --git a/src/video/windx5/SDL_dx5video.h b/src/video/windx5/SDL_dx5video.h index df32a5ccc..db07b4b90 100644 --- a/src/video/windx5/SDL_dx5video.h +++ b/src/video/windx5/SDL_dx5video.h @@ -57,7 +57,7 @@ struct SDL_PrivateVideoData { /* DirectX function pointers for video and events */ extern HRESULT (WINAPI *DDrawCreate)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); -extern HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +extern HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT *ppDI, LPUNKNOWN punkOuter); /* DirectDraw error reporting function */ extern void SetDDerror(const char *function, int code);