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>
This commit is contained in:
Michel Dänzer 2021-07-07 18:51:02 +02:00 committed by Michel Dänzer
parent 7e20c8b7b8
commit a6d178b6af

View File

@ -615,6 +615,10 @@ RRTellChanged(ScreenPtr pScreen)
primarysp = pScrPriv; 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) { xorg_list_for_each_entry(iter, &primary->secondary_list, secondary_head) {
pSecondaryScrPriv = rrGetScrPriv(iter); pSecondaryScrPriv = rrGetScrPriv(iter);