rpms/xorg-x11-server/F-13 xorg-x11-server.spec, 1.519, 1.520 xserver-1.8.0-glxdri2-resource-conversion.patch, 1.2, 1.3

Owen Taylor otaylor at fedoraproject.org
Fri Apr 30 23:01:27 UTC 2010


Author: otaylor

Update of /cvs/extras/rpms/xorg-x11-server/F-13
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv17534

Modified Files:
	xorg-x11-server.spec 
	xserver-1.8.0-glxdri2-resource-conversion.patch 
Log Message:
* Fri Apr 30 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-10
- Updated version of redirected pixmaps patch
  (Again from https://bugs.freedesktop.org/show_bug.cgi?id=27767)



Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/extras/rpms/xorg-x11-server/F-13/xorg-x11-server.spec,v
retrieving revision 1.519
retrieving revision 1.520
diff -u -p -r1.519 -r1.520
--- xorg-x11-server.spec	30 Apr 2010 17:52:02 -0000	1.519
+++ xorg-x11-server.spec	30 Apr 2010 23:01:26 -0000	1.520
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.8.0
-Release:   9%{?gitdate:.%{gitdate}}%{dist}
+Release:   10%{?gitdate:.%{gitdate}}%{dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -532,6 +532,10 @@ rm -rf $RPM_BUILD_ROOT
 %{xserver_source_dir}
 
 %changelog
+* Fri Apr 30 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-10
+- Updated version of redirected pixmaps patch
+  (Again from https://bugs.freedesktop.org/show_bug.cgi?id=27767)
+
 * Fri Apr 30 2010 Owen Taylor <otaylor at redhat.com> - 1.8.0-9
 - Add patches cherry-picked from master for DRI2 VBlank synchronization
   (related to RH #577512, though not a complete fix without changes

xserver-1.8.0-glxdri2-resource-conversion.patch:
 glx/glxcmds.c             |   62 ++++++++-----
 glx/glxdri.c              |    8 +
 glx/glxdri2.c             |   17 +--
 glx/glxdriswrast.c        |    8 +
 glx/glxext.c              |   11 ++
 glx/glxscreens.c          |   28 ------
 glx/glxscreens.h          |    7 -
 hw/xfree86/dri2/dri2.c    |  214 +++++++++++++++++++++++++++-------------------
 hw/xfree86/dri2/dri2.h    |    3 
 hw/xfree86/dri2/dri2ext.c |   24 -----
 include/list.h            |    7 +
 11 files changed, 209 insertions(+), 180 deletions(-)

Index: xserver-1.8.0-glxdri2-resource-conversion.patch
===================================================================
RCS file: /cvs/extras/rpms/xorg-x11-server/F-13/xserver-1.8.0-glxdri2-resource-conversion.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- xserver-1.8.0-glxdri2-resource-conversion.patch	30 Apr 2010 17:52:02 -0000	1.2
+++ xserver-1.8.0-glxdri2-resource-conversion.patch	30 Apr 2010 23:01:26 -0000	1.3
@@ -1,7 +1,7 @@
-From b75609ab65bf2aeee553435e43072d7f859162f7 Mon Sep 17 00:00:00 2001
+From d4bc0d6eab1390b7e94280b7473291be7bcf7062 Mon Sep 17 00:00:00 2001
 From: Owen Taylor <otaylor at redhat.com>
 Date: Fri, 30 Apr 2010 13:17:18 -0400
-Subject: [PATCH 2/2] Merge fixes for DRI drawable handling from master
+Subject: [PATCH] Merge fixes for DRI drawable handling from master
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -85,18 +85,18 @@ destroyed or the client exits.
 Signed-off-by: Kristian Høgsberg <krh at bitplanet.net>
 Signed-off-by: Keith Packard <keithp at keithp.com>
 ---
- glx/glxcmds.c             |   62 ++++++++-----
+ glx/glxcmds.c             |   62 +++++++++-----
  glx/glxdri.c              |    8 +-
  glx/glxdri2.c             |   17 ++--
  glx/glxdriswrast.c        |    8 +-
  glx/glxext.c              |   11 +++
- glx/glxscreens.c          |   40 +--------
+ glx/glxscreens.c          |   28 ------
  glx/glxscreens.h          |    7 +-
- hw/xfree86/dri2/dri2.c    |  221 +++++++++++++++++++++++++--------------------
+ hw/xfree86/dri2/dri2.c    |  214 +++++++++++++++++++++++++++------------------
  hw/xfree86/dri2/dri2.h    |    3 +-
  hw/xfree86/dri2/dri2ext.c |   24 +-----
  include/list.h            |    6 ++
- 11 files changed, 204 insertions(+), 203 deletions(-)
+ 11 files changed, 209 insertions(+), 179 deletions(-)
 
 diff --git a/glx/glxcmds.c b/glx/glxcmds.c
 index 77afbf4..31a7d32 100644
@@ -255,7 +255,7 @@ index 77afbf4..31a7d32 100644
  
  int __glXDisp_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
 diff --git a/glx/glxdri.c b/glx/glxdri.c
-index 21e44d1..e4870c3 100644
+index 30b820c..51b602d 100644
 --- a/glx/glxdri.c
 +++ b/glx/glxdri.c
 @@ -682,10 +682,12 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen,
@@ -283,7 +283,7 @@ index 21e44d1..e4870c3 100644
  	return NULL;
      }
 diff --git a/glx/glxdri2.c b/glx/glxdri2.c
-index e791bf6..38b52bd 100644
+index bc37285..5bdeedb 100644
 --- a/glx/glxdri2.c
 +++ b/glx/glxdri2.c
 @@ -105,11 +105,6 @@ __glXDRIdrawableDestroy(__GLXdrawable *drawable)
@@ -331,7 +331,7 @@ index e791bf6..38b52bd 100644
  	    xfree(private);
  	    return NULL;
      }
-@@ -722,7 +719,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+@@ -725,7 +722,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
  		screen->core = (const __DRIcoreExtension *) extensions[i];
  	}
          if (strcmp(extensions[i]->name, __DRI_DRI2) == 0 &&
@@ -391,7 +391,7 @@ index 59bcfbe..89e58b0 100644
  	if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
  	    int i;
 diff --git a/glx/glxscreens.c b/glx/glxscreens.c
-index 58d8ee0..da11834 100644
+index 58d8ee0..b75aea6 100644
 --- a/glx/glxscreens.c
 +++ b/glx/glxscreens.c
 @@ -215,7 +215,6 @@ glxCloseScreen (int index, ScreenPtr pScreen)
@@ -443,40 +443,6 @@ index 58d8ee0..da11834 100644
  
      i = 0;
      for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next) {
-@@ -427,31 +399,23 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen)
-      * an existing, appropriate visual.
-      */
-     for (config = pGlxScreen->fbconfigs; config != NULL; config = config->next) {
--	int depth;
--
- 	VisualPtr visual;
- 
- 	if (config->visualID != 0)
- 	    continue;
- 
--	/* Only count RGB bits and not alpha, as we're not trying to create
--	 * visuals for compositing (that's what the 32-bit composite visual
--	 * set up above is for.
--	 */
--	depth = config->redBits + config->greenBits + config->blueBits;
--
- 	/* Make sure that our FBconfig's depth can actually be displayed
- 	 * (corresponds to an existing visual).
- 	 */
- 	for (i = 0; i < pScreen->numVisuals; i++) {
--	    if (depth == pScreen->visuals[i].nplanes)
-+	    if (config->rgbBits == pScreen->visuals[i].nplanes)
- 		break;
- 	}
- 	if (i == pScreen->numVisuals)
- 	    continue;
- 
- 	/* Create a new X visual for our FBconfig. */
--	visual = AddScreenVisuals(pScreen, 1, depth);
-+	visual = AddScreenVisuals(pScreen, 1, config->rgbBits);
- 	if (visual == NULL)
- 	    continue;
- 
 diff --git a/glx/glxscreens.h b/glx/glxscreens.h
 index bff4363..861e03c 100644
 --- a/glx/glxscreens.h
@@ -505,7 +471,7 @@ index bff4363..861e03c 100644
  
  
 diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
-index 2bdb733..178116a 100644
+index 2bdb733..3fd2326 100644
 --- a/hw/xfree86/dri2/dri2.c
 +++ b/hw/xfree86/dri2/dri2.c
 @@ -37,6 +37,7 @@
@@ -516,17 +482,17 @@ index 2bdb733..178116a 100644
  #include "scrnintstr.h"
  #include "windowstr.h"
  #include "dixstruct.h"
-@@ -48,15 +49,16 @@
+@@ -48,15 +49,20 @@
  CARD8 dri2_major; /* version of DRI2 supported by DDX */
  CARD8 dri2_minor;
  
 -static int dri2ScreenPrivateKeyIndex;
 +static int           dri2ScreenPrivateKeyIndex;
  static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKeyIndex;
--static int dri2WindowPrivateKeyIndex;
--static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKeyIndex;
--static int dri2PixmapPrivateKeyIndex;
--static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKeyIndex;
+ static int dri2WindowPrivateKeyIndex;
+ static DevPrivateKey dri2WindowPrivateKey = &dri2WindowPrivateKeyIndex;
+ static int dri2PixmapPrivateKeyIndex;
+ static DevPrivateKey dri2PixmapPrivateKey = &dri2PixmapPrivateKeyIndex;
 +static RESTYPE       dri2DrawableRes;
 +
 +typedef struct _DRI2Screen *DRI2ScreenPtr;
@@ -539,7 +505,7 @@ index 2bdb733..178116a 100644
      int			 width;
      int			 height;
      DRI2BufferPtr	*buffers;
-@@ -73,9 +75,9 @@ typedef struct _DRI2Drawable {
+@@ -73,9 +79,9 @@ typedef struct _DRI2Drawable {
      int			 swap_limit; /* for N-buffering */
  } DRI2DrawableRec, *DRI2DrawablePtr;
  
@@ -551,32 +517,30 @@ index 2bdb733..178116a 100644
      unsigned int		 numDrivers;
      const char			**driverNames;
      const char			*deviceName;
-@@ -101,45 +103,30 @@ DRI2GetScreen(ScreenPtr pScreen)
+@@ -101,45 +107,33 @@ DRI2GetScreen(ScreenPtr pScreen)
  static DRI2DrawablePtr
  DRI2GetDrawable(DrawablePtr pDraw)
  {
 -    WindowPtr		  pWin;
 -    PixmapPtr		  pPixmap;
-+    DRI2DrawablePtr pPriv;
-+    int rc;
++    WindowPtr pWin;
++    PixmapPtr pPixmap;
  
 -    if (!pDraw)
-+    rc = dixLookupResourceByType((pointer *) &pPriv, pDraw->id,
-+				 dri2DrawableRes, NULL, DixReadAccess);
-+    if (rc != Success)
- 	return NULL;
- 
+-	return NULL;
+-
 -    if (pDraw->type == DRAWABLE_WINDOW)
 -    {
--	pWin = (WindowPtr) pDraw;
--	return dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey);
++    if (pDraw->type == DRAWABLE_WINDOW) {
+ 	pWin = (WindowPtr) pDraw;
+ 	return dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey);
 -    }
 -    else
 -    {
--	pPixmap = (PixmapPtr) pDraw;
--	return dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey);
--    }
-+    return pPriv;
++    } else {
+ 	pPixmap = (PixmapPtr) pDraw;
+ 	return dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey);
+     }
  }
  
 -int
