One last thing I'd like to try and get in before v039 if possible: I'd like to multi-thread the Windows user interface, so that the menubar can be entered without freezing emulation. Not sure if it's feasible.
Idea is to have hiro call CreateThread right off the bat, write a shell function to queue window creation events so that it gains thread affinity for each window. From there, let it sit in a GetMessage() loop. Other threads can send window messages, so the user-side of hiro should be free to modify things at will. Whenever the lib-side needs to send an event, stick that in a queue instead and replace hiro::run() with a function to pull events from that queue.
Problem spots could pop up everywhere: the various video / audio / input APIs might not like being given HWNDs without thread affinity. Given the abstraction between those driver wrappers and the user interface library, I can't create a simple message passing layer to send redraw requests. Plus that thread could be frozen anyway when inside a WM_ENTERMENULOOP event.
SNESGT manages it though, so it has to be possible ...
I'd love if you could find some other open source program you know that doesn't have the issue and compare icon formatting.
Pidgin uses 16x, 32x and 48x at 16, 256 and 24-bit color depth.
bsnes uses 16x, 24x, 32x and 48x at 256 and 24-bit color depth.
At a loss, myself. Maybe it's using the 24x for some reason, since the taskbar icons are slightly smaller than 32x?