]> git.draconx.ca Git - gentoo-draconx.git/commitdiff
xorg-server: Update 9999 ebuild.
authorNick Bowler <nbowler@elliptictech.com>
Wed, 8 Jun 2011 18:58:08 +0000 (14:58 -0400)
committerNick Bowler <nbowler@elliptictech.com>
Wed, 29 Jun 2011 20:41:10 +0000 (16:41 -0400)
This incorporates the lastest from x11-overlay and adds the patches
required for Intel's new "SNA" feature.

x11-base/xorg-server/Manifest
x11-base/xorg-server/files/0001-xaa-Free-the-scratch-pixmap-header-before-freeing-th.patch [new file with mode: 0644]
x11-base/xorg-server/files/0002-Remove-the-cacheing-of-the-last-scratch-PixmapRec.patch [new file with mode: 0644]
x11-base/xorg-server/files/0003-shm-Replace-open-coded-version-of-GetScratchPixmapHe.patch [new file with mode: 0644]
x11-base/xorg-server/files/0004-shadow-Remove-unused-ModifyPixmapHeader-wrapping.patch [new file with mode: 0644]
x11-base/xorg-server/files/xdm.initd-3
x11-base/xorg-server/xorg-server-9999.ebuild

index 30d84d4d543b74720d3a4b64614d301fc74ab2b3..64b380486164a0615848d25c18ee7d6001013b2b 100644 (file)
@@ -1,11 +1,15 @@
+AUX 0001-xaa-Free-the-scratch-pixmap-header-before-freeing-th.patch 1123 RMD160 7b11ccee412d4de0efc063821dcdd4f7f0c7f006 SHA1 1552b4c356fde066c72e9edbed209af2ec4d5ef7 SHA256 aef87d2307c9f15e152c7f4666272f3a58a938c682c842c3d186440d7a55aa96
 AUX 0001-xfree86-Add-DontLie-server-flag.patch 4746 RMD160 87de996ac0eaab5d0bdc7013319ee8b0c7cd1727 SHA1 f5ba61e4a1a08b6d8f35be96d7295599edae0b84 SHA256 904cdde3750fdc23572286cd8d8fb6e6372b8c56021dcb8b1a14a5e1e5101759
+AUX 0002-Remove-the-cacheing-of-the-last-scratch-PixmapRec.patch 8449 RMD160 978b89e43da6d4fea1b4767a2ba599c382ea2f69 SHA1 fa48c334e0064d982ba9938079d1cdcc62e84c27 SHA256 730194ae24f38423daa00726486860c552cdae97e930ec7864e678c90fe36041
+AUX 0003-shm-Replace-open-coded-version-of-GetScratchPixmapHe.patch 1460 RMD160 8a05de2c0ab885c7b4469160aa0f596af3da0791 SHA1 fdee7f6459b9e942ba8cf771836ff3ac58abfa84 SHA256 18e7728c546ba670810e7a0540ec3ea266c2ff2266cfe8a98d015b21ac0947d5
+AUX 0004-shadow-Remove-unused-ModifyPixmapHeader-wrapping.patch 1501 RMD160 7837abca53cc6263ca3afc26a2c173b13af3b9e2 SHA1 56eada8b1c1427dc1d9e701f1a87f307d8bb7149 SHA256 4b5d1c0726fc346675a26c521c00b6fd51b2e5e349f5a22ef80d54e985e9e8af
 AUX 1.7.5.902-fix-tslib-1.0-check.patch 743 RMD160 139969e7c89ccbb6c86a93b7ea74aad2e942cd55 SHA1 621f3dea75aeb84a30279e5854b0ae256f653113 SHA256 03fced212933eb4502554c4fd629ead92027dc13f178ad5c43cd59b7ce615cea
 AUX 1.8.0-match-only-sane-devices.patch 1980 RMD160 4fee29076bb30e8fb1b820ef58a1c26f3bd63c73 SHA1 98d4ea8e493a31f141e39f4a468458469ebff58f SHA256 95f6ab36fa1b6b80786ff90fb2ee1f7fe02d964a1d10c90277060b4982d8eace
 AUX 1.8.0-no-hardcoded-etc.patch 833 RMD160 9e3736556f8c74c1c78561590cf03e9316d28a75 SHA1 0063e0c520f128507e71134571de6dd95a00079c SHA256 2168832548dbb8d6619df7b2a54b22f118de588522b4014dabaa98829331a6b9
 AUX xdm-setup.initd-1 339 RMD160 dd3f50da114627d2be776b41a0d7d967ebbff477 SHA1 d86813f810aab72b81a72c298c2d230554d8e82e SHA256 018bc6acc70c708d8e3935617b8da2b84a3f5502a4db4c4731c2eaea7d3f04c0
 AUX xdm.confd-3 853 RMD160 363cd18f760650923e16579bf55f661e93dad63b SHA1 0027b98f2aeb5c43219fa4f9b7d81a05101bec6f SHA256 00af0d957ff1b4f31c1aa4701d93a54080408548792deafac5414cbfa13b89ec
 AUX xdm.initd 5392 RMD160 eec0b0ccefeee366e891afc73d195240b447421f SHA1 d3ce725e86fa3889f77403354b7f69d8184181ae SHA256 0c087c42d46563fd9d63da655753128aab2a0815efb83f906db3f54ba5c886ce
