Alexandros Frantzis (@afrantzis) commented about dlls/winewayland.drv/wayland_surface.c:
surface->buffer_height = shm_buffer->height; + + if (surface->wp_viewport) + { + int win_width, win_height, width, height; + + win_width = surface->window.rect.right - surface->window.rect.left; + win_height = surface->window.rect.bottom - surface->window.rect.top; + + /* It is an error to specify a wp_viewporter source rectangle that + * is partially or completely outside of the wl_buffer. */ + width = min(win_width, surface->buffer_width); + height = min(win_height, surface->buffer_height); + + if (width != 0 && height != 0) + wp_viewport_set_source(surface->wp_viewport, 0, 0, width << 8, height << 8);
`wl_fixed_from_int()`? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6386#note_80418