From 2ec7c1680a905cbf8ac3744415bc880d31f3f2fc Mon Sep 17 00:00:00 2001 From: zhoulei <zhoulei@kylinos.cn> Date: Mon, 25 Jan 2021 19:41:16 +0800 Subject: [PATCH] xwayland: Change randr_output status when call xwl_output_remove() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function xwl_output_remove() is called when removing a monitor, but the actual status of the RandR output does not change. So, when RRTellChanged() is called from update_screen_size(), it won't have the output connection status up to date in the RandR event RROutputChangeNotifyEvent and X11 applications relying on that event like Qt will fail to emit their signal QGuiApplication::screenRemoved. To avoid that issue, make sure to mark the RandR output as disconnected prior to call xwl_output_remove(). Fix commit 204f10c29 ("xwayland: Call RRTellChanged if the RandR configuration may have changed") Signed-off-by: zhoulei <zhoulei@kylinos.cn> Signed-off-by: Morose <chenlinxiang@kylinos.cn> Acked-by: Michel Dänzer <mdaenzer@redhat.com> Reviewed-by: Olivier Fourdan <ofourdan@redhat.com> --- hw/xwayland/xwayland-output.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index 58764b7c34..1dd5a5f896 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -832,6 +832,8 @@ xwl_output_remove(struct xwl_output *xwl_output) xorg_list_del(&xwl_output->link); + RROutputSetConnection(xwl_output->randr_output, RR_Disconnected); + xorg_list_for_each_entry(it, &xwl_screen->output_list, link) output_get_new_size(it, &width, &height); update_screen_size(xwl_output, width, height); -- GitLab