On January 10, I posted about "The great whiteboard corruption mystery" where prolonged or heavy use of the whiteboards was causing Windows computers to "mess up." There was no rhyme or reason and no reliable way to reproduce the problem, and so it had been without a fix for quite a long time (I think someone originally posted about it in the forums a year ago). As I was proofreading a part of the wxWidgets book that Julian had written, the answer struck me like a bolt of lightning.
Windows has different resource pools, one of them being the GDI resource pool used for resources like fonts, pens, brushes, bitmaps, etc. When using the whiteboard, BitWise was storing images placed on the whiteboard as wxBitmap objects, which map to the underlying HBITMAP type on Windows. HBITMAP is a GDI resource. Ergo, a few large bitmaps placed on the whiteboard would very quickly consume GDI resources, making Windows 98 or Me very vulnerable to crashes. Further, each object's pen used for drawing was stored. After using the whiteboard for a while, literally hundreds or thousands of GDI resources could be consumed. (If you have Windows 2000 or XP, use the task manager and view the "GDI resources" column, then use the whiteboard and watch the GDI resource usage go up and up...)
After a slight modification, images are now stored as images (not HBITMAPs) in memory, and only made into bitmaps during the process of drawing the whiteboard. Similarly, Pen resources (stored on Windows as an HPEN) are no longer stored for each whiteboard object, but are created only when needed to draw a whiteboard object, and then immediately destroyed. By eliminating the storage of GDI resources with each whiteboard object, the GDI resource usage is effectively 0.
This significant and remarkable improvement will be available in 1.0.4 Beta 3, which will hopefully be released by the end of next week. By the way, this bug has never affected Mac OS X or Linux that both have superior management of graphic objects.