When use-g2d=1 in /etc/xdg/weston/weston.ini and FB_MULTI_BUFFER is > 1 or not set, weston-imx/libweston/renderer-g2d/g2d-renderer.c:fb_query_screen_info() executes an FBIOPUT_VSCREENINFO ioctl to set the framebuffer's yres_virtual to a multiple of the framebuffer's physical Y resolution. In this configuration, repainting is handled with the FBIOPAN_DISPLAY ioctl.
When an HDMI hotplug connect event happens in the mxc_hdmi.c kernel driver, mxc_hdmi_set_mode() will call fb_vidmode_to_var(), which overwrites the framebuffer's yres_virtual with the same value as yres.
Once this has happened, the display stops updating on every repaint because g2d-renderer's FBIOPAN_DISPLAY ioctls start failing. /run/user/0/weston.log gets a line saying "FBIOPAN_DISPLAY Failed" every time this happens.
This is the default configuration for Yocto when use-nxp-bsp is set, so I would imagine this is affecting a lot of users. It is exacerbated by the fact that sometimes, changing the framebuffer resolution (e.g. with fbset) will cause a hotplug plugout/plugin cycle, so changing it right before starting Weston (e.g. in an ExecStartPre= on weston.service) risks triggering this behavior.