Bug #6924: Restore the ABI for DrawableRec and ColormapRec to the state
they were in prior to the fix for #6438. Based on a patch from Andy Ritger.
This commit is contained in:
parent
cc3b882bd1
commit
bc0c56c407
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2006-05-22 Adam Jackson <ajax@freedesktop.org>
|
||||||
|
|
||||||
|
* dix/colormap.c:
|
||||||
|
* dix/pixmap.c:
|
||||||
|
* dix/window.c:
|
||||||
|
* include/colormapst.h:
|
||||||
|
* include/pixmapstr.h:
|
||||||
|
Bug #6924: Restore the ABI for DrawableRec and ColormapRec to
|
||||||
|
the state they were in prior to the fix for #6438. Based on a
|
||||||
|
patch from Andy Ritger.
|
||||||
|
|
||||||
2006-05-19 Alan Coopersmith <alan.coopersmith@sun.com>
|
2006-05-19 Alan Coopersmith <alan.coopersmith@sun.com>
|
||||||
|
|
||||||
* hw/xfree86/scanpci/pci.ids:
|
* hw/xfree86/scanpci/pci.ids:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $XdotOrg: xserver/xorg/dix/colormap.c,v 1.11 2005/09/05 07:40:50 daniels Exp $ */
|
/* $XdotOrg: xserver/xorg/dix/colormap.c,v 1.12 2006/02/15 20:44:12 ajax Exp $ */
|
||||||
/* $XFree86: xc/programs/Xserver/dix/colormap.c,v 3.11 2003/11/03 05:10:59 tsi Exp $ */
|
/* $XFree86: xc/programs/Xserver/dix/colormap.c,v 3.11 2003/11/03 05:10:59 tsi Exp $ */
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
|
|
||||||
|
@ -280,6 +280,13 @@ CreateColormap (Colormap mid, ScreenPtr pScreen, VisualPtr pVisual,
|
||||||
pmap = (ColormapPtr) xalloc(sizebytes);
|
pmap = (ColormapPtr) xalloc(sizebytes);
|
||||||
if (!pmap)
|
if (!pmap)
|
||||||
return (BadAlloc);
|
return (BadAlloc);
|
||||||
|
#if defined(_XSERVER64)
|
||||||
|
pmap->pad0 = 0;
|
||||||
|
pmap->pad1 = 0;
|
||||||
|
#if (X_BYTE_ORDER == X_LITTLE_ENDIAN)
|
||||||
|
pmap->pad2 = 0;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
pmap->red = (EntryPtr)((char *)pmap + sizeof(ColormapRec));
|
pmap->red = (EntryPtr)((char *)pmap + sizeof(ColormapRec));
|
||||||
sizebytes = size * sizeof(Entry);
|
sizebytes = size * sizeof(Entry);
|
||||||
pmap->clientPixelsRed = (Pixel **)((char *)pmap->red + sizebytes);
|
pmap->clientPixelsRed = (Pixel **)((char *)pmap->red + sizebytes);
|
||||||
|
|
|
@ -141,5 +141,13 @@ AllocatePixmap(ScreenPtr pScreen, int pixDataSize)
|
||||||
#else
|
#else
|
||||||
pPixmap = (PixmapPtr)xalloc(sizeof(PixmapRec) + pixDataSize);
|
pPixmap = (PixmapPtr)xalloc(sizeof(PixmapRec) + pixDataSize);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _XSERVER64
|
||||||
|
if (pPixmap) {
|
||||||
|
pPixmap->drawable.pad0 = 0;
|
||||||
|
pPixmap->drawable.pad1 = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return pPixmap;
|
return pPixmap;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $XdotOrg: xserver/xorg/dix/window.c,v 1.16 2006/03/29 17:51:54 deronj Exp $ */
|
/* $XdotOrg: xserver/xorg/dix/window.c,v 1.17 2006/03/31 17:39:35 sandmann Exp $ */
|
||||||
/* $Xorg: window.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
|
/* $Xorg: window.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -384,6 +384,10 @@ AllocateWindow(ScreenPtr pScreen)
|
||||||
else
|
else
|
||||||
ppriv->ptr = (pointer)NULL;
|
ppriv->ptr = (pointer)NULL;
|
||||||
}
|
}
|
||||||
|
#if _XSERVER64
|
||||||
|
pWin->drawable.pad0 = 0;
|
||||||
|
pWin->drawable.pad1 = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return pWin;
|
return pWin;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,8 @@ SOFTWARE.
|
||||||
#ifndef CMAPSTRUCT_H
|
#ifndef CMAPSTRUCT_H
|
||||||
#define CMAPSTRUCT_H 1
|
#define CMAPSTRUCT_H 1
|
||||||
|
|
||||||
|
#include <X11/Xarch.h>
|
||||||
|
|
||||||
#include "colormap.h"
|
#include "colormap.h"
|
||||||
#include "screenint.h"
|
#include "screenint.h"
|
||||||
|
|
||||||
|
@ -89,15 +91,26 @@ typedef struct _CMEntry
|
||||||
Bool fShared;
|
Bool fShared;
|
||||||
} Entry;
|
} Entry;
|
||||||
|
|
||||||
/* COLORMAPs can be used for either Direct or Pseudo color. PseudoColor
|
/*
|
||||||
|
* COLORMAPs can be used for either Direct or Pseudo color. PseudoColor
|
||||||
* only needs one cell table, we arbitrarily pick red. We keep track
|
* only needs one cell table, we arbitrarily pick red. We keep track
|
||||||
* of that table with freeRed, numPixelsRed, and clientPixelsRed */
|
* of that table with freeRed, numPixelsRed, and clientPixelsRed
|
||||||
|
*
|
||||||
|
* The padN variables are unfortunate ABI BC. See fdo bug #6924.
|
||||||
|
*/
|
||||||
|
|
||||||
typedef struct _ColormapRec
|
typedef struct _ColormapRec
|
||||||
{
|
{
|
||||||
VisualPtr pVisual;
|
VisualPtr pVisual;
|
||||||
short class; /* PseudoColor or DirectColor */
|
short class; /* PseudoColor or DirectColor */
|
||||||
|
#if defined(_XSERVER64)
|
||||||
|
short pad0;
|
||||||
|
XID pad1;
|
||||||
|
#endif
|
||||||
XID mid; /* client's name for colormap */
|
XID mid; /* client's name for colormap */
|
||||||
|
#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN)
|
||||||
|
XID pad2;
|
||||||
|
#endif
|
||||||
ScreenPtr pScreen; /* screen map is associated with */
|
ScreenPtr pScreen; /* screen map is associated with */
|
||||||
short flags; /* 1 = IsDefault
|
short flags; /* 1 = IsDefault
|
||||||
* 2 = AllAllocated */
|
* 2 = AllAllocated */
|
||||||
|
|
|
@ -49,16 +49,27 @@ SOFTWARE.
|
||||||
|
|
||||||
#ifndef PIXMAPSTRUCT_H
|
#ifndef PIXMAPSTRUCT_H
|
||||||
#define PIXMAPSTRUCT_H
|
#define PIXMAPSTRUCT_H
|
||||||
|
#include <X11/Xarch.h>
|
||||||
#include "pixmap.h"
|
#include "pixmap.h"
|
||||||
#include "screenint.h"
|
#include "screenint.h"
|
||||||
#include "regionstr.h"
|
#include "regionstr.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The padN members are unfortunate ABI BC. See fdo bug #6924.
|
||||||
|
*/
|
||||||
|
|
||||||
typedef struct _Drawable {
|
typedef struct _Drawable {
|
||||||
unsigned char type; /* DRAWABLE_<type> */
|
unsigned char type; /* DRAWABLE_<type> */
|
||||||
unsigned char class; /* specific to type */
|
unsigned char class; /* specific to type */
|
||||||
unsigned char depth;
|
unsigned char depth;
|
||||||
unsigned char bitsPerPixel;
|
unsigned char bitsPerPixel;
|
||||||
|
#if defined(_XSERVER64)
|
||||||
|
XID pad0;
|
||||||
|
#endif
|
||||||
XID id; /* resource id */
|
XID id; /* resource id */
|
||||||
|
#if defined(_XSERVER64)
|
||||||
|
XID pad1;
|
||||||
|
#endif
|
||||||
short x; /* window: screen absolute, pixmap: 0 */
|
short x; /* window: screen absolute, pixmap: 0 */
|
||||||
short y; /* window: screen absolute, pixmap: 0 */
|
short y; /* window: screen absolute, pixmap: 0 */
|
||||||
unsigned short width;
|
unsigned short width;
|
||||||
|
|
Loading…
Reference in New Issue