summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <mdaenzer@redhat.com>2021-07-09 12:10:54 +0200
committerMichel Dänzer <mdaenzer@redhat.com>2021-07-09 12:10:54 +0200
commitb42c33b6ef6ab23ba0f5cd5f2b858043d8d39a62 (patch)
treead44b42a7a8c330cc403f259bfaffd7c6147182f
parent96829a7b19f0dbc3f1c50f968e64503c942013ad (diff)
xwayland: Call RRTellChanged if the RandR configuration may have changed
This makes sure RandR events are sent to interested clients as needed. This was happening implicitly in some cases, but not in others, e.g. if the root window size didn't change. If this were to call RRTellChanged more often than necessary in some cases, that should be harmless, as it only sends events if something has actually changed since last time. Should fix https://bugzilla.redhat.com/show_bug.cgi?id=1979892 . v2: * Call RRTellChanged at the very end of update_screen_size, just in case. Reviewed-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit 204f10c29e0f323e7829ecf48e0f002be96e194d)
-rw-r--r--hw/xwayland/xwayland-output.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
index d4634467d..52c505057 100644
--- a/hw/xwayland/xwayland-output.c
+++ b/hw/xwayland/xwayland-output.c
@@ -216,6 +216,8 @@ update_screen_size(struct xwl_output *xwl_output, int width, int height)
}
update_desktop_dimensions();
+
+ RRTellChanged(xwl_screen->screen);
}
struct xwl_emulated_mode *
@@ -674,6 +676,7 @@ xwl_output_create(struct xwl_screen *xwl_screen, uint32_t id)
RRCrtcGammaSetSize(xwl_output->randr_crtc, 256);
RROutputSetCrtcs(xwl_output->randr_output, &xwl_output->randr_crtc, 1);
RROutputSetConnection(xwl_output->randr_output, RR_Connected);
+ RRTellChanged(xwl_screen->screen);
/* We want the output to be in the list as soon as created so we can
* use it when binding to the xdg-output protocol...
@@ -717,6 +720,7 @@ xwl_output_remove(struct xwl_output *xwl_output)
RRCrtcDestroy(xwl_output->randr_crtc);
RROutputDestroy(xwl_output->randr_output);
+ RRTellChanged(xwl_screen->screen);
xwl_output_destroy(xwl_output);
}