Skip to content

Commit 221394f

Browse files
cyndismisyltoad
authored andcommitted
WaylandBackend: Fix relative pointer state tracking
Fix two issues with tracking state related to relative pointer mode: * m_bPointerLocked is currently only unset through the unlock event handler. However, it is observed that when the locked pointer object is destroyed, this event is not received while the unlock occurs. Therefore, directly unset it when destroying the locked pointer object. This fixes the cursor staying hidden forever after rotating the camera using the mouse in World of Warcraft. * When setting relative mode, m_pLockedSurface is currently compared against the target surface to avoid recreating the locked pointer object on every frame. However, m_pLockedSurface is never set so the code thinks we are setting relative mode on a different surface each frame, causing a new locked pointer object to be created each time. Fix this by setting and unsetting m_pLockedSurface when a pointer lock is created or destroyed.
1 parent eaca937 commit 221394f

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

src/Backends/WaylandBackend.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2414,9 +2414,12 @@ namespace gamescope
24142414

24152415
zwp_locked_pointer_v1_destroy( m_pLockedPointer );
24162416
m_pLockedPointer = nullptr;
2417+
m_bPointerLocked = false;
24172418

24182419
zwp_relative_pointer_v1_destroy( m_pRelativePointer );
24192420
m_pRelativePointer = nullptr;
2421+
2422+
m_pLockedSurface = nullptr;
24202423
}
24212424

24222425
if ( bRelative )
@@ -2425,6 +2428,8 @@ namespace gamescope
24252428
zwp_locked_pointer_v1_add_listener( m_pLockedPointer, &s_LockedPointerListener, this );
24262429

24272430
m_pRelativePointer = zwp_relative_pointer_manager_v1_get_relative_pointer( m_pRelativePointerManager, m_pPointer );
2431+
2432+
m_pLockedSurface = pSurface;
24282433
}
24292434

24302435
m_InputThread.SetRelativePointer( bRelative );

0 commit comments

Comments
 (0)