@@ -589,14 +553,16 @@ index 2bdb733..178116a 100644
 -    PixmapPtr	    pPixmap;
      DRI2DrawablePtr pPriv;
      CARD64          ust;
- 
+-
 -    pPriv = DRI2GetDrawable(pDraw);
 -    if (pPriv != NULL)
 -    {
 -	pPriv->refCount++;
 -	return Success;
 -    }
--
++    WindowPtr pWin;
++    PixmapPtr pPixmap;
+ 
      pPriv = xalloc(sizeof *pPriv);
      if (pPriv == NULL)
 -	return BadAlloc;
@@ -608,7 +574,7 @@ index 2bdb733..178116a 100644
      pPriv->width = pDraw->width;
      pPriv->height = pDraw->height;
      pPriv->buffers = NULL;
-@@ -157,44 +144,116 @@ DRI2CreateDrawable(DrawablePtr pDraw)
+@@ -157,44 +151,130 @@ DRI2CreateDrawable(DrawablePtr pDraw)
      pPriv->swap_limit = 1; /* default to double buffering */
      pPriv->last_swap_msc = 0;
      pPriv->last_swap_ust = 0;
@@ -616,13 +582,17 @@ index 2bdb733..178116a 100644
  
 -    if (pDraw->type == DRAWABLE_WINDOW)
 -    {
--	pWin = (WindowPtr) pDraw;
--	dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, pPriv);
++    if (pDraw->type == DRAWABLE_WINDOW) {
+ 	pWin = (WindowPtr) pDraw;
+ 	dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, pPriv);
 -    }
 -    else
 -    {
--	pPixmap = (PixmapPtr) pDraw;
--	dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, pPriv);
++    } else {
+ 	pPixmap = (PixmapPtr) pDraw;
+ 	dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, pPriv);
+     }
+ 
 +    return pPriv;
 +}
 +
