[ODE] *FIX* machine locking up hard when running tests

Royce Mitchell III Royce Mitchell III <royce3 at ev1.net>
Mon Dec 16 12:07:02 2002


------------B510C1633EF3F017
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello,

I got a chance to peek around the source, and I found the problem.

The problem was, quite simply, that WM_SIZE handler, changing the
image sizes without doing something to hold the rendering thread
at by first. I patched it to, quite simply, kill the thread, change
the size, and then restart the thread. There might be a faster way,
but this one fixes the problem, and is only slow when resizing the
window, so I don't figure it's a major problem. I also made, during
the course of investigating the problem, some changes to
drawstuff.cpp that you may or may not want. Basically, I added const
in some places where it should have been, and I changed the Texture
class to hold an Image, instead of an Image* since the pointer wasn't
necessary.

I have attached a zip file with the modified versions.

Sincerely,

Royce Mitchell III
------------B510C1633EF3F017
Content-Type: application/x-zip-compressed; name="patch.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch.zip"

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





------------B510C1633EF3F017--