Hello community, here is the log from the commit of package xorg-x11-server checked in at Fri Aug 31 18:43:54 CEST 2007. -------- --- xorg-x11-server/xorg-x11-server.changes 2007-08-23 14:20:00.000000000 +0200 +++ /mounts/work_src_done/STABLE/xorg-x11-server/xorg-x11-server.changes 2007-08-31 17:09:00.349979000 +0200 @@ -1,0 +2,30 @@ +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. + +------------------------------------------------------------------- New: ---- randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-server.spec ++++++ --- /var/tmp/diff_new_pack.L23775/_old 2007-08-31 18:42:56.000000000 +0200 +++ /var/tmp/diff_new_pack.L23775/_new 2007-08-31 18:42:56.000000000 +0200 @@ -21,7 +21,7 @@ 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 @@ 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 @@ %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 @@ %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) ++++++ randr12-2926cf1da7e4ed63573bfaecdd7e19beb3057d9b.diff ++++++ 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)) ++++++ randr12-5b424b562eee863b11571de4cd0019cd9bc5b379.diff ++++++ 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) ++++++ randr12-8d230319040f0a7f72231da2bf5ec97dc3612e21.diff ++++++ 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)); ++++++ randr12-aec0d06469a2fa7440fdd5ee03dc256a68704e77.diff ++++++ 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; ++++++ randr12-b2dcfbca2441ca8c561f86a78a76ab59ecbb40e4.diff ++++++ 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]; ++++++ randr12-b4193a2eee80895c5641e77488df0e72a73a3d99.diff ++++++ 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 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org