diff options
author | Michel Dänzer <mdaenzer@redhat.com> | 2021-07-07 18:51:02 +0200 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2021-07-09 11:48:15 +0200 |
commit | a6d178b6af4bb4cd7ba28299c3ddd9d90bcbaaa5 (patch) | |
tree | 266592214ae00415fb86b1bece08fb49d557b530 | |
parent | 7e20c8b7b8357eb8986f89e85be22ab1c29f2ca4 (diff) |
randr: Bail from RRTellChanged if there's no root window yet
This can happen if RRTellChanged is called during initialization.
Continuing in that case makes no sense conceptually:
* Any event sent over the wire requires a corresponding window.
* No root window probably means there can't be any clients which could
receive the events.
In practice, it would result in a crash down the road due to
dereferencing the NULL ScreenRec::root pointer.
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
-rw-r--r-- | randr/randr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/randr/randr.c b/randr/randr.c index a4f519888..3f94c2f6c 100644 --- a/randr/randr.c +++ b/randr/randr.c @@ -615,6 +615,10 @@ RRTellChanged(ScreenPtr pScreen) primarysp = pScrPriv; } + /* If there's no root window yet, can't send events */ + if (!primary->root) + return; + xorg_list_for_each_entry(iter, &primary->secondary_list, secondary_head) { pSecondaryScrPriv = rrGetScrPriv(iter); |