We are currently bypassing Wine's
NtUserSetCursor() to call directly the driver's implementation. This doesn't take into account the current state of the cursor's visibility through
NtUserShowCursor(). Since drivers don't handle this last function, Wine doesn't give us details about the visibility. Hence, we should go through Wine's
NtUserSetCursor() and let Wine pass the correct information to the driver (i.e., if we should show the cursor or not, depending on *ShowCursor's count value).
This solves the pointer issues in Mafia, and I'd expect that it'd solve issues in other games as well.