1
0
OBS User unknown 2007-08-31 16:43:55 +00:00 committed by Git OBS Bridge
parent 235c909b1b
commit 026ed22056
8 changed files with 275 additions and 1 deletions

View File

@ -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))

View File

@ -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)

View File

@ -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));

View File

@ -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;

View File

@ -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];

View File

@ -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

View File

@ -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

View File

@ -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)