Improve (especially remote) window dragging and resizing performance
Before this change, every window operation with the potential to affect the _NET_WM_STATE property would end up calling XChangeProperty(), even if the property didn't actually change. This would cause an avalanche of PropertyNotify events, to which GTK-based apps, at least, dutifully respond with a GetProperty request. The connection is then overwhelmed with these requests.
The fix made here is to remember the last value of _NET_WM_STATE that was set, returning early if the new value is equal to the last value.
Merge request reports
Activity
If you want to see the impact of this change for yourself, try
ssh -Y
-ing into a remote host, running thegtk3-demo
app (available in thegtk-3-examples
apt package), and dragging the window around for a bit. Without the change, the window will hang for seconds at a time and lag behind the cursor significantly. With the change, at least for me over wi-fi, the window keeps up with the cursor acceptably, without significant lag or hanging.requested review from @jeremyhu
mentioned in commit babff9d7