diff options
author | zhoulei <zhoulei@kylinos.cn> | 2021-01-25 19:41:16 +0800 |
---|---|---|
committer | Olivier Fourdan <ofourdan@redhat.com> | 2022-07-01 10:02:16 +0200 |
commit | 5e7ba574ec11a4416f852fb674e8931dbda28c70 (patch) | |
tree | ef398d5fe3ebd6f26153cd508511ae5f01d7d26f | |
parent | 29d14492b136558911512042ff76959d75fc17bd (diff) |
xwayland: Change randr_output status when call xwl_output_remove()
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>
(cherry picked from commit 2ec7c1680a905cbf8ac3744415bc880d31f3f2fc)
-rw-r--r-- | hw/xwayland/xwayland-output.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index 3ad8adc8b..a351fc9f7 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -827,6 +827,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); |