forked from pool/xorg-x11-server
Stefan Dirsch
540300e204
* The meson support is now fully mature. While autotools support will still be kept for this release series, it will be dropped afterwards. * Glamor support for Xvfb. * Variable refresh rate support in the modesetting driver. * XInput 2.4 support which adds touchpad gestures. * DMX DDX has been removed. * X server now correctly reports display DPI in more cases. This may affect rendering of client applications that have their own workarounds for hi-DPI screens. * A large number of small features and various bug fixes. - updated xorg-server-provides - supersedes patches * U_Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch * U_dix-window-Use-ConfigureWindow-instead-of-MoveWindow.patch * U_glamor_egl-Reject-OpenGL-2.1-early-on.patch * u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch - refreshed patches * N_fix-dpi-values.diff * N_zap_warning_xserver.diff * u_modesetting-Fix-dirty-updates-for-sw-rotation.patch * u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch * u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch - disabled n_xserver-optimus-autoconfig-hack.patch, which I believe is superseded by: commit 078277e4d92f05a90c4715d61b89b9d9d38d68ea Author: Dave Airlie <airlied@redhat.com> Date: Fri Aug 17 09:49:24 2012 +1000 xf86: autobind GPUs to the screen - added pkgconfig(libxcvt) - cvt binary moved to libxcvt0 package OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=804
39 lines
1.8 KiB
Diff
39 lines
1.8 KiB
Diff
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
|
|
@@ -651,7 +651,9 @@ RRTellChanged(ScreenPtr pScreen)
|
|
|
|
xorg_list_for_each_entry(iter, &primary->secondary_list, secondary_head) {
|
|
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;
|