IrrDelphi (Irrlicht183, irrKlang130b) Delphi\Pascal headers

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
wlion
Posts: 2
Joined: Thu Apr 14, 2011 8:17 am

Memory Leak In SMaterialLayer

Post by wlion »

There is another memory leak in Irrlicht_172.pas :

Code: Select all

SMaterialLayer  = record
..........
   TextureMatrix: Pmatrix4;    // <== may be change to "TextureMatrix: matrix4; " can prevent memory leak
..........
end;

Code: Select all

procedure SMaterialLayer.setTextureMatrix(const vMat: Pmatrix4);
begin
  if not Assigned(TextureMatrix) then begin
    New(TextureMatrix);       // <== will cause memory leak, only create, no dispose
    TextureMatrix^ := vMat^;
  end else
    TextureMatrix^ := vMat^;
end;
RainBoy
Posts: 16
Joined: Wed Jun 01, 2011 8:08 pm
Location: United States

Post by RainBoy »

I have a couple of memory leaks in the example 12:

Code: Select all


Call Stack Information:
--------------------------------------------------------------------------------------------------------
|Address |Module                 |Unit                   |Class             |Procedure/Method|Line     |
--------------------------------------------------------------------------------------------------------
|+Memory Leak: Type=Data; Total size=16; Count=1                                                       |
|------------------------------------------------------------------------------------------------------|
|00402EB4|12.TerrainRendering.exe|                       |                  |                |         |
|0047781F|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |irrStrA         |20847[1] |
|0047787F|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |irrStr          |20876[1] |
|004B25EF|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |229[160] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=Data; Total size=36; Count=1                                                       |
|------------------------------------------------------------------------------------------------------|
|00402F23|12.TerrainRendering.exe|                       |                  |                |         |
|00477851|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |irrStrA         |20851[5] |
|0047787F|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |irrStr          |20876[1] |
|004B25EF|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |229[160] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=ICustomReferenceCounted; Total size=36; Count=3                                    |
|------------------------------------------------------------------------------------------------------|
|0047796E|12.TerrainRendering.exe|Irrlicht_172.pas       |TVirtualParent    |Init            |21157[1] |
|00477D63|12.TerrainRendering.exe|Irrlicht_172.pas       |TCppClass         |Create          |23492[1] |
|00477E51|12.TerrainRendering.exe|Irrlicht_172.pas       |CDynamicMeshBuffer|Create          |23510[1] |
|004B2938|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |177[108] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=Data; Total size=1088; Count=64                                                    |
|------------------------------------------------------------------------------------------------------|
|00402EB4|12.TerrainRendering.exe|                       |                  |                |         |
|004775B9|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |PatchVMTbyVMT   |20378[23]|
|0047762E|12.TerrainRendering.exe|Irrlicht_172.pas       |                  |PatchVMT        |20403[4] |
|00477D70|12.TerrainRendering.exe|Irrlicht_172.pas       |TCppClass         |Create          |23493[2] |
|00477E51|12.TerrainRendering.exe|Irrlicht_172.pas       |CDynamicMeshBuffer|Create          |23510[1] |
|004B2938|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |177[108] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=CVertexBuffer; Total size=36; Count=1                                              |
|------------------------------------------------------------------------------------------------------|
|00477E5F|12.TerrainRendering.exe|Irrlicht_172.pas       |CDynamicMeshBuffer|Create          |23511[2] |
|004B2938|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |177[108] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=CIndexBuffer; Total size=36; Count=1                                               |
|------------------------------------------------------------------------------------------------------|
|00477E74|12.TerrainRendering.exe|Irrlicht_172.pas       |CDynamicMeshBuffer|Create          |23512[3] |
|004B2938|12.TerrainRendering.exe|12.TerrainRendering.dpr|                  |Main            |177[108] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=Data; Total size=46137352; Count=1                                                 |
|------------------------------------------------------------------------------------------------------|
|00402F23|12.TerrainRendering.exe|                       |                  |                |         |
|00478425|12.TerrainRendering.exe|Irrlicht_172.pas       |CVertexBuffer     |reallocate      |23780[3] |
|00477E85|12.TerrainRendering.exe|Irrlicht_172.pas       |CDynamicMeshBuffer|Create          |23513[4] |
|------------------------------------------------------------------------------------------------------|
|                                                                                                      |
|+Memory Leak: Type=Data; Total size=22118408; Count=1                                                 |
|------------------------------------------------------------------------------------------------------|
|004065AA|12.TerrainRendering.exe|                       |                  |                |         |
|00478676|12.TerrainRendering.exe|Irrlicht_172.pas       |CIndexBuffer      |push_back_      |23906[12]|
--------------------------------------------------------------------------------------------------------
i'm trying to fix this problems
RainBoy
Posts: 16
Joined: Wed Jun 01, 2011 8:08 pm
Location: United States

