# HG changeset patch # User koda # Date 1351394919 -3600 # Node ID fcbb024090a4051f6865ffb3bfb4934ef0df6bcc # Parent a12155461b34bdf6d60f0c73021f750af9e84bd8 cleanup in initEverything and freeEverything diff -r a12155461b34 -r fcbb024090a4 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/hwengine.pas Sun Oct 28 04:28:39 2012 +0100 @@ -50,7 +50,7 @@ procedure freeEverything(complete:boolean); forward; {$ENDIF} -//////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// function DoTimer(Lag: LongInt): boolean; var s: shortstring; begin @@ -61,9 +61,9 @@ gsLandGen: begin GenMap; - uLandTexture.initModule; - UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT, false); - uAILandMarks.initModule; + SetLandTexture; + UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT, false); + setAILandMarks; ParseCommand('sendlanddigest', true); GameState:= gsStart; end; @@ -138,7 +138,7 @@ end; end; -/////////////////// +//////////////////////////////////////////////////////////////////////////////// procedure MainLoop; var event: TSDL_Event; PrevTime, CurrTime: Longword; @@ -310,7 +310,7 @@ end; {$ENDIF} -/////////////// +//////////////////////////////////////////////////////////////////////////////// procedure Game{$IFDEF HWLIBRARY}(gameArgs: PPChar); cdecl; export{$ENDIF}; var p: TPathType; s: shortstring; @@ -443,40 +443,42 @@ freeEverything(true); end; +//////////////////////////////////////////////////////////////////////////////// +// As a rule of thumb, every module that is listed in either initEverything or +// freeEverything should come in pair, even if they are stubs. Only use this +// section for inialising variables and remeber that game args overwrite these, +// so handle this section with care. Pay attention to the init/free order too! procedure initEverything (complete:boolean); begin Randomize(); - uUtils.initModule(complete); // this opens the debug file, must be the first - uMisc.initModule; - uVariables.initModule; - uConsole.initModule; - uCommands.initModule; - uCommandHandlers.initModule; + uUtils.initModule(complete); // opens the debug file, must be the first + uVariables.initModule; // inits all global variables + uConsole.initModule; // opens stdout + uCommands.initModule; // helps below + uCommandHandlers.initModule; // registers all messages from frontend - uLand.initModule; - uLandPainted.initModule; - uIO.initModule; + uLand.initModule; // computes land + uLandPainted.initModule; // computes drawn land + uIO.initModule; // sets up sockets if complete then begin -{$IFDEF ANDROID}GLUnit.init;{$ENDIF} +{$IFDEF ANDROID}GLUnit.initModule;{$ENDIF} {$IFDEF USE_TOUCH_INTERFACE}uTouch.initModule;{$ENDIF} +{$IFDEF USE_VIDEO_RECORDING}uVideoRec.initModule;{$ENDIF} //stub uAI.initModule; - //uAIActions does not need initialization - //uAIAmmoTests does not need initialization uAIMisc.initModule; + uAILandMarks.initModule; //stub uAmmos.initModule; + uCaptions.initModule; + uChat.initModule; uCollisions.initModule; - //uFloat does not need initialization - //uGame does not need initialization uGears.initModule; - uInputHandler.initModule; - //uLandGraphics does not need initialization - //uLandObjects does not need initialization - //uLandTemplates does not need initialization - //uLocale does not need initialization + uInputHandler.initModule; //stub + uMisc.initModule; + uLandTexture.initModule; //stub uScript.initModule; uSound.initModule; uStats.initModule; @@ -484,7 +486,6 @@ uTeams.initModule; uVisualGears.initModule; uWorld.initModule; - uCaptions.initModule; end; end; @@ -493,9 +494,9 @@ if complete then begin WriteLnToConsole('Freeing resources...'); - uAI.freeModule; + uAI.freeModule; // AI things need to be freed first + uAIMisc.freeModule; //stub uAILandMarks.freeModule; - uAIMisc.freeModule; //stub uCaptions.freeModule; uWorld.freeModule; uVisualGears.freeModule; @@ -504,22 +505,16 @@ uStats.freeModule; //stub uSound.freeModule; uScript.freeModule; - //uRandom does not need to be freed - //uLocale does not need to be freed - //uLandTemplates does not need to be freed + uMisc.freeModule; uLandTexture.freeModule; - //uLandObjects does not need to be freed - //uLandGraphics does not need to be freed uGears.freeModule; - //uGame does not need to be freed - //uFloat does not need to be freed uCollisions.freeModule; //stub uChat.freeModule; uAmmos.freeModule; - //uAIAmmoTests does not need to be freed - //uAIActions does not need to be freed - uStore.freeModule; + uStore.freeModule; // closes SDL {$IFDEF USE_VIDEO_RECORDING}uVideoRec.freeModule;{$ENDIF} +{$IFDEF USE_TOUCH_INTERFACE}uTouch.freeModule;{$ENDIF} //stub +{$IFDEF ANDROID}GLUnit.freeModule;{$ENDIF} end; uIO.freeModule; @@ -528,13 +523,12 @@ uCommandHandlers.freeModule; uCommands.freeModule; - uConsole.freeModule; + uConsole.freeModule; // closes stdout uVariables.freeModule; - uUtils.freeModule; - uMisc.freeModule; // uMisc closes the debug log. + uUtils.freeModule; // closes debug file end; -///////////////////////// +//////////////////////////////////////////////////////////////////////////////// procedure GenLandPreview{$IFDEF HWLIBRARY}(port: LongInt); cdecl; export{$ENDIF}; var Preview: TPreview; begin @@ -557,7 +551,7 @@ end; {$IFNDEF HWLIBRARY} -///////////////////// +//////////////////////////////////////////////////////////////////////////////// procedure DisplayUsage; var i: LongInt; begin @@ -583,7 +577,7 @@ WriteLn(stdout, ''); end; -//////////////////// +//////////////////////////////////////////////////////////////////////////////// {$INCLUDE "ArgParsers.inc"} procedure GetParams; diff -r a12155461b34 -r fcbb024090a4 hedgewars/uAILandMarks.pas --- a/hedgewars/uAILandMarks.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uAILandMarks.pas Sun Oct 28 04:28:39 2012 +0100 @@ -10,6 +10,7 @@ function checkMark(X, Y: LongInt; mark: byte) : boolean; procedure clearAllMarks; procedure clearMarks(mark: byte); +procedure setAILandMarks; procedure initModule; procedure freeModule; @@ -57,8 +58,7 @@ marks[Y, X]:= marks[Y, X] and (not mark) end; - -procedure initModule; +procedure setAILandMarks; begin WIDTH:= LAND_WIDTH shr gr; HEIGHT:= LAND_HEIGHT shr gr; @@ -66,6 +66,10 @@ SetLength(marks, HEIGHT, WIDTH); end; +procedure initModule; +begin +end; + procedure freeModule; begin SetLength(marks, 0, 0); diff -r a12155461b34 -r fcbb024090a4 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uAIMisc.pas Sun Oct 28 04:28:39 2012 +0100 @@ -772,7 +772,6 @@ procedure freeModule; begin - end; end. diff -r a12155461b34 -r fcbb024090a4 hedgewars/uCommands.pas --- a/hedgewars/uCommands.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uCommands.pas Sun Oct 28 04:28:39 2012 +0100 @@ -46,8 +46,7 @@ Trusted, Rand: boolean; end; -var - Variables: PVariable; +var Variables: PVariable; procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean); begin diff -r a12155461b34 -r fcbb024090a4 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uGears.pas Sun Oct 28 04:28:39 2012 +0100 @@ -33,7 +33,7 @@ * effects are called "Visual Gears" and defined in the respective unit! *) interface -uses SDLh, uConsts, uFloat, uTypes, uLandObjects; +uses SDLh, uConsts, uFloat, uTypes; procedure initModule; procedure freeModule; diff -r a12155461b34 -r fcbb024090a4 hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uLandTexture.pas Sun Oct 28 04:28:39 2012 +0100 @@ -27,6 +27,7 @@ procedure UpdateLandTexture(X, Width, Y, Height: LongInt; landAdded: boolean); procedure DrawLand(dX, dY: LongInt); procedure ResetLand; +procedure SetLandTexture; implementation uses uConsts, GLunit, uTypes, uVariables, uTextures, uDebug, uRender; @@ -183,7 +184,7 @@ end; -procedure initModule; +procedure SetLandTexture; begin if (cReducedQuality and rqBlurryLand) = 0 then begin @@ -199,6 +200,10 @@ SetLength(LandTextures, LANDTEXARW, LANDTEXARH); end; +procedure initModule; +begin +end; + procedure ResetLand; var x, y: LongInt; begin diff -r a12155461b34 -r fcbb024090a4 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uStats.pas Sun Oct 28 04:28:39 2012 +0100 @@ -311,7 +311,6 @@ procedure freeModule; begin - end; end. diff -r a12155461b34 -r fcbb024090a4 hedgewars/uTouch.pas --- a/hedgewars/uTouch.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uTouch.pas Sun Oct 28 04:28:39 2012 +0100 @@ -22,10 +22,11 @@ interface -uses SysUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, uIO, GLUnit, uTypes, uCaptions, uAmmos, uWorld, uMobile; +uses SysUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, GLUnit, uTypes, uCaptions, uAmmos, uWorld, uMobile; procedure initModule; +procedure freeModule; procedure ProcessTouch; procedure NewTurnBeginning; @@ -643,5 +644,9 @@ halfRectSize:= rectSize shl 1; end; +procedure freeModule; +begin +end; + begin end. diff -r a12155461b34 -r fcbb024090a4 hedgewars/uVideoRec.pas --- a/hedgewars/uVideoRec.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uVideoRec.pas Sun Oct 28 04:28:39 2012 +0100 @@ -49,6 +49,7 @@ procedure StopPreRecording; procedure SaveCameraPosition; +procedure initModule; procedure freeModule; implementation @@ -366,6 +367,10 @@ BlockWrite(cameraFile, frame, 1); end; +procedure initModule; +begin +end; + procedure freeModule; begin if flagPrerecording then diff -r a12155461b34 -r fcbb024090a4 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sun Oct 28 04:00:07 2012 +0100 +++ b/hedgewars/uWorld.pas Sun Oct 28 04:28:39 2012 +0100 @@ -1892,19 +1892,12 @@ stereoDepth:= 0; AMState:= AMHidden; isFirstFrame:= true; + stereoDepth:= stereoDepth; // avoid hint end; procedure freeModule; begin - stereoDepth:= stereoDepth; // avoid hint - FreeTexture(fpsTexture); - fpsTexture:= nil; - FreeTexture(timeTexture); - timeTexture:= nil; - FreeTexture(missionTex); - missionTex:= nil; - FreeTexture(recTexture); - recTexture:= nil; + ResetWorldTex(); end; end. diff -r a12155461b34 -r fcbb024090a4 project_files/Android-build/gles11.pp --- a/project_files/Android-build/gles11.pp Sun Oct 28 04:00:07 2012 +0100 +++ b/project_files/Android-build/gles11.pp Sun Oct 28 04:28:39 2012 +0100 @@ -32,7 +32,8 @@ gl.hh } - procedure init; + procedure initModule; + procedure freeModule; const External_library='GLESv1_CM'; {Setup as you need} @@ -1106,15 +1107,14 @@ pointer(glPointSizePointerOES):=GetProcAddress(hlib,'glPointSizePointerOES'); end; -procedure init; +procedure initModule; begin Loadgles11('libGLESv1_CM.so'); end; - -initialization - Loadgles11('gles11'); -finalization +procedure freeModule; +begin Freegles11; +end; end.