-AUX xdm.initd-3 5394 RMD160 7810d9873cd27ab8130bf3bd5dd39a219b18a014 SHA1 52b20375c9e21671081d0dcdf99024fc63b8b2b8 SHA256 f0999a2c7486675e3eb549653e136afaf457400fc7ba17d77f0266a2291ebf42
+AUX xdm.initd-3 5551 RMD160 7af6e239e3e75ea88a0766ef2f4976a8b5c51c95 SHA1 bd30222c7941d50fc0f62c5008a0e3b97e2d00e0 SHA256 8f1d35638559d12ed14e8cc2e26800e0ee9a10f14c7be912c834c73d12913601
 AUX xorg-server-1.9-nouveau-default.patch 916 RMD160 0ebdf0fb76364b7fd0c520c3a2f7cc2cc1a83446 SHA1 daddde0f4f4276e12b87354d2e6825ed5c74c6eb SHA256 a7ff421dd928e3025194279f9afb7cc033a896b3417abe339741e9c6ed4b54ea
 AUX xorg-server-disable-acpi.patch 663 RMD160 7074ca5276369b746ea7606a0795232aafe07c90 SHA1 d300a37dd2e0a8aa3965948c13f6995e6767841d SHA256 5b3cc7c8bea18fe3ba81851d2846d19ffd8fab9cdf5d8f3a274846847e734200
 AUX xorg-sets.conf 199 RMD160 33815115b6e8b8360af4f0778b0e2c5fb1a9aaee SHA1 b5a2fd01a97558fa909c67f510d8a59b55e20f57 SHA256 1201d0337ac69d9715f4454a86dfb8a7bd1ae6f4c2578042fc08f283a997597c
@@ -15,4 +19,4 @@ DIST xorg-server-1.8.1.tar.bz2 5200978 RMD160 27bd6d1e565e241412f1fb8e18b5b9b194
 EBUILD xorg-server-1.7.7.ebuild 7220 RMD160 ed925fe7fccf08ae58ce59314a0c472535f13ec0 SHA1 5d72d32a1b8c9c4f40f88627b42d749ed4223e7b SHA256 f70710b49e1ca43c8cc765fe20ab9819bc5b2793eff0064cee607e4703d73ccc
 EBUILD xorg-server-1.8.0.ebuild 8221 RMD160 6aa53ec1042a8c12b9aa06c1aee767a50e1c2445 SHA1 d1e770f5108c161fb5d20207c612c568c32cfdc8 SHA256 5e21d8ab052b17774c40b67fb20981847a289ddbad39b8753501d21b50a6d450
 EBUILD xorg-server-1.8.1-r1.ebuild 7998 RMD160 c1035725f811ee2b5723a8bdac73cb3eeb3f6dd0 SHA1 08cf52506fb9eb2261b9c3d64dd8807fd95daeb5 SHA256 43b5bc070b8f479c08532f4a5c62b332cf8f579ee5f49614ffb256a1bb746a1a