Post by RainBoy »

I've finished change part of code to prevent memory leaks
Please note that i've changed parts that really needed to me; this wrapper still have several 'memory leaks' routines.

Changed:

- Replace function IrrStr to procedure IrrStr;
Now you need to write something like this -

Code: Select all

strTerMap : PIrrString;
strTerMap := new(pIrrStringA);
irrStr('media\terrain-heightmap.bmp', strTerMap);
//.... working with strTermap
Dispose(strTerMap);
- Added TVMTManager class to calculate allocated memory in PatchVMTbyVMT procedure

It is possible that other examples should not work now; you need to change works with irrStr procedure.
Now i don't have any memory leaks in Example 12 - Terrain rendering.

You can download it here - http://dl.dropbox.com/u/3790498/irrlich ... ht_Test.7z

Thank you,
Alex.
baol
Posts: 1
Joined: Tue Jun 28, 2011 12:11 pm

Post by baol »

small fix
Irrlicht_172.pas line 12017

Code: Select all

function createDeviceEx(const parameters: SIrrlichtCreationParameters): PIrrlichtDevice; cdecl; external IRR_DLL;
params must be passed by ref

Code: Select all

	extern "C" IRRLICHT_API IrrlichtDevice* IRRCALLCONV createDeviceEx(
		const SIrrlichtCreationParameters& parameters);
update to

Code: Select all

const parameters: PSIrrlichtCreationParameters
test

Code: Select all

function DeviceCreate(const deviceType: E_DRIVER_TYPE; const w, h, bits: Integer; const fullscreen, stencilbuffer, vsync: Boolean; const receiver: Pointer = nil): PIrrlichtDevice;
var
  params: SIrrlichtCreationParameters;
begin

  params.DeviceType := EIDT_BEST;
  params.DriverType := deviceType;
  params.WindowSize.Width := w;
  params.WindowSize.Height:= h;
  params.Bits := bits;
  params.ZBufferBits := bits;
  params.Fullscreen := fullscreen;
  params.Stencilbuffer := stencilbuffer;
  params.Vsync := vsync;
  params.AntiAlias := 0;
  params.WithAlphaChannel := false;
  params.Doublebuffer := true;
  params.IgnoreInput := false;
  params.Stereobuffer := false;
  params.HighPrecisionFPU := false;
  params.EventReceiver := receiver;
  params.WindowId := 0;
  params.LoggingLevel := ELL_INFORMATION;
  params.SDK_version_do_not_use := IRRLICHT_SDK_VERSION;

  result := createDeviceEx(@params);
  // get irrlicht imagebase for thiscall_ex
  IRR_IMAGEBASE := GetModuleHandle(IRR_DLL);
  // default
  dev := Result;
  if Assigned(dev) then begin
    drv     := dev.getVideoDriver;
    fs      := dev.getFileSystem;
    gui     := dev.getGUIEnvironment;
    smgr    := dev.getSceneManager;
    cur     := dev.getCursorControl;
    logger  := dev.getLogger;
    vidml   := dev.getVideoModeList;
    osop    := dev.getOSOperator;
    tmr     := dev.getTimer;
  end;
end;
and maybe rename deviceType to driverType?
mrpostiga
Posts: 1
Joined: Sat Aug 13, 2011 4:54 pm

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by mrpostiga »

IXMLReader not implemented. please implement it...
RainBoy
Posts: 16
Joined: Wed Jun 01, 2011 8:08 pm
Location: United States

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by RainBoy »

Looks like this project does not have any support now...
I have a strange problem.
I'm using code similar to the terrain sample.
My project creates terrain, shows it. After that user closes this view (all objects disposed) and reopen new terrain
I can open terrain 1 time without any problem, but when i tried to reopen other terrans 2..6 times my application crashes with "problem in external dll at address...."
Someone has the same problem? Dn how i can fix it...
IrrDelphi
Posts: 32
Joined: Tue Oct 13, 2009 10:59 am

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by IrrDelphi »

RainBoy wrote:Looks like this project does not have any support now...
I have a strange problem.
I'm using code similar to the terrain sample.
My project creates terrain, shows it. After that user closes this view (all objects disposed) and reopen new terrain
I can open terrain 1 time without any problem, but when i tried to reopen other terrans 2..6 times my application crashes with "problem in external dll at address...."
Someone has the same problem? Dn how i can fix it...
Irrlicht 172 latest version now.. no updates for headers. Attach source
mrpostiga wrote:IXMLReader not implemented. please implement it...
Can't do this.. IXMLReader used c++ language fithes which Delphi not have
baol wrote:small fix
Not necessary becouse it identical
baol wrote:and maybe rename deviceType to driverType?
Sure :)
RainBoy
Posts: 16
Joined: Wed Jun 01, 2011 8:08 pm
Location: United States

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by RainBoy »

