Skip to content

Stored momentum on Linux, Wayland Compositor, is released after input is stopped (Workaround included) #86

@Hunanbean-Collective

Description

@Hunanbean-Collective

Describe the bug
The longer you move the 3D mouse on Wayland, then let go, the longer the momentum carries

To Reproduce
Steps to reproduce the behavior:
On Wayland,
hold in a direction or rotation for a couple of seconds.
release 3D mouse.

Expected behavior
View stops moving.

Details (please complete the following information):

  • Issue occurred while navigating in the editor viewport
  • Device type: Spacemouse Pro]
  • Connection: Wired
  • OS: CachyOS, Wayland, KDE, Nvidia
  • SpaceNavigator Driver version 2.1.0 from source, or 2.1.0rc from Asset Store (others version untested)

Additional context
a code change for a workaround:
in SpaceNavigatorLinuxDriver.cs
Replace the entire private static void Poll method with:

        private static void Poll()
        {
            // Continue reading events until the buffer is empty (returns 0)
            while (Convert.ToInt32(spnav_poll_event(ref ev)) != 0)
            {
                // Check if this specific event in the buffer is a motion event
                if ((int)ev.type == (int)SpnavEventType.SPNAV_EVENT_MOTION)
                {
                    sliderX = ev.motion.x;
                    sliderY = ev.motion.y;
                    sliderZ = ev.motion.z;
                    sliderRX = -ev.motion.rx;
                    sliderRY = -ev.motion.ry;
                    sliderRZ = -ev.motion.rz;
                }
                // If the event is a button release or other, we don't overwrite 
                // the sliders, but we still "consume" it from the buffer.
            }
        }

i am doing it this way, instead of a pull request because 1. i suck at pull requests, and 2. I honestly do not know enough to say 'this won't break Foo'. it works for me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions