Zhiyi Zhang (@zhiyi) commented about dlls/winex11.drv/window.c:
case WM_X11DRV_RESIZE_DESKTOP: X11DRV_resize_desktop(); return 0; + case WM_X11DRV_DESKTOP_RESIZED: + if ((data = get_win_data( hwnd ))) + { + /* update the full screen state */ + update_net_wm_states(data); + + if (data->whole_window) + { + /* sync window position with the new virtual screen rect */ + POINT pos = virtual_screen_to_root(data->whole_rect.left, data->whole_rect.top); + XWindowChanges changes = {.x = pos.x, .y = pos.y}; + XReconfigureWMWindow(data->display, data->whole_window, data->vis.screen, CWX | CWY, &changes);
Now you're calling XReconfigureWMWindow() when it can be avoided. For example, when old_virtual_rect.left == new_virtual_rect.left && old_virtual_rect.top == new_virtual_rect.top. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/944#note_9515