From 026ed22056156a6f58e35389d7752be92a29a9c1d4f7b01ab3d08f2afd46e2d5 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 31 Aug 2007 16:43:55 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=41 --- ...6cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff | 13 +++ ...24b562eee863b11571de4cd0019cd9bc5b379.diff | 94 +++++++++++++++++++ ...30319040f0a7f72231da2bf5ec97dc3612e21.diff | 12 +++ ...0d06469a2fa7440fdd5ee03dc256a68704e77.diff | 41 ++++++++ ...cfbca2441ca8c561f86a78a76ab59ecbb40e4.diff | 13 +++ ...93a2eee80895c5641e77488df0e72a73a3d99.diff | 32 +++++++ xorg-x11-server.changes | 30 ++++++ xorg-x11-server.spec | 41 +++++++- 8 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff create mode 100644 randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff create mode 100644 randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff create mode 100644 randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff create mode 100644 randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff create mode 100644 randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff diff --git a/randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff b/randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff new file mode 100644 index 0000000..410f7d4 --- /dev/null +++ b/randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff @@ -0,0 +1,13 @@ +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 889be6f..9d74e53 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -716,7 +716,7 @@ xf86RandR12CrtcSet (ScreenPtr pScreen, + xf86CrtcPtr *save_crtcs; + Bool save_enabled = crtc->enabled; + +- save_crtcs = ALLOCATE_LOCAL(config->num_crtc * sizeof (xf86CrtcPtr)); ++ save_crtcs = ALLOCATE_LOCAL(config->num_output * sizeof (xf86CrtcPtr)); + if ((randr_mode != NULL) != crtc->enabled) + changed = TRUE; + else if (randr_mode && !xf86RandRModeMatches (randr_mode, &crtc->mode)) diff --git a/randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff b/randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff new file mode 100644 index 0000000..dbdaccf --- /dev/null +++ b/randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff @@ -0,0 +1,94 @@ +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 6c3bf8d..889be6f 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -951,7 +951,6 @@ xf86RandR12SetInfo12 (ScreenPtr pScreen) + return FALSE; + } + +- RROutputSetCrtc (output->randr_output, randr_crtc); + RROutputSetPhysicalSize(output->randr_output, + output->mm_width, + output->mm_height); +diff --git a/randr/randrstr.h b/randr/randrstr.h +index 4cc3a46..bd19fe9 100644 +--- a/randr/randrstr.h ++++ b/randr/randrstr.h +@@ -694,9 +694,6 @@ RROutputSetCrtcs (RROutputPtr output, + RRCrtcPtr *crtcs, + int numCrtcs); + +-void +-RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc); +- + Bool + RROutputSetConnection (RROutputPtr output, + CARD8 connection); +@@ -802,7 +799,6 @@ Query state: + 1.2: + RRScreenSetSizeRange + RROutputSetCrtcs +- RROutputSetCrtc + RRModeGet + RROutputSetModes + RROutputSetConnection +@@ -822,7 +818,6 @@ Query state: + RRCrtcCreate + RROutputCreate + RROutputSetCrtcs +- RROutputSetCrtc + RROutputSetConnection + RROutputSetSubpixelOrder + RROldModeAdd • This adds modes one-at-a-time +diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c +index 3ce9e21..db5007e 100644 +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -134,6 +134,7 @@ RRCrtcNotify (RRCrtcPtr crtc, + break; + if (j == crtc->numOutputs) + { ++ outputs[i]->crtc = crtc; + RROutputChanged (outputs[i], FALSE); + RRCrtcChanged (crtc, FALSE); + } +@@ -149,6 +150,7 @@ RRCrtcNotify (RRCrtcPtr crtc, + break; + if (i == numOutputs) + { ++ crtc->outputs[j]->crtc = NULL; + RROutputChanged (crtc->outputs[j], FALSE); + RRCrtcChanged (crtc, FALSE); + } +diff --git a/randr/rrinfo.c b/randr/rrinfo.c +index 5ef1a6b..858b1ed 100644 +--- a/randr/rrinfo.c ++++ b/randr/rrinfo.c +@@ -98,7 +98,6 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + if (!output) + return; + RROutputSetCrtcs (output, &crtc, 1); +- RROutputSetCrtc (output, crtc); + RROutputSetConnection (output, RR_Connected); + #ifdef RENDER + RROutputSetSubpixelOrder (output, PictureGetSubpixelOrder (pScreen)); +diff --git a/randr/rroutput.c b/randr/rroutput.c +index e001162..1e1cfa5 100644 +--- a/randr/rroutput.c ++++ b/randr/rroutput.c +@@ -286,15 +286,6 @@ RROutputSetCrtcs (RROutputPtr output, + return TRUE; + } + +-void +-RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc) +-{ +- if (output->crtc == crtc) +- return; +- output->crtc = crtc; +- RROutputChanged (output, FALSE); +-} +- + Bool + RROutputSetConnection (RROutputPtr output, + CARD8 connection) diff --git a/randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff b/randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff new file mode 100644 index 0000000..547a0f4 --- /dev/null +++ b/randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff @@ -0,0 +1,12 @@ +diff --git a/randr/rrinfo.c b/randr/rrinfo.c +index 858b1ed..bd5d5b1 100644 +--- a/randr/rrinfo.c ++++ b/randr/rrinfo.c +@@ -98,6 +98,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + if (!output) + return; + RROutputSetCrtcs (output, &crtc, 1); ++ output->crtc = crtc; + RROutputSetConnection (output, RR_Connected); + #ifdef RENDER + RROutputSetSubpixelOrder (output, PictureGetSubpixelOrder (pScreen)); diff --git a/randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff b/randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff new file mode 100644 index 0000000..c6d90dd --- /dev/null +++ b/randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff @@ -0,0 +1,41 @@ +diff --git a/randr/rrscreen.c b/randr/rrscreen.c +index d92a0ff..8798b42 100644 +--- a/randr/rrscreen.c ++++ b/randr/rrscreen.c +@@ -738,6 +738,7 @@ ProcRRSetScreenConfig (ClientPtr client) + int rate; + Bool has_rate; + RROutputPtr output; ++ RRCrtcPtr crtc; + RRModePtr mode; + RR10DataPtr pData = NULL; + RRScreenSizePtr pSize; +@@ -783,7 +784,9 @@ ProcRRSetScreenConfig (ClientPtr client) + rep.status = RRSetConfigFailed; + goto sendReply; + } +- ++ ++ crtc = output->crtc; ++ + /* + * if the client's config timestamp is not the same as the last config + * timestamp, then the config information isn't up-to-date and +@@ -831,7 +834,7 @@ ProcRRSetScreenConfig (ClientPtr client) + return BadValue; + } + +- if ((~output->crtc->rotations) & rotation) ++ if ((~crtc->rotations) & rotation) + { + /* + * requested rotation or reflection not supported by screen +@@ -914,7 +917,7 @@ ProcRRSetScreenConfig (ClientPtr client) + } + } + +- if (!RRCrtcSet (output->crtc, mode, 0, 0, stuff->rotation, 1, &output)) ++ if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output)) + rep.status = RRSetConfigFailed; + else + rep.status = RRSetConfigSuccess; diff --git a/randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff b/randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff new file mode 100644 index 0000000..cab8483 --- /dev/null +++ b/randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff @@ -0,0 +1,13 @@ +diff --git a/randr/rrinfo.c b/randr/rrinfo.c +index 8b0c93d..7e77d39 100644 +--- a/randr/rrinfo.c ++++ b/randr/rrinfo.c +@@ -104,7 +104,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + #endif + } + +- output = RRFirstOutput (pScreen); ++ output = pScrPriv->outputs[0]; + if (!output) + return; + crtc = pScrPriv->crtcs[0]; diff --git a/randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff b/randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff new file mode 100644 index 0000000..3157573 --- /dev/null +++ b/randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff @@ -0,0 +1,32 @@ +diff --git a/randr/rrinfo.c b/randr/rrinfo.c +index bd5d5b1..8b0c93d 100644 +--- a/randr/rrinfo.c ++++ b/randr/rrinfo.c +@@ -98,7 +98,6 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + if (!output) + return; + RROutputSetCrtcs (output, &crtc, 1); +- output->crtc = crtc; + RROutputSetConnection (output, RR_Connected); + #ifdef RENDER + RROutputSetSubpixelOrder (output, PictureGetSubpixelOrder (pScreen)); +@@ -108,7 +107,9 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + output = RRFirstOutput (pScreen); + if (!output) + return; +- crtc = output->crtc; ++ crtc = pScrPriv->crtcs[0]; ++ if (!crtc) ++ return; + + /* check rotations */ + if (rotations != crtc->rotations) +@@ -168,7 +169,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) + + /* notice current mode */ + if (newMode) +- RRCrtcNotify (output->crtc, newMode, 0, 0, pScrPriv->rotation, ++ RRCrtcNotify (crtc, newMode, 0, 0, pScrPriv->rotation, + 1, &output); + } + #endif diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 77b23da..e97c5bb 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,33 @@ +------------------------------------------------------------------- +Fri Aug 31 17:02:26 CEST 2007 - sndirsch@suse.de + +- added several RANDR 1.2 fixes (Bug #306699) + * randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff + Allocate the right number of entries for saving crtcs + * randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff + Set the crtc before the output change is notified. Set the new + randr crtc of the output before the output change notification + is delivered to the clients. Remove RROutputSetCrtc as it is + not really necessary. All we have to do is set the output's + crtc on RRCrtcNotify + * randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff + Fix the output->crtc initialization in the old randr setup + * randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff + Fix a crash when rotating the screen. Remember output->crtc + before setting a NULL mode because RRCrtcNotify now sets + output->crtc to NULL. Use the saved crtc to set the new mode. + * randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff + RRScanOldConfig cannot use RRFirstOutput before output is + configured. RRFirstOutput returns the first active output, + which won't be set until after RRScanOldConfig is finished + running. Instead, just use the first output (which is the only + output present with an old driver, after all). + * randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff + RRScanOldConfig wasn't getting crtcs set correctly. The output + crtc is set by RRCrtcNotify, which is called at the end of + RRScanOldConfig. Several uses of output->crtc in this function + were wrong. + ------------------------------------------------------------------- Thu Aug 23 12:33:57 CEST 2007 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index fb58f8c..0544a9a 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -21,7 +21,7 @@ BuildRequires: libjpeg-devel URL: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.2 -Release: 123 +Release: 129 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -93,6 +93,12 @@ Patch67: xorg-docs.diff Patch68: xephyr-sig11-fix.diff Patch69: xserver-mode-fuzzy-check.diff Patch70: i810_dri_fix_freeze.diff +Patch71: randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff +Patch72: randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff +Patch73: randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff +Patch74: randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff +Patch75: randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff +Patch76: randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff Patch334: p_pci-domain.diff Patch357: p_pci-ce-x.diff @@ -206,6 +212,12 @@ popd %patch68 %patch69 -p1 %patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 %build pushd xorg-docs-* @@ -541,6 +553,33 @@ exit 0 %endif %changelog +* Fri Aug 31 2007 - sndirsch@suse.de +- added several RANDR 1.2 fixes (Bug #306699) + * randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff + Allocate the right number of entries for saving crtcs + * randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff + Set the crtc before the output change is notified. Set the new + randr crtc of the output before the output change notification + is delivered to the clients. Remove RROutputSetCrtc as it is + not really necessary. All we have to do is set the output's + crtc on RRCrtcNotify + * randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff + Fix the output->crtc initialization in the old randr setup + * randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff + Fix a crash when rotating the screen. Remember output->crtc + before setting a NULL mode because RRCrtcNotify now sets + output->crtc to NULL. Use the saved crtc to set the new mode. + * randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff + RRScanOldConfig cannot use RRFirstOutput before output is + configured. RRFirstOutput returns the first active output, + which won't be set until after RRScanOldConfig is finished + running. Instead, just use the first output (which is the only + output present with an old driver, after all). + * randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff + RRScanOldConfig wasn't getting crtcs set correctly. The output + crtc is set by RRCrtcNotify, which is called at the end of + RRScanOldConfig. Several uses of output->crtc in this function + were wrong. * Thu Aug 23 2007 - sndirsch@suse.de - i810_dri_fix_freeze.diff: * fixes freeze after pressing Ctrl-Alt-BS (X.Org Bug #10809)