Skip to content

xdg-shell: split last-acked and current state

Isaac Freund requested to merge github/fork/ifreund/xdg-configure-state into master

These states are distinct in the time period between the ack_configure and the next commit on the surface. Splitting these states avoids the following race for example:

  • client starts at 1000x1000
  • wlr_xdg_toplevel_set_size 500x500
  • size is different -> configure sent
  • client acks the configure
  • wlr_xdg_toplevel_set_size 1000x1000
  • compare_xdg_toplevel_state returns true since there is no pending configure and the currently committed size is still 1000x1000
  • no new configure is sent
  • client commits at the size it last acked, 500x500

For reference, this is the cause of https://github.com/ifreund/river/issues/31

Closes #762 (closed)

Merge request reports