[Mono-winforms-list] Matrix memory management in GDI+ bug

Jordi Mas jordi@ximian.com
Wed, 16 Mar 2005 19:40:42 +0100


El ds 12 de 03 del 2005 a les 13:15 -0500, en/na Jonathan Gilbert va
escriure:

> If Microsoft's implementation allows the Matrix to be used after it has
> been Dispose()d, this would tend to indicate that they are actually storing
> the matrix in managed memory, and that while a System.Drawing.Graphics has
> an unmanaged matrix involved with the GDI+ operations, a
> System.Drawing.Drawing2D.Matrix simply duplicates the matrix data in
> managed memory. Changing mono to behave this way would be a lot more
> logical than changing Dispose() to not perform its task.
> 
> This is probably something I could do myself :-) Jordi?
> 

Microsoft implementation does NOT allow to use a disposed Matrix. What
happens is that before disposing it was assigned to Graphics.Transform
and we had a bug there at libgdiplus level that was causing the matrix
to be point it to instead of copied. Also, I fixed a few issues with
some dispose methods.

This should be correct in HEAD now.

Jordi,

-- 
Jordi Mas i Hernāndez - Mono development team - http://www.mono-project.com
Homepage and LiveJournal at http://www.softcatala.org/~jmas