This MR fixes race conditions in the fractional scaling implementation by moving the scale value to the surface config. In addition to avoiding the aforementioned race conditions, it also enables us to store the win32u unscaled rect within the surface config (that is not within this MR, though). It is based on some of the other refactoring present in !11248 This approach makes winewayland ignore the scale event until the next xdg_surface::configure. Since the scale factor is just a suggestion from the compositor to the client, we don't need to follow it strictly. I need to test this with more compositors, but I don't see why they wouldn't send fractional scale events (as needed) with configure events. Draft because still need to figure out how to deal with subsurface scaling using this approach -- v3: winewayland: Use xdg-popup for unmanaged windows. winewayland: Store the unscaled rect in the surface config. https://gitlab.winehq.org/wine/wine/-/merge_requests/11321