On Tue Apr 14 10:17:24 2026 +0000, Rémi Bernon wrote:
Are we truly confident that this should be a per-thread list of pointer (and I assume, later, frame history)? If there isn't already we will need tests to make sure it is and that querying pointer info and pointer history from a thread that has never processed any message indeed returns an error. Fwiw we already maintain a list of pointers on wineserver side, I suspect it should perhaps work globally instead. i'm pretty sure, we have two tests, `test_NtUserGetPointerInfoList_thread` and `test_GetPointerInfo_thread`, both spawn a thread after already receiving pointer events on the main thread, create a new window, and expect to get no pointer info at all
additionally the docs say:
If the calling thread does not own the window to which the pointer message has been delivered, this function fails with the last error set to ERROR_ACCESS_DENIED. Note that this may be the window to which the input was originally delivered or it may be a window to which the message was forwarded.
(though i am yet to see it throw an ACCESS_DENIED instead of NOACCESS or INVALID_PARAMETER, i'm guessing some specialcasing for MouseInPointer) -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10649#note_136057