-EBUILD xorg-server-9999.ebuild 7709 RMD160 07d17dd9f7666826cd5914e46135085f140c89cd SHA1 acbc023b5acadcc57c4dc06c537ffcb71ce06ab5 SHA256 016bd9f10f4368379c833593beb48e2de036b744cee54b430dd5f26c095d480b
+EBUILD xorg-server-9999.ebuild 6983 RMD160 8e70bf7fa72a84fc82f7682adbe85852262f86b5 SHA1 3ee6e768666fad5ea93738ec56d35c9b79d3cb49 SHA256 6c9c1246cce29638d736fb138321c334b1e2954fe925ab7f0595f7464c0df3ac
diff --git a/x11-base/xorg-server/files/0001-xaa-Free-the-scratch-pixmap-header-before-freeing-th.patch b/x11-base/xorg-server/files/0001-xaa-Free-the-scratch-pixmap-header-before-freeing-th.patch
new file mode 100644 (file)
index 0000000..8ce2673
--- /dev/null
@@ -0,0 +1,35 @@
+From 6c51a336f31c63167beb48bf0512cd13feac70a2 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 6 Jun 2011 05:36:06 +0000
+Subject: [PATCH 1/4] xaa: Free the scratch pixmap header before freeing the contents
+
+Some DDX may be sensitive to the ordering and could conceivably continue
+to use the memory freed before FreeScratchPixmapHeader is called.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+ hw/xfree86/xaa/xaaOffscreen.c |    5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/hw/xfree86/xaa/xaaOffscreen.c b/hw/xfree86/xaa/xaaOffscreen.c
+index cd0d9a9..8fa5d6d 100644
+--- a/hw/xfree86/xaa/xaaOffscreen.c
++++ b/hw/xfree86/xaa/xaaOffscreen.c
+@@ -90,12 +90,11 @@ XAAMoveInOffscreenPixmaps(ScreenPtr pScreen)
+       (*pGC->ops->CopyArea)((DrawablePtr)tmpPix, (DrawablePtr)pPix, pGC, 
+               0, 0, pPix->drawable.width, pPix->drawable.height, 0, 0);       
+-      free(data);
+-      tmpPix->devPrivate.ptr = NULL;
+-
+       FreeScratchGC(pGC);
+       FreeScratchPixmapHeader(tmpPix);
++      free(data);
++
+       pPriv->offscreenArea = area;
+       pLink->area = NULL;
+       pLink = pLink->next;
+-- 
+1.7.3.4
+
diff --git a/x11-base/xorg-server/files/0002-Remove-the-cacheing-of-the-last-scratch-PixmapRec.patch b/x11-base/xorg-server/files/0002-Remove-the-cacheing-of-the-last-scratch-PixmapRec.patch
new file mode 100644 (file)
index 0000000..8b1ff08
--- /dev/null
@@ -0,0 +1,246 @@
+From 3d511ad85744b88158d6dbcaa51eb8860cde8dd4 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 6 Jun 2011 05:36:07 +0000
+Subject: [PATCH 2/4] Remove the cacheing of the last scratch PixmapRec
+
+In order for the driver to be notified of when the resource backing the
+scratch pixmap becomes no longer accessible, it needs to be called on
+every FreeScratchPixmapHeader(). As we instead maybe cached the
+PixmapRec (to avoid the free and malloc overhead), this notification
+went astray, and the driver would fail to insert the correct barriers on
+the backing resource. That resource would then be reused by the Xserver,
+leading to rampant memory corruption as the GPU flushed it write caches
+at some point in the future and overwriting random structures.
+
+In addition we introduce a new hint, CREATE_PIXMAP_USAGE_SCRATCH_HEADER,
+so that the driver can be warned during pixmap creation (and lifetime)
+if the pixmap points to other data.
+
+A side-effect of removing the cache is that several members of the
+ScreenInfo structure and associated routines become redundant and
+deleted as well. So we bump the ABI version as well.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+ dix/dispatch.c                 |    1 -
+ dix/main.c                     |    4 +--
+ dix/pixmap.c                   |   58 ++++++++++++++++------------------------
+ fb/fbpixmap.c                  |    2 +-
+ hw/xfree86/common/xf86Module.h |    2 +-
+ include/pixmap.h               |    7 +---
+ include/scrnintstr.h           |    8 +++---
+ 7 files changed, 32 insertions(+), 50 deletions(-)
+
+diff --git a/dix/dispatch.c b/dix/dispatch.c
+index 192c8c3..3f73175 100644
+--- a/dix/dispatch.c
++++ b/dix/dispatch.c
+@@ -3855,7 +3855,6 @@ AddScreen(
+       return -1;
+     }
+     pScreen->myNum = i;
+-    pScreen->totalPixmapSize = 0;     /* computed in CreateScratchPixmapForScreen */
+     pScreen->ClipNotify = 0;  /* for R4 ddx compatibility */
+     pScreen->CreateScreenResources = 0;
+diff --git a/dix/main.c b/dix/main.c
+index 955b7ea..7eadf36 100644
+--- a/dix/main.c
++++ b/dix/main.c
+@@ -206,12 +206,11 @@ int main(int argc, char *argv[], char *envp[])
+       if (screenInfo.numScreens < 1)
+           FatalError("no screens found");
+       InitExtensions(argc, argv);
++      InitPixmaps();
+       for (i = 0; i < screenInfo.numScreens; i++)
+       {
+           ScreenPtr pScreen = screenInfo.screens[i];
+-          if (!CreateScratchPixmapsForScreen(i))
+-              FatalError("failed to create scratch pixmaps");
+           if (pScreen->CreateScreenResources &&
+               !(*pScreen->CreateScreenResources)(pScreen))
+               FatalError("failed to create screen resources");
+@@ -321,7 +320,6 @@ int main(int argc, char *argv[], char *envp[])
+       for (i = screenInfo.numScreens - 1; i >= 0; i--)
+       {
+-          FreeScratchPixmapsForScreen(i);
+           FreeGCperDepth(i);
+           FreeDefaultStipple(i);
+           (* screenInfo.screens[i]->CloseScreen)(i, screenInfo.screens[i]);
+diff --git a/dix/pixmap.c b/dix/pixmap.c
+index cbb5e7f..0b43592 100644
+--- a/dix/pixmap.c
++++ b/dix/pixmap.c
+@@ -53,20 +53,19 @@ PixmapPtr
+ GetScratchPixmapHeader(ScreenPtr pScreen, int width, int height, int depth, 
+                        int bitsPerPixel, int devKind, pointer pPixData)
+ {
+-    PixmapPtr pPixmap = pScreen->pScratchPixmap;
++    PixmapPtr pPixmap;
+-    if (pPixmap)
+-      pScreen->pScratchPixmap = NULL;
+-    else
+-      /* width and height of 0 means don't allocate any pixmap data */
+-      pPixmap = (*pScreen->CreatePixmap)(pScreen, 0, 0, depth, 0);
+-
+-    if (pPixmap) {
+-      if ((*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth,
+-                                         bitsPerPixel, devKind, pPixData))
+-          return pPixmap;
+-      (*pScreen->DestroyPixmap)(pPixmap);
+-    }
++    /* width and height of 0 means don't allocate any pixmap data */
++    pPixmap = (*pScreen->CreatePixmap)(pScreen, 0, 0, depth,
++                                     CREATE_PIXMAP_USAGE_SCRATCH_HEADER);
++    if (pPixmap == NullPixmap)
++      return NullPixmap;
++
++    if ((*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth,
++                                     bitsPerPixel, devKind, pPixData))
++      return pPixmap;
++
++    (*pScreen->DestroyPixmap)(pPixmap);
+     return NullPixmap;
+ }
+@@ -79,33 +78,22 @@ FreeScratchPixmapHeader(PixmapPtr pPixmap)
+     {
+       ScreenPtr pScreen = pPixmap->drawable.pScreen;
+-      pPixmap->devPrivate.ptr = NULL; /* lest ddx chases bad ptr */
+-      if (pScreen->pScratchPixmap)
+-          (*pScreen->DestroyPixmap)(pPixmap);
+-      else
+-          pScreen->pScratchPixmap = pPixmap;
++      if (pPixmap->refcnt != 1)
++              FatalError("Scratch pixmap still in use when finalized, refcnt=%d\n",
++                         pPixmap->refcnt);
++
++      (*pScreen->DestroyPixmap)(pPixmap);
+     }
+ }
+-Bool
+-CreateScratchPixmapsForScreen(int scrnum)
++void
++InitPixmaps(void)
+ {
+     unsigned int      pixmap_size;
+     pixmap_size = sizeof(PixmapRec) + dixPrivatesSize(PRIVATE_PIXMAP);
+-    screenInfo.screens[scrnum]->totalPixmapSize = BitmapBytePad(pixmap_size * 8);
+-
+-    /* let it be created on first use */
+-    screenInfo.screens[scrnum]->pScratchPixmap = NULL;
+-    return TRUE;
+-}
+-
+-
+-void
+-FreeScratchPixmapsForScreen(int scrnum)
+-{
+-    FreeScratchPixmapHeader(screenInfo.screens[scrnum]->pScratchPixmap);
++    screenInfo.totalPixmapSize = BitmapBytePad(pixmap_size * 8);
+ }
+@@ -115,12 +103,12 @@ AllocatePixmap(ScreenPtr pScreen, int pixDataSize)
+ {
+     PixmapPtr pPixmap;
+-    assert(pScreen->totalPixmapSize > 0);
++    assert(screenInfo.totalPixmapSize > 0);
+-    if (pScreen->totalPixmapSize > ((size_t)-1) - pixDataSize)
++    if (screenInfo.totalPixmapSize > ((size_t)-1) - pixDataSize)
+       return NullPixmap;
+     
+-    pPixmap = malloc(pScreen->totalPixmapSize + pixDataSize);
++    pPixmap = malloc(screenInfo.totalPixmapSize + pixDataSize);
+     if (!pPixmap)
+       return NullPixmap;
+diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c
+index a356c67..aebdff0 100644
+--- a/fb/fbpixmap.c
++++ b/fb/fbpixmap.c
+@@ -42,7 +42,7 @@ fbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp,
+     if (paddedWidth / 4 > 32767 || height > 32767)
+       return NullPixmap;
+     datasize = height * paddedWidth;
+-    base = pScreen->totalPixmapSize;
++    base = screenInfo.totalPixmapSize;
+     adjust = 0;
+     if (base & 7)
+       adjust = 8 - (base & 7);
+diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
+index 2a5c805..cf7557e 100644
+--- a/hw/xfree86/common/xf86Module.h
++++ b/hw/xfree86/common/xf86Module.h
+@@ -82,7 +82,7 @@ typedef enum {
+  * mask is 0xFFFF0000.
+  */
+ #define ABI_ANSIC_VERSION     SET_ABI_VERSION(0, 4)
+-#define ABI_VIDEODRV_VERSION  SET_ABI_VERSION(11, 0)
++#define ABI_VIDEODRV_VERSION  SET_ABI_VERSION(12, 0)
+ #define ABI_XINPUT_VERSION    SET_ABI_VERSION(13, 0)
+ #define ABI_EXTENSION_VERSION SET_ABI_VERSION(5, 0)
+ #define ABI_FONT_VERSION      SET_ABI_VERSION(0, 6)
+diff --git a/include/pixmap.h b/include/pixmap.h
+index 014a111..daab76c 100644
+--- a/include/pixmap.h
++++ b/include/pixmap.h
+@@ -103,11 +103,8 @@ extern _X_EXPORT PixmapPtr GetScratchPixmapHeader(
+ extern _X_EXPORT void FreeScratchPixmapHeader(
+     PixmapPtr /*pPixmap*/);
+-extern _X_EXPORT Bool CreateScratchPixmapsForScreen(
+-    int /*scrnum*/);
+-
+-extern _X_EXPORT void FreeScratchPixmapsForScreen(
+-    int /*scrnum*/);
++extern _X_EXPORT void InitPixmaps(
++    void);
+ extern _X_EXPORT PixmapPtr AllocatePixmap(
+     ScreenPtr /*pScreen*/,
+diff --git a/include/scrnintstr.h b/include/scrnintstr.h
+index a9357e8..617eadb 100644
+--- a/include/scrnintstr.h
++++ b/include/scrnintstr.h
+@@ -202,6 +202,8 @@ typedef    void (* ClipNotifyProcPtr)(
+ #define CREATE_PIXMAP_USAGE_BACKING_PIXMAP              2
+ /* pixmap will contain a glyph */
+ #define CREATE_PIXMAP_USAGE_GLYPH_PICTURE               3
++/* pixmap will only be as a header for transient (e.g. on-stack) pixels */
++#define CREATE_PIXMAP_USAGE_SCRATCH_HEADER              4
+ typedef    PixmapPtr (* CreatePixmapProcPtr)(
+       ScreenPtr /*pScreen*/,
+@@ -518,10 +520,6 @@ typedef struct _Screen {
+     GetScreenPixmapProcPtr    GetScreenPixmap;
+     SetScreenPixmapProcPtr    SetScreenPixmap;
+-    PixmapPtr pScratchPixmap;         /* scratch pixmap "pool" */
+-
+-    unsigned int              totalPixmapSize;
+-
+     MarkWindowProcPtr         MarkWindow;
+     MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
+     ConfigNotifyProcPtr               ConfigNotify;
+@@ -556,6 +554,8 @@ typedef struct _ScreenInfo {
+     int               bitmapScanlineUnit;
+     int               bitmapScanlinePad;
+     int               bitmapBitOrder;
++    unsigned int totalPixmapSize;
++
+     int               numPixmapFormats;
+     PixmapFormatRec
+               formats[MAXFORMATS];
+-- 
+1.7.3.4
+
diff --git a/x11-base/xorg-server/files/0003-shm-Replace-open-coded-version-of-GetScratchPixmapHe.patch b/x11-base/xorg-server/files/0003-shm-Replace-open-coded-version-of-GetScratchPixmapHe.patch
new file mode 100644 (file)
index 0000000..7cdd931
--- /dev/null
@@ -0,0 +1,47 @@
+From 25539d955903f408742bd1b79ce80b559c8f9af9 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 6 Jun 2011 05:36:08 +0000
+Subject: [PATCH 3/4] shm: Replace open-coded version of GetScratchPixmapHeader
+
+fbShmCreatePixmap() was just another variant of wrapping an arbitrary
+data pointer within a pixmap, ala GetScratchPixmapHeader().
+
+By using the common version, the fbShmCreatePixmap() is also updated to
+pass the information that the pixmap contents are not part of the ddx
+address space.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+ Xext/shm.c |   16 ++++------------
+ 1 files changed, 4 insertions(+), 12 deletions(-)
+
+diff --git a/Xext/shm.c b/Xext/shm.c
+index b08af82..c6a3aee 100644
+--- a/Xext/shm.c
++++ b/Xext/shm.c
+@@ -1018,18 +1018,10 @@ static PixmapPtr
+ fbShmCreatePixmap (ScreenPtr pScreen,
+                  int width, int height, int depth, char *addr)
+ {
+-    PixmapPtr pPixmap;
+-
+-    pPixmap = (*pScreen->CreatePixmap)(pScreen, 0, 0, pScreen->rootDepth, 0);
+-    if (!pPixmap)
+-      return NullPixmap;
+-
+-    if (!(*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth,
+-          BitsPerPixel(depth), PixmapBytePad(width, depth), (pointer)addr)) {
+-      (*pScreen->DestroyPixmap)(pPixmap);
+-      return NullPixmap;
+-    }
+-    return pPixmap;
++    return GetScratchPixmapHeader(pScreen, width, height, depth,
++                                BitsPerPixel(depth),
++                                PixmapBytePad(width, depth),
++                                addr);
+ }
+ static int
+-- 
+1.7.3.4
+
diff --git a/x11-base/xorg-server/files/0004-shadow-Remove-unused-ModifyPixmapHeader-wrapping.patch b/x11-base/xorg-server/files/0004-shadow-Remove-unused-ModifyPixmapHeader-wrapping.patch
new file mode 100644 (file)
index 0000000..49e6e98
--- /dev/null
@@ -0,0 +1,41 @@
+From 64feb8b55d7c213b6730cd104ceaf232198c943e Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 6 Jun 2011 05:36:09 +0000
+Subject: [PATCH 4/4] shadow: Remove unused ModifyPixmapHeader wrapping
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+ hw/xfree86/shadowfb/shadow.c |    3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+diff --git a/hw/xfree86/shadowfb/shadow.c b/hw/xfree86/shadowfb/shadow.c
+index 5cc476a..46d481b 100644
+--- a/hw/xfree86/shadowfb/shadow.c
++++ b/hw/xfree86/shadowfb/shadow.c
+@@ -63,7 +63,6 @@ typedef struct {
+   CloseScreenProcPtr                  CloseScreen;
+   CopyWindowProcPtr                   CopyWindow;
+   CreateGCProcPtr                     CreateGC;
+-  ModifyPixmapHeaderProcPtr           ModifyPixmapHeader;
+   CompositeProcPtr Composite;
+   Bool                                (*EnterVT)(int, int);
+   void                                (*LeaveVT)(int, int);
+@@ -172,7 +171,6 @@ ShadowFBInit2 (
+     pPriv->CloseScreen = pScreen->CloseScreen;
+     pPriv->CopyWindow = pScreen->CopyWindow;
+     pPriv->CreateGC = pScreen->CreateGC;
+-    pPriv->ModifyPixmapHeader = pScreen->ModifyPixmapHeader;
+     pPriv->EnterVT = pScrn->EnterVT;
+     pPriv->LeaveVT = pScrn->LeaveVT;
+@@ -248,7 +246,6 @@ ShadowCloseScreen (int i, ScreenPtr pScreen)
+     pScreen->CloseScreen = pPriv->CloseScreen;
+     pScreen->CopyWindow = pPriv->CopyWindow;
+     pScreen->CreateGC = pPriv->CreateGC;
+-    pScreen->ModifyPixmapHeader = pPriv->ModifyPixmapHeader;
+     pScrn->EnterVT = pPriv->EnterVT;
+     pScrn->LeaveVT = pPriv->LeaveVT;
+-- 
+1.7.3.4
+
index 34719773173a9e0e7ef13c50d80d073e91c612d1..993af2f2ede57a141ccb82c6d07e6b3b1f6ecf73 100755 (executable)
@@ -1,7 +1,7 @@
 #!/sbin/runscript
-# Copyright 1999-2004 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License, v2
-# $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/files/xdm.initd,v 1.1 2010/04/13 10:07:39 scarabeus Exp $
+# $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/files/xdm.initd-3,v 1.2 2011/01/22 15:30:07 lxnay Exp $
 
 # This is here to serve as a note to myself, and future developers.
 #
@@ -90,6 +90,11 @@ setup_dm() {
                        EXE=/usr/bin/gpe-dm
                        PIDFILE=/var/run/gpe-dm.pid
                        ;;
+               lxdm)
+                       EXE=/usr/sbin/lxdm-binary
+                       PIDFILE=/var/run/lxdm.pid
+                       START_STOP_ARGS="--background"
+                       ;;
                *)
                        # first find out if there is such executable
                        EXE="$(which ${MY_XDM} 2>/dev/null)"
@@ -141,6 +146,7 @@ start() {
        save_options "service" "${EXE}"
        save_options "name"    "${NAME}"
        save_options "pidfile" "${PIDFILE}"
+       save_options "start_stop_args" "${START_STOP_ARGS}"
 
        if [ -n "${CHECKVT-y}" ] ; then
                if vtstatic "${CHECKVT:-7}" ; then
index b059c99d778d1d050d349d885841f75ee66cc1c1..64650f6b59c2a1348aff67df913ff14667c3d068 100644 (file)
@@ -1,19 +1,19 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/xorg-server-1.9.0.ebuild,v 1.1 2010/09/12 18:41:36 chithanh Exp $
+# $Header: $
 
-EAPI=3
-inherit xorg-2 multilib versionator
+EAPI=4
 
+XORG_DOC=doc
+inherit xorg-2 multilib versionator
 EGIT_REPO_URI="git://anongit.freedesktop.org/git/xorg/xserver"
 
-OPENGL_DIR="xorg-x11"
-
 DESCRIPTION="X.Org X servers"
 KEYWORDS=""
 
 IUSE_SERVERS="dmx kdrive xorg"
-IUSE="${IUSE_SERVERS} doc ipv6 minimal nptl tslib +udev"
+IUSE="${IUSE_SERVERS} ipv6 minimal nptl tslib +udev"
+
 RDEPEND=">=app-admin/eselect-opengl-1.0.8
        dev-libs/openssl
        media-libs/freetype
@@ -26,7 +26,7 @@ RDEPEND=">=app-admin/eselect-opengl-1.0.8
        >=x11-libs/libXdmcp-1.0.2
        >=x11-libs/libXfont-1.4.2
        >=x11-libs/libxkbfile-1.0.4
-       >=x11-libs/pixman-0.15.20
+       >=x11-libs/pixman-0.21.8
        >=x11-libs/xtrans-1.2.2
        >=x11-misc/xbitmaps-1.0.1
        >=x11-misc/xkeyboard-config-1.4
@@ -35,12 +35,12 @@ RDEPEND=">=app-admin/eselect-opengl-1.0.8
                >=x11-libs/libdmx-1.0.99.1
                >=x11-libs/libX11-1.1.5
                >=x11-libs/libXaw-1.0.4
-               >=x11-libs/libXext-1.0.5
+               >=x11-libs/libXext-1.0.99.4
                >=x11-libs/libXfixes-4.0.3
                >=x11-libs/libXi-1.2.99.1
                >=x11-libs/libXmu-1.0.3
                >=x11-libs/libXres-1.0.3
-               >=x11-libs/libXtst-1.0.3
+               >=x11-libs/libXtst-1.0.99.2
        )
        kdrive? (
                >=x11-libs/libXext-1.0.5
@@ -52,7 +52,8 @@ RDEPEND=">=app-admin/eselect-opengl-1.0.8
                >=media-libs/mesa-7.8_rc[nptl=]
        )
        tslib? ( >=x11-libs/tslib-1.0 x11-proto/xcalibrateproto )
-       udev? ( >=sys-fs/udev-150 )"
+       udev? ( >=sys-fs/udev-150 )
+       >=x11-apps/xinit-1.3"
 
 DEPEND="${RDEPEND}
        sys-devel/flex
@@ -72,17 +73,13 @@ DEPEND="${RDEPEND}
        >=x11-proto/trapproto-3.4.3
        >=x11-proto/videoproto-2.2.2
        >=x11-proto/xcmiscproto-1.2.0
-       >=x11-proto/xextproto-7.0.99.3
+       >=x11-proto/xextproto-7.1.99
        >=x11-proto/xf86dgaproto-2.0.99.1
        >=x11-proto/xf86rushproto-1.1.2
        >=x11-proto/xf86vidmodeproto-2.2.99.1
        >=x11-proto/xineramaproto-1.1.3
        >=x11-proto/xproto-7.0.17
        dmx? ( >=x11-proto/dmxproto-2.2.99.1 )
-       doc? (
-               >=app-doc/doxygen-1.6.1
-               app-text/xmlto
-       )
        !minimal? (
                >=x11-proto/xf86driproto-2.1.0
                >=x11-proto/dri2proto-2.3
@@ -90,36 +87,42 @@ DEPEND="${RDEPEND}
        )"
 
 PDEPEND="
-       >=x11-apps/xinit-1.2.1-r1
        xorg? ( x11-base/xorg-drivers )"
 
-EPATCH_FORCE="yes"
-EPATCH_SUFFIX="patch"
+REQUIRED_USE="!minimal? (
+               || ( ${IUSE_SERVERS} )
+       )"
 
-# These have been sent upstream
 #UPSTREAMED_PATCHES=(
 #      "${WORKDIR}/patches/"
-#      )
+#)
 
 PATCHES=(
        "${UPSTREAMED_PATCHES[@]}"
        "${FILESDIR}"/${PN}-disable-acpi.patch
        "${FILESDIR}"/${PN}-1.9-nouveau-default.patch
-       "${FILESDIR}"/1.7.5.902-fix-tslib-1.0-check.patch
-       )
+       "${FILESDIR}"/0001-xaa-Free-the-scratch-pixmap-header-before-freeing-th.patch
+       "${FILESDIR}"/0002-Remove-the-cacheing-of-the-last-scratch-PixmapRec.patch
+       "${FILESDIR}"/0003-shm-Replace-open-coded-version-of-GetScratchPixmapHe.patch
+       "${FILESDIR}"/0004-shadow-Remove-unused-ModifyPixmapHeader-wrapping.patch
+)
+
+pkg_pretend() {
+       # older gcc is not supported
+       [[ $(gcc-major-version) -lt 4 ]] && \
+               die "Sorry, but gcc earlier than 4.0 wont work for xorg-server."
+}
 
 pkg_setup() {
        xorg-2_pkg_setup
 
-       use minimal || ensure_a_server_is_building
-
        # localstatedir is used for the log location; we need to override the default
        #       from ebuild.sh
        # sysconfdir is used for the xorg.conf location; same applies
        #       --enable-install-setuid needed because sparcs default off
        # NOTE: fop is used for doc generating ; and i have no idea if gentoo
        #       package it somewhere
-       CONFIGURE_OPTIONS="
+       XORG_CONFIGURE_OPTIONS=(
                $(use_enable ipv6)
                $(use_enable dmx)
                $(use_enable kdrive)
@@ -150,11 +153,10 @@ pkg_setup() {
                --without-dtrace
                --without-fop
                --with-os-vendor=Gentoo
-               ${conf_opts}"
+       )
 
        # Xorg-server requires includes from OS mesa which are not visible for
        # users of binary drivers.
-       # Due to the limitations of CONFIGURE_OPTIONS, we have to export this
        mkdir -p "${T}/mesa-symlinks/GL"
        for i in gl glx glxmd glxproto glxtokens; do
                ln -s "${EROOT}usr/$(get_libdir)/opengl/xorg-x11/include/$i.h" "${T}/mesa-symlinks/GL/$i.h" || die
@@ -163,28 +165,6 @@ pkg_setup() {
                ln -s "${EROOT}usr/$(get_libdir)/opengl/global/include/$i.h" "${T}/mesa-symlinks/GL/$i.h" || die
        done
        append-cppflags "-I${T}/mesa-symlinks"
-
-       # (#121394) Causes window corruption
-       filter-flags -fweb
-
-       # Incompatible with GCC 3.x SSP on x86, bug #244352
-       if use x86 ; then
-               if [[ $(gcc-major-version) -lt 4 ]]; then
-                       filter-flags -fstack-protector
-               fi
-       fi
-
-       # Incompatible with GCC 3.x CPP, bug #314615
-       if [[ $(gcc-major-version) -lt 4 ]]; then
-               ewarn "GCC 3.x C preprocessor may cause build failures. Use GCC 4.x"
-               ewarn "or set CPP=cpp-4.3.4 (replace with the actual installed version)"
-       fi
-
-       # detect if we should inform user about ebuild breakage
-       if ! has_version "x11-base/xorg-server" ||
-                       has_version "<x11-base/xorg-server-$(get_version_component_range 1-2)"; then
-               INFO="yes"
-       fi
 }
 
 src_install() {
@@ -196,26 +176,25 @@ src_install() {
 
        if ! use minimal &&     use xorg; then
                # Install xorg.conf.example into docs
-               dodoc hw/xfree86/xorg.conf.example \
-                       || die "couldn't install xorg.conf.example"
+               dodoc "${AUTOTOOLS_BUILD_DIR}"/hw/xfree86/xorg.conf.example
        fi
 
-       newinitd "${FILESDIR}"/xdm-setup.initd-1 xdm-setup || die
-       newinitd "${FILESDIR}"/xdm.initd-3 xdm || die
-       newconfd "${FILESDIR}"/xdm.confd-3 xdm || die
+       newinitd "${FILESDIR}"/xdm-setup.initd-1 xdm-setup
+       newinitd "${FILESDIR}"/xdm.initd-3 xdm
+       newconfd "${FILESDIR}"/xdm.confd-3 xdm
 
        # install the @x11-module-rebuild set for Portage
        insinto /usr/share/portage/config/sets
-       newins "${FILESDIR}"/xorg-sets.conf xorg.conf || die
+       newins "${FILESDIR}"/xorg-sets.conf xorg.conf
 }
 
 pkg_postinst() {
        # sets up libGL and DRI2 symlinks if needed (ie, on a fresh install)
-       eselect opengl set --use-old xorg-x11
+       eselect opengl set xorg-x11 --use-old
 
-       if [[ ${INFO} = yes ]]; then
-               einfo "You should consider reading upgrade guide for this release:"
-               einfo " http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-$(get_version_component_range 1-2)-upgrade-guide.xml"
+       if [[ ${PV} != 9999 && $(get_version_component_range 2 ${REPLACING_VERSIONS}) != $(get_version_component_range 2 ${PV}) ]]; then
+               elog "You should consider reading upgrade guide for this release:"
+               elog "  http://www.gentoo.org/proj/en/desktop/x/x11/xorg-server-$(get_version_component_range 1-2)-upgrade-guide.xml"
                echo
                ewarn "You must rebuild all drivers if upgrading from <xorg-server-$(get_version_component_range 1-2)"
                ewarn "because the ABI changed. If you cannot start X because"
@@ -225,26 +204,26 @@ pkg_postinst() {
                ewarn "You can generate a list of all installed packages in the x11-drivers"
                ewarn "category using this command:"
                ewarn " emerge portage-utils; qlist -I -C x11-drivers/"
+               ewarn "or using sets from portage-2.2:"
+               ewarn " emerge @x11-module-rebuild"
        fi
 }
 
 pkg_postrm() {
        # Get rid of module dir to ensure opengl-update works properly
-       if ! has_version x11-base/xorg-server; then
-               if [[ -e ${ROOT}/usr/$(get_libdir)/xorg/modules ]]; then
-                       rm -rf "${ROOT}"/usr/$(get_libdir)/xorg/modules
-               fi
+       if [[ -z ${REPLACED_BY_VERSION} && -e ${ROOT}/usr/$(get_libdir)/xorg/modules ]]; then
+               rm -rf "${ROOT}"/usr/$(get_libdir)/xorg/modules
        fi
 }
 
 dynamic_libgl_install() {
        # next section is to setup the dynamic libGL stuff
        ebegin "Moving GL files for dynamic switching"
-               dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
+               dodir /usr/$(get_libdir)/opengl/xorg-x11/extensions
                local x=""
                for x in "${D}"/usr/$(get_libdir)/xorg/modules/extensions/lib{glx,dri,dri2}*; do
                        if [ -f ${x} -o -L ${x} ]; then
-                               mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
+                               mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/xorg-x11/extensions
                        fi
                done
        eend 0
@@ -258,12 +237,3 @@ server_based_install() {
                        "${D}"/usr/share/man/man1/Xserver.1x
        fi
 }
-
-ensure_a_server_is_building() {
-       for server in ${IUSE_SERVERS}; do
-               use ${server} && return;
-       done
-       eerror "You need to specify at least one server to build."
-       eerror "Valid servers are: ${IUSE_SERVERS}."
-       die "No servers were specified to build."
-}