diff -r 47332746e6d9 -r e154ccca4dad hedgewars/uStore.pas --- a/hedgewars/uStore.pas Tue Oct 29 23:08:10 2013 +0400 +++ b/hedgewars/uStore.pas Tue Oct 29 23:47:57 2013 +0400 @@ -110,43 +110,13 @@ end; procedure MakeCrossHairs; -var t: LongInt; - tmpsurf, texsurf: PSDL_Surface; - Color, i: Longword; +var tmpsurf: PSDL_Surface; begin -tmpsurf:= LoadDataImage(ptGraphics, cCHFileName, ifAlpha or ifCritical); - -for t:= 0 to Pred(TeamsCount) do - with TeamsArray[t]^ do - begin - texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, tmpsurf^.w, tmpsurf^.h, 32, RMask, GMask, BMask, AMask); - TryDo(texsurf <> nil, errmsgCreateSurface, true); - - Color:= Clan^.Color; - Color:= SDL_MapRGB(texsurf^.format, Color shr 16, Color shr 8, Color and $FF); - SDL_FillRect(texsurf, nil, Color); - - SDL_UpperBlit(tmpsurf, nil, texsurf, nil); + tmpsurf:= LoadDataImage(ptGraphics, cCHFileName, ifAlpha or ifCritical); - TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true); - - if SDL_MustLock(texsurf) then - SDLTry(SDL_LockSurface(texsurf) >= 0, true); - - // make black pixel be alpha-transparent - for i:= 0 to texsurf^.w * texsurf^.h - 1 do - if PLongwordArray(texsurf^.pixels)^[i] = AMask then - PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and Color; + CrosshairTexture:= Surface2Tex(tmpsurf, false); - if SDL_MustLock(texsurf) then - SDL_UnlockSurface(texsurf); - - FreeTexture(CrosshairTex); - CrosshairTex:= Surface2Tex(texsurf, false); - SDL_FreeSurface(texsurf) - end; - -SDL_FreeSurface(tmpsurf) + SDL_FreeSurface(tmpsurf) end; @@ -479,8 +449,8 @@ begin for ii:= Low(TSprite) to High(TSprite) do begin - FreeTexture(SpritesData[ii].Texture); - SpritesData[ii].Texture:= nil; + FreeAndNilTexture(SpritesData[ii].Texture); + if (SpritesData[ii].Surface <> nil) and (not reload) then begin SDL_FreeSurface(SpritesData[ii].Surface); @@ -490,30 +460,22 @@ SDL_FreeSurface(MissionIcons); // free the textures declared in uVariables -FreeTexture(WeaponTooltipTex); -WeaponTooltipTex:= nil; -FreeTexture(PauseTexture); -PauseTexture:= nil; -FreeTexture(SyncTexture); -SyncTexture:= nil; -FreeTexture(ConfirmTexture); -ConfirmTexture:= nil; -FreeTexture(ropeIconTex); -ropeIconTex:= nil; -FreeTexture(HHTexture); -HHTexture:= nil; +FreeAndNilTexture(CrosshairTexture); +FreeAndNilTexture(WeaponTooltipTex); +FreeAndNilTexture(PauseTexture); +FreeAndNilTexture(SyncTexture); +FreeAndNilTexture(ConfirmTexture); +FreeAndNilTexture(ropeIconTex); +FreeAndNilTexture(HHTexture); // free all ammo name textures for ai:= Low(TAmmoType) to High(TAmmoType) do - begin - FreeTexture(Ammoz[ai].NameTex); - Ammoz[ai].NameTex:= nil - end; + FreeAndNilTexture(Ammoz[ai].NameTex); // free all count textures for i:= Low(CountTexz) to High(CountTexz) do begin - FreeTexture(CountTexz[i]); + FreeAndNilTexture(CountTexz[i]); CountTexz[i]:= nil end; @@ -522,26 +484,17 @@ begin if TeamsArray[t] <> nil then begin - FreeTexture(TeamsArray[t]^.NameTagTex); - TeamsArray[t]^.NameTagTex:= nil; - FreeTexture(TeamsArray[t]^.CrosshairTex); - TeamsArray[t]^.CrosshairTex:= nil; - FreeTexture(TeamsArray[t]^.GraveTex); - TeamsArray[t]^.GraveTex:= nil; - FreeTexture(TeamsArray[t]^.HealthTex); - TeamsArray[t]^.HealthTex:= nil; - FreeTexture(TeamsArray[t]^.AIKillsTex); - TeamsArray[t]^.AIKillsTex:= nil; - FreeTexture(TeamsArray[t]^.FlagTex); - TeamsArray[t]^.FlagTex:= nil; + FreeAndNilTexture(TeamsArray[t]^.NameTagTex); + FreeAndNilTexture(TeamsArray[t]^.GraveTex); + FreeAndNilTexture(TeamsArray[t]^.HealthTex); + FreeAndNilTexture(TeamsArray[t]^.AIKillsTex); + FreeAndNilTexture(TeamsArray[t]^.FlagTex); + for i:= 0 to cMaxHHIndex do begin - FreeTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex); - TeamsArray[t]^.Hedgehogs[i].NameTagTex:= nil; - FreeTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex); - TeamsArray[t]^.Hedgehogs[i].HealthTagTex:= nil; - FreeTexture(TeamsArray[t]^.Hedgehogs[i].HatTex); - TeamsArray[t]^.Hedgehogs[i].HatTex:= nil; + FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex); + FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex); + FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].HatTex); end; end; end;