Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dirkmueller:Factory
xorg-x11-server
u_randr-Do-not-crash-if-slave-screen-does-not-h...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch of Package xorg-x11-server
Patch-mainline: To be upstreamed Author: Michal Srb <msrb@suse.com> Subject: randr: Do not crash if slave screen does not have provider. References: bnc#1068961 All GPU screens are attached as unbound GPUs to master, even if they have no capabilities or the provider field is null. Handle that case in RRTellChanged. --- This prevents crash in setups with for example two qxl devices, or fbdev and qxl device. I am not sure if it is a proper fix and not just papering over a bug somewhere else, but there are more places that test whether the provider is set, so maybe it is correct way. I would think that if a slave screen does not have provider, there is no reason for it to become an unbound GPU in master's slave_list. Similarly if master has no provider, then having anything in slave_list is useless. But it seems the AttachUnboundGPU and the rest of the code handling screen to GPU screen attachments does not know about randr's privates, so it can not check whether provider is there. randr/randr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Index: xorg-server-21.1.0/randr/randr.c =================================================================== --- xorg-server-21.1.0.orig/randr/randr.c +++ xorg-server-21.1.0/randr/randr.c @@ -650,8 +650,13 @@ RRTellChanged(ScreenPtr pScreen) pScrPriv->crtcs[i]->changed = FALSE; xorg_list_for_each_entry(iter, &primary->secondary_list, secondary_head) { + if (!dixPrivateKeyRegistered(rrPrivKey)) { + break; + } pSecondaryScrPriv = rrGetScrPriv(iter); - pSecondaryScrPriv->provider->changed = FALSE; + if (pSecondaryScrPriv->provider) { + pSecondaryScrPriv->provider->changed = FALSE; + } if (iter->is_output_secondary) { for (i = 0; i < pSecondaryScrPriv->numOutputs; i++) pSecondaryScrPriv->outputs[i]->changed = FALSE;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor