Riey / kime

Korean IME
GNU General Public License v3.0
522 stars 53 forks source link

Fix to work on wlroots>=0.17.1 by changing increasing order of `serial` #664

Closed xnuk closed 8 months ago

xnuk commented 8 months ago

Summary

Fixes #663

Note

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.

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