Jinoh Kang (@iamahuman) commented about server/queue.c:
WM_MOUSEHWHEEL /* 0x1000 = MOUSEEVENTF_HWHEEL */ };
- desktop->cursor.last_change = get_tick_count();
- /* update last desktop cursor change time */
- update_desktop_cursor_pos( desktop, desktop->cursor.win, desktop->cursor.x, desktop->cursor.y );
If `desktop->cursor.win` became invisible or transparent since the last cursor update, `update_desktop_cursor_pos` may set another window, which will cause `update_desktop_cursor_window` to emit `WM_WINE_SETCURSOR` (previously, it didn't).
1. Is this actually possible? (If not, is there anything that eagerly switches the cursor window once the old window becomes invisible or transparent?)
2. If this is the case, could this lead to some kind of deadlock?
3. Are such side effects tolerable?