@@ -633,16 +603,14 @@ index 2bdb733..178116a 100644
 +} DRI2DrawableRefRec, *DRI2DrawableRefPtr;
 +
 +static DRI2DrawableRefPtr
-+DRI2LookupDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id)
++DRI2LookupDrawableRef(DRI2DrawablePtr pPriv, XID id)
 +{
 +    DRI2DrawableRefPtr ref;
 +
 +    list_for_each_entry(ref, &pPriv->reference_list, link) {
-+	if (id != None && ref->id == id)
-+	    return ref;
-+	if (dri2_id != None && ref->dri2_id == dri2_id)
++	if (ref->id == id)
 +	    return ref;
-     }
++    }
 +    
 +    return NULL;
 +}
@@ -658,14 +626,14 @@ index 2bdb733..178116a 100644
 +	
 +    if (!AddResource(dri2_id, dri2DrawableRes, pPriv))
 +	return BadAlloc;
-+    if (!DRI2LookupDrawableRef(pPriv, id, None))
++    if (!DRI2LookupDrawableRef(pPriv, id))
 +	if (!AddResource(id, dri2DrawableRes, pPriv))
 +	    return BadAlloc;
 +
 +    ref->id = id;
 +    ref->dri2_id = dri2_id; 
 +    list_add(&ref->link, &pPriv->reference_list);
