You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.3.10: call SiGetEventWinInit before SiGetEvent (canonical pattern)
v0.3.9 confirmed siappdll IS dispatching messages: all 20 logged were
msg=0xC20B (a registered Si message) — but SiGetEvent returned
SI_SKIP_EVENT for every one. SI_SKIP_EVENT means 'siappdll handled it
internally, you should ignore.' We never got SI_IS_EVENT for motion.
The SDK's canonical call pattern is:
SiGetEventData ed;
SiGetEventWinInit(&ed, msg, wParam, lParam); // initializes hidden state
SiGetEvent(handle, 0, &ed, &spwEvent);
We were skipping SiGetEventWinInit and constructing SiGetEventData via
C# field-initializer. That fills the public msg/wParam/lParam fields
but may leave native-only hidden state uninitialized that SiGetEvent
checks before classifying the message as a real Si event.
Adds the SiGetEventWinInit P/Invoke and calls it before SiGetEvent.
If that still gives SI_SKIP_EVENT for everything, the next move is
abandoning siappdll for 3DxNavLib (the modern API that doesn't go
through window messages at all).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>