In Alexandre's new windowing architecture, we have in dlls/x11drv/window.c, line 119, this:
attr->cursor = X11DRV_GetCursor( display, GlobalLock16(GetCursor()) );
Problem: what if ShowCursor(FALSE) is called to hide the cursor *before* the window was created? Yup, GetCursor still returns the current (arrow) cursor, so the new window gets associated with a visible cursor, though the app would expect the cursor to remain hidden.
Diablo II is currently known to suffer from this problem... it has too many cursors visible.
I haven't come up with a very clean solution to this... ideas?