- 
++
      return Success;
  }
  
@@ -698,14 +666,14 @@ index 2bdb733..178116a 100644
  
 -    if (pDraw->type == DRAWABLE_WINDOW)
 -    {
--	pWin = (WindowPtr) pDraw;
--	dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, NULL);
 +static int DRI2DrawableGone(pointer p, XID id)
 +{
 +    DRI2DrawablePtr pPriv = p;
 +    DRI2ScreenPtr   ds = pPriv->dri2_screen;
 +    DRI2DrawableRefPtr ref, next;
-+    DrawablePtr     root;
++    WindowPtr pWin;
++    PixmapPtr pPixmap;
++    DrawablePtr pDraw;
 +    int i;
 +
 +    list_for_each_entry_safe(ref, next, &pPriv->reference_list, link) {
@@ -713,7 +681,7 @@ index 2bdb733..178116a 100644
 +	    list_del(&ref->link);
 +	    /* If this was the last ref under this X drawable XID,
 +	     * unregister the X drawable resource. */
-+	    if (!DRI2LookupDrawableRef(pPriv, ref->id, None))
++	    if (!DRI2LookupDrawableRef(pPriv, ref->id))
 +		FreeResourceByType(ref->id, dri2DrawableRes, TRUE);
 +	    break;
 +	}
@@ -723,24 +691,29 @@ index 2bdb733..178116a 100644
 +	    FreeResourceByType(ref->dri2_id, dri2DrawableRes, TRUE);
 +	    free(ref);
 +	}