check your PM please -)
RainBoy
Posts: 16
Joined: Wed Jun 01, 2011 8:08 pm
Location: United States

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by RainBoy »

irrDelphi, please check your PM again
Looks like i Can't send PM to you, all of my 3 messages in "outbox"

my icq 138-639-871
skype kononov_alexey

sorry about some flood, guys =)
Römer123
Posts: 6
Joined: Sun Apr 29, 2012 7:27 am
Location: Germany

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by Römer123 »

Hi,
I've got a question. How I should drop the ,,engine" from the irrKlang demos.

Code: Select all

 
drop_gcc(engine); // delete engine
 
In the irrKlang_130b is no drop_gcc :?
Römer123
Posts: 6
Joined: Sun Apr 29, 2012 7:27 am
Location: Germany

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by Römer123 »

Here is the answer:

Code: Select all

 
irrKlangDrop(engine);
 
IrrDelphi
Posts: 32
Joined: Tue Oct 13, 2009 10:59 am

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by IrrDelphi »

Römer123 wrote:I've got a question. How I should drop the ,,engine" from the irrKlang demos.
Gcc version is experimental and buggy! Use vc version and irrKlangDrop() function
sesilla
Posts: 2
Joined: Sat Apr 21, 2012 11:52 am

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by sesilla »

Hi IrrDelphi,

is possible to use headers with Freepascal on Mac OSX?

Thanks in advance
Sesilla
IrrDelphi
Posts: 32
Joined: Tue Oct 13, 2009 10:59 am

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by IrrDelphi »

No, Windows only
Aeternitas
Posts: 2
Joined: Mon Aug 19, 2013 3:23 pm

Re: IrrDelphi(Irrlicht 172, irrKlang 130b) Delphi\Pascal hea

Post by Aeternitas »

Hi,

I am a programmer in language Lazarus, what is Delphi alike. I tried to use teh irrDelphi in Lazarus and I got the following errors:

Code: Select all

Irrlicht_172_enum.pas(83,2) Note: Values in enumeration types have to be ascending
Irrlicht_172_enum.pas(941,59) Note: Values in enumeration types have to be ascending
Irrlicht_172_enum.pas(1115,68) Note: Values in enumeration types have to be ascending
Irrlicht_172_enum.pas(1291,106) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,119) Error: Illegal expression
Irrlicht_172_enum.pas(1291,119) Note: Values in enumeration types have to be ascending
Irrlicht_172_enum.pas(1291,129) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,142) Error: Illegal expression
Irrlicht_172_enum.pas(1291,153) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,166) Error: Illegal expression
Irrlicht_172_enum.pas(1291,178) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,191) Error: Illegal expression
Irrlicht_172_enum.pas(1291,206) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,219) Error: Illegal expression
Irrlicht_172_enum.pas(1291,228) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,241) Error: Illegal expression
Irrlicht_172_enum.pas(1291,254) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,267) Error: Illegal expression
Irrlicht_172_enum.pas(1291,278) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,291) Error: Illegal expression
Irrlicht_172_enum.pas(1291,303) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,316) Error: Illegal expression
Irrlicht_172_enum.pas(1291,329) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,343) Error: Illegal expression
Irrlicht_172_enum.pas(1291,359) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,373) Error: Illegal expression
Irrlicht_172_enum.pas(1291,393) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,407) Error: Illegal expression
Irrlicht_172_enum.pas(1291,417) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,431) Error: Illegal expression
Irrlicht_172_enum.pas(1291,446) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,460) Error: Illegal expression
Irrlicht_172_enum.pas(1291,476) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,490) Error: Illegal expression
Irrlicht_172_enum.pas(1291,504) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,518) Error: Illegal expression
Irrlicht_172_enum.pas(1291,534) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,548) Error: Illegal expression
Irrlicht_172_enum.pas(1291,561) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,575) Error: Illegal expression
Irrlicht_172_enum.pas(1291,596) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,610) Error: Illegal expression
Irrlicht_172_enum.pas(1291,619) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,633) Error: Illegal expression
Irrlicht_172_enum.pas(1291,644) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,658) Error: Illegal expression
Irrlicht_172_enum.pas(1291,679) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,693) Error: Illegal expression
Irrlicht_172_enum.pas(1291,733) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,759) Error: Illegal expression
Irrlicht_172_enum.pas(1291,771) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,797) Error: Illegal expression
Irrlicht_172_enum.pas(1291,808) Error: Incompatible types: got "<enumeration type>" expected "Int64"
Irrlicht_172_enum.pas(1291,834) Error: Illegal expression
Irrlicht_172_enum.pas(1291,834) Fatal: There were 50 errors compiling module, stopping
Can you help me run the Irrlicht in Lazarus?
Post Reply