On Wed Jun 19 04:58:40 2024 +0000, Errno Ebadf wrote:
Oops, I was wrong about lparam. It does not survive all the way to the server. The lparam in win32u/message.c:send_hardware_message() just adjusts the request to the server (which is defined in `struct send_hardware_message_request` (generated from `server/protocol.def`). I think what @rbernon meant when they said "pass the raw values in a custom struct" would be giving extra data to win32u/message.c:send_hardware_message() via lparam in order to build the wineserver request to include unaccelerated values. I like the idea of sending both accel and unaccel coordinates in one call to the server. All we really need extra is unaccel_x and unaccel_y (16 bits each). Is it okay to extend the hw_input_t.mouse struct? That would be simple. (And dang, I am finding problems with my x11drv proton patches. Anyway, hopefully my braindumps help more than hurt. I would be happy to jump on IRC to chat about it if you want).
Yeah, instead of a struct you could even just pass the raw values with `lparam = MAKELONG(x_raw, y_raw)` and use the flag to indicate they should be read from it. It would still require an additional field in `hw_input_t::mouse`.