-     }
--    else
--    {
--	pPixmap = (PixmapPtr) pDraw;
--	dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL);
++    }
 +
 +    if (!list_is_empty(&pPriv->reference_list))
 +	return Success;
 +
-+    ErrorF("freeing dri2 drawable\n");
++    pDraw = pPriv->drawable;
++    if (pDraw->type == DRAWABLE_WINDOW) {
+ 	pWin = (WindowPtr) pDraw;
+ 	dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, NULL);
+-    }
+-    else
+-    {
++    } else {
+ 	pPixmap = (PixmapPtr) pDraw;
+ 	dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL);
+     }
 +
-+    root = &WindowTable[ds->screen->myNum]->drawable;
 +    if (pPriv->buffers != NULL) {
 +	for (i = 0; i < pPriv->bufferCount; i++)
-+	    (*ds->DestroyBuffer)(root, pPriv->buffers[i]);
++	    (*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
 +
 +	xfree(pPriv->buffers);
-     }
++    }
 +
 +    xfree(pPriv);
 +
@@ -748,7 +721,7 @@ index 2bdb733..178116a 100644
  }
  
  static int
-@@ -505,10 +564,6 @@ DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame,
+@@ -505,10 +585,6 @@ DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame,
  
      pPriv->blockedClient = NULL;
      pPriv->blockedOnMsc = FALSE;
@@ -759,7 +732,7 @@ index 2bdb733..178116a 100644
  }
  
  static void
-@@ -576,13 +631,6 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
+@@ -576,13 +652,6 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
      pPriv->last_swap_ust = ust;
  
      DRI2WakeClient(client, pDraw, frame, tv_sec, tv_usec);
@@ -773,7 +746,7 @@ index 2bdb733..178116a 100644
  }
  
  Bool
-@@ -750,7 +798,7 @@ DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
+@@ -750,7 +819,7 @@ DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc,
      Bool ret;
  
      pPriv = DRI2GetDrawable(pDraw);
@@ -782,7 +755,7 @@ index 2bdb733..178116a 100644
  	return BadDrawable;
  
      /* Old DDX just completes immediately */
-@@ -774,7 +822,7 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
+@@ -774,7 +843,7 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
      DRI2DrawablePtr pPriv;
  
      pPriv = DRI2GetDrawable(pDraw);
@@ -791,7 +764,7 @@ index 2bdb733..178116a 100644
  	return BadDrawable;
  
      /* target_sbc == 0 means to block until all pending swaps are
-@@ -800,36 +848,6 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
+@@ -800,36 +869,6 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc,
      return Success;
  }
  
@@ -828,7 +801,7 @@ index 2bdb733..178116a 100644
  Bool
  DRI2HasSwapControl(ScreenPtr pScreen)
  {
-@@ -890,6 +908,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
+@@ -890,6 +929,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
      if (!ds)
  	return FALSE;
  
@@ -836,7 +809,7 @@ index 2bdb733..178116a 100644
      ds->fd	       = info->fd;
      ds->deviceName     = info->deviceName;
      dri2_major         = 1;
-@@ -961,6 +980,8 @@ DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin)
+@@ -961,6 +1001,8 @@ DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin)
  {
      static Bool setupDone = FALSE;
  



More information about the scm-commits mailing list