diff --git a/i810_dri_fix_freeze.diff b/i810_dri_fix_freeze.diff new file mode 100644 index 0000000..146911f --- /dev/null +++ b/i810_dri_fix_freeze.diff @@ -0,0 +1,50 @@ +diff --git a/GL/mesa/X/xf86glx.c b/GL/mesa/X/xf86glx.c +index df9be07..679d55c 100644 +--- a/GL/mesa/X/xf86glx.c ++++ b/GL/mesa/X/xf86glx.c +@@ -296,7 +296,7 @@ static void init_screen_visuals(__GLXMESAscreen *screen) + __GLcontextModes *modes; + XMesaVisual *pXMesaVisual; + int *used; +- int i, j, size; ++ int num_vis, j, size; + + /* Alloc space for the list of XMesa visuals */ + size = screen->base.numVisuals * sizeof(XMesaVisual); +@@ -312,7 +312,7 @@ static void init_screen_visuals(__GLXMESAscreen *screen) + used = (int *) xalloc(pScreen->numVisuals * sizeof(int)); + memset(used, 0, pScreen->numVisuals * sizeof(int)); + +- i = 0; ++ num_vis = 0; + for ( modes = screen->base.modes; modes != NULL; modes = modes->next ) { + const int vis_class = _gl_convert_to_x_visual_type( modes->visualType ); + const int nplanes = (modes->rgbBits - modes->alphaBits); +@@ -327,7 +327,8 @@ static void init_screen_visuals(__GLXMESAscreen *screen) + !used[j]) { + + /* Create the XMesa visual */ +- pXMesaVisual[i] = ++ assert(num_vis < screen->base.numVisuals); ++ pXMesaVisual[num_vis] = + XMesaCreateVisual(pScreen, + &pVis[j], + modes->rgbMode, +@@ -364,13 +365,15 @@ static void init_screen_visuals(__GLXMESAscreen *screen) + FatalError( "Matching visual found, but visualID still -1!\n" ); + } + +- i++; ++ num_vis++; + } + + xfree(used); + +- screen->num_vis = pScreen->numVisuals; ++ screen->num_vis = num_vis; + screen->xm_vis = pXMesaVisual; ++ ++ assert(screen->num_vis <= screen->base.numVisuals); + } + + static __GLXscreen * diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 87588cc..77b23da 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Thu Aug 23 12:33:57 CEST 2007 - sndirsch@suse.de + +- i810_dri_fix_freeze.diff: + * fixes freeze after pressing Ctrl-Alt-BS (X.Org Bug #10809) + +------------------------------------------------------------------- +Thu Aug 23 05:32:04 CEST 2007 - sndirsch@suse.de + +- xserver-mode-fuzzy-check.diff: + * Fix for Xserver being more fuzzy about mode validation + (Bug #270846) + ------------------------------------------------------------------- Sat Aug 18 11:05:14 CEST 2007 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 9244fe5..fb58f8c 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: 121 +Release: 123 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -91,6 +91,8 @@ Patch65: remove__GLinterface.patch Patch66: commit-c09e68c Patch67: xorg-docs.diff Patch68: xephyr-sig11-fix.diff +Patch69: xserver-mode-fuzzy-check.diff +Patch70: i810_dri_fix_freeze.diff Patch334: p_pci-domain.diff Patch357: p_pci-ce-x.diff @@ -202,6 +204,8 @@ pushd xorg-docs-* %patch67 popd %patch68 +%patch69 -p1 +%patch70 -p1 %build pushd xorg-docs-* @@ -537,6 +541,13 @@ exit 0 %endif %changelog +* Thu Aug 23 2007 - sndirsch@suse.de +- i810_dri_fix_freeze.diff: + * fixes freeze after pressing Ctrl-Alt-BS (X.Org Bug #10809) +* Thu Aug 23 2007 - sndirsch@suse.de +- xserver-mode-fuzzy-check.diff: + * Fix for Xserver being more fuzzy about mode validation + (Bug #270846) * Sat Aug 18 2007 - sndirsch@suse.de - disable AIGLX by default; without enabled Composite extension (still problematic on many drivers) it's rather useless anyway diff --git a/xserver-mode-fuzzy-check.diff b/xserver-mode-fuzzy-check.diff new file mode 100644 index 0000000..a313ee8 --- /dev/null +++ b/xserver-mode-fuzzy-check.diff @@ -0,0 +1,35 @@ +diff --git a/hw/xfree86/modes/xf86Modes.c b/hw/xfree86/modes/xf86Modes.c +index ea9f85b..0ead704 100644 +--- a/hw/xfree86/modes/xf86Modes.c ++++ b/hw/xfree86/modes/xf86Modes.c +@@ -389,8 +389,8 @@ xf86ValidateModesSync(ScrnInfoPtr pScrn, + + bad = TRUE; + for (i = 0; i < mon->nHsync; i++) { +- if (xf86ModeHSync(mode) >= mon->hsync[i].lo && +- xf86ModeHSync(mode) <= mon->hsync[i].hi) ++ if (xf86ModeHSync(mode) >= mon->hsync[i].lo - .5 && ++ xf86ModeHSync(mode) <= mon->hsync[i].hi + .5) + { + bad = FALSE; + } +@@ -400,8 +400,8 @@ xf86ValidateModesSync(ScrnInfoPtr pScrn, + + bad = TRUE; + for (i = 0; i < mon->nVrefresh; i++) { +- if (xf86ModeVRefresh(mode) >= mon->vrefresh[i].lo && +- xf86ModeVRefresh(mode) <= mon->vrefresh[i].hi) ++ if (xf86ModeVRefresh(mode) >= mon->vrefresh[i].lo - .5 && ++ xf86ModeVRefresh(mode) <= mon->vrefresh[i].hi + .5) + { + bad = FALSE; + } +@@ -434,7 +434,7 @@ xf86ValidateModesClocks(ScrnInfoPtr pScr + for (mode = modeList; mode != NULL; mode = mode->next) { + Bool good = FALSE; + for (i = 0; i < n_ranges; i++) { +- if (mode->Clock >= min[i] && mode->Clock <= max[i]) { ++ if (mode->Clock >= min[i] - .5 && mode->Clock <= max[i] + .5) { + good = TRUE; + break; + }