The serial number reflects the last state of the zwp_input_method_v2 object known to the client. The value of the serial argument must be equal to the number of done events already issued by that object. When the compositor receives a commit request with a serial different than the number of past done events, it must proceed as normal, except it should not change the current state of the zwp_input_method_v2 object.
다른 곳 치우고 ImEvent::Done에서만 serial을 1씩 증가하게 바꾸니 일단은 작동하는 거 같습니다.
wlroots/wlroots#4497을 읽어봤더니, current_serial은 0부터 시작해서 wlr_input_method_v2_send_done에서 1씩 올리고, 이렇게 예측한 current_serial이 받은 serial과 다르면 리셋을 해버리는 모양입니다. 다만 한 번 예측이 틀어지면 current_serial이 다시 0부터 시작해서 영원히 틀어지는 게 문제가 될 거 같긴 하네요 어떻게 그게 재현이 될 지는 아직 모르겠는데
Checklist
[ ] I have documented my changes properly to adequate places
Summary
Fixes #663
Note
https://wayland.app/protocols/input-method-unstable-v2#zwp_input_method_v2:request:commit
다른 곳 치우고
ImEvent::Done
에서만serial
을 1씩 증가하게 바꾸니 일단은 작동하는 거 같습니다.wlroots/wlroots#4497을 읽어봤더니,
current_serial
은 0부터 시작해서wlr_input_method_v2_send_done
에서 1씩 올리고, 이렇게 예측한current_serial
이 받은serial
과 다르면 리셋을 해버리는 모양입니다. 다만 한 번 예측이 틀어지면current_serial
이 다시 0부터 시작해서 영원히 틀어지는 게 문제가 될 거 같긴 하네요 어떻게 그게 재현이 될 지는 아직 모르겠는데Checklist