Unverified Commit 320a8cc0 authored by Mike Gabriel's avatar Mike Gabriel

Merge branch 'sunweaver-pr/silencing-compiler-warnings' into 3.6.x

Attributes GH PR #168: https://github.com/ArcticaProject/nx-libs/pull/168 Reviewed by: Vadim Troshchinskiy <vadim@qindel.com> -- Mon, 04 Jul 2016 11:15:20 -0700
parents 854f3fa4 b15fc63f
......@@ -97,4 +97,11 @@ in this Software without prior written authorization from The Open Group.
# define _X_DEPRECATED
#endif
/* requires xproto >= 7.0.22 */
#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)
#define _X_UNUSED __attribute__((__unused__))
#else
#define _X_UNUSED /* */
#endif
#endif /* _XFUNCPROTO_H_ */
......@@ -44,31 +44,31 @@ X Window System is a trademark of The Open Group.
#endif
#include "Xlibint.h"
int
XAddHost (
register Display *dpy,
XHostAddress *host)
static inline int
changehost (Display *dpy, XHostAddress *host, BYTE mode)
{
register xChangeHostsReq *req;
register int length;
xChangeHostsReq *req;
int length;
XServerInterpretedAddress *siAddr;
int addrlen;
if (host->family == FamilyServerInterpreted) {
siAddr = (XServerInterpretedAddress *) host->address;
addrlen = siAddr->typelength + siAddr->valuelength + 1;
} else {
addrlen = host->length;
}
length = (addrlen + 3) & ~0x3; /* round up */
siAddr = host->family == FamilyServerInterpreted ?
(XServerInterpretedAddress *)host->address : NULL;
addrlen = siAddr ?
siAddr->typelength + siAddr->valuelength + 1 : host->length;
length = (addrlen + 3) & ~0x3; /* round up */
LockDisplay(dpy);
GetReqExtra (ChangeHosts, length, req);
req->mode = HostInsert;
if (!req) {
UnlockDisplay(dpy);
return 0;
}
req->mode = mode;
req->hostFamily = host->family;
req->hostLength = addrlen;
if (host->family == FamilyServerInterpreted) {
if (siAddr) {
char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
memcpy(dest, siAddr->type, siAddr->typelength);
dest[siAddr->typelength] = '\0';
......@@ -82,40 +82,19 @@ XAddHost (
}
int
XRemoveHost (
XAddHost (
register Display *dpy,
XHostAddress *host)
{
register xChangeHostsReq *req;
register int length;
XServerInterpretedAddress *siAddr;
int addrlen;
if (host->family == FamilyServerInterpreted) {
siAddr = (XServerInterpretedAddress *) host->address;
addrlen = siAddr->typelength + siAddr->valuelength + 1;
} else {
addrlen = host->length;
}
length = (addrlen + 3) & ~0x3; /* round up */
return changehost(dpy, host, HostInsert);
}
LockDisplay(dpy);
GetReqExtra (ChangeHosts, length, req);
req->mode = HostDelete;
req->hostFamily = host->family;
req->hostLength = addrlen;
if (host->family == FamilyServerInterpreted) {
char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
memcpy(dest, siAddr->type, siAddr->typelength);
dest[siAddr->typelength] = '\0';
memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength);
} else {
memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen);
}
UnlockDisplay(dpy);
SyncHandle();
return 1;
int
XRemoveHost (
register Display *dpy,
XHostAddress *host)
{
return changehost(dpy, host, HostDelete);
}
int
......
......@@ -71,11 +71,7 @@ XHostAddress *XListHosts (
}
if (reply.nHosts) {
unsigned int l;
nbytes = reply.length << 2; /* compute number of bytes in reply */
l = (unsigned) (nbytes +
(reply.nHosts * sizeof(XHostAddress)) +
(reply.nHosts * sizeof(XServerInterpretedAddress)));
op = outbuf = (XHostAddress *)
Xmalloc((unsigned) (nbytes +
(reply.nHosts * sizeof(XHostAddress)) +
......
......@@ -666,7 +666,7 @@ register int i;
int width,nOldGroups,oldWidth,newTypes[XkbNumKbdGroups];
if ((!xkb) || (!XkbKeycodeInRange(xkb,key)) || (!xkb->map) ||
(!xkb->map->types)||(!newTypes)||((groups&XkbAllGroupsMask)==0)||
(!xkb->map->types)||((groups&XkbAllGroupsMask)==0)||
(nGroups>XkbNumKbdGroups)) {
return BadMatch;
}
......@@ -834,7 +834,7 @@ XkbUpdateKeyTypeVirtualMods( XkbDescPtr xkb,
XkbChangesPtr changes)
{
register unsigned int i;
unsigned int mask;
unsigned int mask = 0;
XkbVirtualModsToReal(xkb,type->mods.vmods,&mask);
type->mods.mask= type->mods.real_mods|mask;
......@@ -888,7 +888,7 @@ unsigned int checkState = 0;
XkbUpdateKeyTypeVirtualMods(xkb,&xkb->map->types[i],changed,changes);
}
if (changed&xkb->ctrls->internal.vmods) {
unsigned int newMask;
unsigned int newMask = 0;
XkbVirtualModsToReal(xkb,xkb->ctrls->internal.vmods,&newMask);
newMask|= xkb->ctrls->internal.real_mods;
if (xkb->ctrls->internal.mask!=newMask) {
......@@ -900,7 +900,7 @@ unsigned int checkState = 0;
}
}
if (changed&xkb->ctrls->ignore_lock.vmods) {
unsigned int newMask;
unsigned int newMask = 0;
XkbVirtualModsToReal(xkb,xkb->ctrls->ignore_lock.vmods,&newMask);
newMask|= xkb->ctrls->ignore_lock.real_mods;
if (xkb->ctrls->ignore_lock.mask!=newMask) {
......@@ -916,7 +916,7 @@ unsigned int checkState = 0;
map= &xkb->indicators->maps[0];
for (i=0;i<XkbNumIndicators;i++,map++) {
if (map->mods.vmods&changed) {
unsigned int newMask;
unsigned int newMask = 0;
XkbVirtualModsToReal(xkb,map->mods.vmods,&newMask);
newMask|= map->mods.real_mods;
if (newMask!=map->mods.mask) {
......@@ -933,7 +933,7 @@ unsigned int checkState = 0;
XkbCompatMapPtr compat;
compat= xkb->compat;
for (i=0;i<XkbNumKbdGroups;i++) {
unsigned int newMask;
unsigned int newMask = 0;
XkbVirtualModsToReal(xkb,compat->groups[i].vmods,&newMask);
newMask|= compat->groups[i].real_mods;
if (compat->groups[i].mask!=newMask) {
......
......@@ -111,7 +111,7 @@ _XimFilterPropertyNotify(
}
lock = True;
for( ii = 0; ii < nitems; ii++, atoms ) {
for( ii = 0; ii < nitems; ii++ ) {
if(XGetSelectionOwner (display, atoms[ii])) {
for( icb = callback_list; icb; icb = icb->next ) {
if( !icb->call && !icb->destroy ) {
......
......@@ -436,7 +436,7 @@ _XimXRead(Xim im, XPointer recv_buf, int buf_len, int *ret_len)
{
XEvent *ev;
XEvent event;
int len;
int len = 0;
XSpecRec *spec = (XSpecRec *)im->private.proto.spec;
XPointer arg = spec->ev;
......
......@@ -437,8 +437,7 @@ _XlcFileName(
char buf[PATH_MAX], *name;
name = NULL;
if ((5 + (args[i] ? strlen (args[i]) : 0) +
(cat ? strlen (cat) : 0)) < PATH_MAX) {
if ((5 + (args[i] ? strlen (args[i]) : 0) + strlen(cat)) < PATH_MAX) {
sprintf(buf, "%s/%s.dir", args[i], cat);
name = resolve_name(siname, buf, RtoL);
}
......
......@@ -43,7 +43,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
static MODULESETUPPROTO(glxSetup);
extern void GlxExtensionInit(INITARGS);
extern void GlxExtensionInit(void);
extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
extern void InitGlxWrapInitVisuals(void (*f)(miInitVisualsProcPtr *));
......
......@@ -54,7 +54,7 @@ static void BigReqResetProc(
static DISPATCH_PROC(ProcBigReqDispatch);
void
BigReqExtensionInit(INITARGS)
BigReqExtensionInit(void)
{
#if 0
ExtensionEntry *extEntry;
......
......@@ -76,7 +76,7 @@ static DISPATCH_PROC(SProcDPMSCapable);
static void DPMSResetProc(ExtensionEntry* extEntry);
void
DPMSExtensionInit(INITARGS)
DPMSExtensionInit(void)
{
#if 0
ExtensionEntry *extEntry;
......
......@@ -5,68 +5,64 @@
#include <dix-config.h>
#endif
#ifndef INITARGS
#define INITARGS void
#endif
#ifdef SHAPE
extern void ShapeExtensionInit(INITARGS);
extern void ShapeExtensionInit(void);
#include <X11/extensions/shapeproto.h>
#endif
#ifdef XTEST
extern void XTestExtensionInit(INITARGS);
extern void XTestExtensionInit(void);
#define _XTEST_SERVER_
#include <nx-X11/extensions/xtestconst.h>
#include <nx-X11/extensions/xteststr.h>
#endif
#if 1
extern void XTestExtension1Init(INITARGS);
extern void XTestExtension1Init(void);
#endif
#ifdef BIGREQS
extern void BigReqExtensionInit(INITARGS);
extern void BigReqExtensionInit(void);
#include <nx-X11/extensions/bigreqstr.h>
#endif
#ifdef XSYNC
extern void SyncExtensionInit(INITARGS);
extern void SyncExtensionInit(void);
#define _SYNC_SERVER
#include <nx-X11/extensions/sync.h>
#include <nx-X11/extensions/syncstr.h>
#endif
#ifdef SCREENSAVER
extern void ScreenSaverExtensionInit (INITARGS);
extern void ScreenSaverExtensionInit (void);
#include <nx-X11/extensions/saver.h>
#endif
#ifdef XCMISC
extern void XCMiscExtensionInit(INITARGS);
extern void XCMiscExtensionInit(void);
#include <nx-X11/extensions/xcmiscstr.h>
#endif
#ifdef DPMSExtension
extern void DPMSExtensionInit(INITARGS);
extern void DPMSExtensionInit(void);
#include <nx-X11/extensions/dpmsstr.h>
#endif
#ifdef XV
extern void XvExtensionInit(INITARGS);
extern void XvMCExtensionInit(INITARGS);
extern void XvRegister(INITARGS);
extern void XvExtensionInit(void);
extern void XvMCExtensionInit(void);
extern void XvRegister(void);
#include <nx-X11/extensions/Xv.h>
#include <nx-X11/extensions/XvMC.h>
#endif
#ifdef RES
extern void ResExtensionInit(INITARGS);
extern void ResExtensionInit(void);
#include <nx-X11/extensions/XResproto.h>
#endif
#ifdef SHM
extern void ShmExtensionInit(INITARGS);
extern void ShmExtensionInit(void);
#include <X11/extensions/shmproto.h>
extern void ShmSetPixmapFormat(
ScreenPtr pScreen,
......@@ -77,15 +73,15 @@ extern void ShmRegisterFuncs(
#endif
#if 1
extern void SecurityExtensionInit(INITARGS);
extern void SecurityExtensionInit(void);
#endif
#if 1
extern void XagExtensionInit(INITARGS);
extern void XagExtensionInit(void);
#endif
#if 1
extern void XpExtensionInit(INITARGS);
extern void XpExtensionInit(void);
#endif
#if 1
......@@ -93,5 +89,5 @@ extern void PanoramiXExtensionInit(int argc, char *argv[]);
#endif
#if 1
extern void XkbExtensionInit(INITARGS);
extern void XkbExtensionInit(void);
#endif
......@@ -1160,7 +1160,6 @@ XineramaGetImageData(
BoxRec SrcBox, *pbox;
int x, y, w, h, i, j, nbox, size, sizeNeeded, ScratchPitch, inOut, depth;
DrawablePtr pDraw = pDrawables[0];
ScreenPtr pScreen = pDraw->pScreen;
char *ScratchMem = NULL;
size = 0;
......
......@@ -229,7 +229,7 @@ static int ScreenPrivateIndex;
****************/
void
ScreenSaverExtensionInit(INITARGS)
ScreenSaverExtensionInit(void)
{
ExtensionEntry *extEntry;
int i;
......
......@@ -2147,7 +2147,7 @@ XSecurityOptions(argc, argv, i)
*/
void
SecurityExtensionInit(INITARGS)
SecurityExtensionInit(void)
{
ExtensionEntry *extEntry;
int i;
......
......@@ -147,7 +147,7 @@ typedef struct _ShapeEvent {
****************/
void
ShapeExtensionInit(INITARGS)
ShapeExtensionInit(void)
{
ExtensionEntry *extEntry;
......@@ -317,7 +317,6 @@ ProcShapeRectangles (client)
register ClientPtr client;
{
WindowPtr pWin;
ScreenPtr pScreen;
REQUEST(xShapeRectanglesReq);
xRectangle *prects;
int nrects, ctype;
......@@ -350,7 +349,6 @@ ProcShapeRectangles (client)
client->errorValue = stuff->ordering;
return BadValue;
}
pScreen = pWin->drawable.pScreen;
nrects = ((stuff->length << 2) - sizeof(xShapeRectanglesReq));
if (nrects & 4)
return BadLength;
......
......@@ -205,7 +205,7 @@ static Bool CheckForShmSyscall()
#ifndef NXAGENT_SERVER
void
ShmExtensionInit(INITARGS)
ShmExtensionInit(void)
{
ExtensionEntry *extEntry;
int i;
......
......@@ -2336,7 +2336,7 @@ SyncResetProc(extEntry)
* ** Initialise the extension.
*/
void
SyncExtensionInit(INITARGS)
SyncExtensionInit(void)
{
ExtensionEntry *extEntry;
......
......@@ -68,7 +68,7 @@ static DISPATCH_PROC(SProcXCMiscGetXIDList);
static DISPATCH_PROC(SProcXCMiscGetXIDRange);
void
XCMiscExtensionInit(INITARGS)
XCMiscExtensionInit(void)
{
#if 0
ExtensionEntry *extEntry;
......
......@@ -25,7 +25,6 @@
static int
ProcXResQueryVersion (ClientPtr client)
{
REQUEST(xXResQueryVersionReq);
xXResQueryVersionReply rep;
REQUEST_SIZE_MATCH (xXResQueryVersionReq);
......@@ -301,7 +300,7 @@ SProcResDispatch (ClientPtr client)
}
void
ResExtensionInit(INITARGS)
ResExtensionInit(void)
{
(void) AddExtension(XRES_NAME, 0, 0,
ProcResDispatch, SProcResDispatch,
......
......@@ -93,7 +93,7 @@ static DISPATCH_PROC(SProcXTestGetVersion);
static DISPATCH_PROC(SProcXTestGrabControl);
void
XTestExtensionInit(INITARGS)
XTestExtensionInit(void)
{
#if 0
ExtensionEntry *extEntry;
......
......@@ -167,7 +167,7 @@ static int XTestCurrentClientGone(
* (other than the core errors).
*/
void
XTestExtension1Init(INITARGS)
XTestExtension1Init(void)
{
/*
* holds the pointer to the extension entry structure
......
......@@ -56,10 +56,8 @@
/*
* enable this for debugging
#define COMPOSITE_DEBUG
*/
#define COMPOSITE_DEBUG
*/
typedef struct _CompClientWindow {
struct _CompClientWindow *next;
......
......@@ -9,7 +9,7 @@
static MODULESETUPPROTO(dbeSetup);
extern void DbeExtensionInit(INITARGS);
extern void DbeExtensionInit(void);
ExtensionModule dbeExt = {
DbeExtensionInit,
......
......@@ -91,7 +91,6 @@ SRCS = $(XFMODSRC) \
fb24_32.c \
fbpict.c \
fbmmx.c \
fbpseudocolor.c
OBJS = $(XFMODOBJ) \
fbarc.o \
......@@ -128,7 +127,6 @@ OBJS = $(XFMODOBJ) \
fb24_32.o \
fbpict.o \
fbmmx.o \
fbpseudocolor.o
INCLUDES = -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \
-I$(XINCLUDESRC) \
......
......@@ -534,8 +534,8 @@ fb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel)
FbStride oldStride, newStride;
int oldBpp, newBpp;
fb24_32BltFunc blt;
int oldXoff, oldYoff;
int newXoff, newYoff;
_X_UNUSED int oldXoff, oldYoff;
_X_UNUSED int newXoff, newYoff;
pNewTile = fbCreatePixmapBpp (pScreen,
pOldTile->drawable.width,
......
......@@ -72,7 +72,7 @@ fbFill (DrawablePtr pDrawable,
FbBits *stip;
FbStride stipStride;
int stipBpp;
int stipXoff, stipYoff; /* XXX assumed to be zero */
_X_UNUSED int stipXoff, stipYoff; /* XXX assumed to be zero */
if (pGC->fillStyle == FillStippled)
alu = FbStipple1Rop(pGC->alu,pGC->fgPixel);
......@@ -99,7 +99,7 @@ fbFill (DrawablePtr pDrawable,
FbStip *stip;
FbStride stipStride;
int stipBpp;
int stipXoff, stipYoff; /* XXX assumed to be zero */
_X_UNUSED int stipXoff, stipYoff; /* XXX assumed to be zero */
FbBits fgand, fgxor, bgand, bgxor;
fgand = pPriv->and;
......@@ -140,7 +140,7 @@ fbFill (DrawablePtr pDrawable,
int tileBpp;
int tileWidth;
int tileHeight;
int tileXoff, tileYoff; /* XXX assumed to be zero */
_X_UNUSED int tileXoff, tileYoff; /* XXX assumed to be zero */
fbGetDrawable (&pTile->drawable, tile, tileStride, tileBpp, tileXoff, tileYoff);
tileWidth = pTile->drawable.width;
......
......@@ -170,7 +170,7 @@ fbCanEvenStipple (PixmapPtr pStipple, int bpp)
FbBits *bits;
int stride;
int stip_bpp;
int stipXoff, stipYoff;
_X_UNUSED int stipXoff, stipYoff;
int h;
/* can't even stipple 24bpp drawables */
......
......@@ -72,7 +72,7 @@
FbBits *__bits__; \
FbStride __stride__; \
int __bpp__; \
int __xoff__,__yoff__; \
_X_UNUSED int __xoff__,__yoff__; \
\
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
switch (__bpp__) { \
......
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include <nx-X11/X.h>
#include <nx-X11/Xproto.h>
#include "scrnintstr.h"
#include "colormapst.h"
#include "glyphstr.h"
#include "resource.h"
#include <X11/fonts/font.h>
#include "dixfontstr.h"
#include <X11/fonts/fontstruct.h>
#include "micmap.h"
#include "fb.h"
#include "fbpseudocolor.h"
static Bool xxCreateGC(GCPtr pGC);
static void xxValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw);
static void xxDestroyGC(GCPtr pGC);
static void xxChangeGC (GCPtr pGC, unsigned long mask);
static void xxCopyGC (GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
static void xxChangeClip (GCPtr pGC, int type, void * pvalue, int nrects);
static void xxCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
static void xxDestroyClip(GCPtr pGC);
static void xxFillSpans(DrawablePtr pDraw, GC *pGC, int nInit,
DDXPointPtr pptInit, int *pwidthInit, int fSorted);
static void xxSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
DDXPointPtr pptInit, int *pwidthInit, int nspans,
int fSorted);
static void xxPutImage(DrawablePtr pDraw, GCPtr pGC, int depth, int x, int y,
int w, int h,int leftPad, int format, char *pImage);
static RegionPtr xxCopyPlane(DrawablePtr pSrc,
DrawablePtr pDst, GCPtr pGC,int srcx, int srcy,
int width, int height, int dstx, int dsty,
unsigned long bitPlane);
static void xxPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode, int npt,
xPoint *pptInit);
static void xxPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
int npt, DDXPointPtr pptInit);
static void xxPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
xSegment *pSeg);
static void xxPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nRects,
xRectangle *pRects);
static void xxPolyArc( DrawablePtr pDraw, GCPtr pGC, int narcs, xArc *parcs);
static void xxFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape,
int mode, int count, DDXPointPtr pptInit);
static void xxPolyFillRect(DrawablePtr pDraw, GCPtr pGC, int nRectsInit,
xRectangle *pRectsInit);
static RegionPtr xxCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GC *pGC,
int srcx, int srcy, int width, int height,
int dstx, int dsty);
static void xxPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
xArc *parcs);
static int xxPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y, int count,
char *chars);
static int xxPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
int count, unsigned short *chars);
static void xxImageText8(DrawablePtr pDraw, GCPtr pGC, int x,
int y, int count, char *chars);
static void xxImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
int count, unsigned short *chars);
static void xxImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int x, int y,
unsigned int nglyph, CharInfoPtr *ppci,
void * pglyphBase);
static void xxPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int x, int y,
unsigned int nglyph, CharInfoPtr *ppci,
void * pglyphBase);
static void xxPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw,
int dx, int dy, int xOrg, int yOrg);
static void
xxComposite (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask,
INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
static void
xxGlyphs (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
GlyphListPtr list, GlyphPtr *glyphs);
typedef struct _xxCmapPrivRec {
CARD32* cmap;
ColormapPtr pmap;
Bool dirty;
struct _xxCmapPrivRec *next;
} xxCmapPrivRec, *xxCmapPrivPtr;
typedef struct {
CloseScreenProcPtr CloseScreen;
CreateScreenResourcesProcPtr CreateScreenResources;
CreateWindowProcPtr CreateWindow;
CopyWindowProcPtr CopyWindow;
PaintWindowProcPtr PaintWindowBackground;
PaintWindowProcPtr PaintWindowBorder;
WindowExposuresProcPtr WindowExposures;
CreateGCProcPtr CreateGC;
CreateColormapProcPtr CreateColormap;
DestroyColormapProcPtr DestroyColormap;
InstallColormapProcPtr InstallColormap;
UninstallColormapProcPtr UninstallColormap;
ListInstalledColormapsProcPtr ListInstalledColormaps;
StoreColorsProcPtr StoreColors;
#ifdef RENDER
CompositeProcPtr Composite;
GlyphsProcPtr Glyphs;
#endif
PixmapPtr pPixmap;
char * addr;
void *pBits;
RegionRec region;
VisualPtr bVisual;
RegionRec bRegion;
int myDepth;
int depth;
ColormapPtr baseCmap;
ColormapPtr* InstalledCmaps;
xxCmapPrivPtr Cmaps;
int numInstalledColormaps;
int colormapDirty;
xxSyncFunc sync;
} xxScrPrivRec, *xxScrPrivPtr;
#define xxGetScrPriv(s) ((xxScrPrivPtr) \
(xxScrPrivateIndex != -1) \
? (s)->devPrivates[xxScrPrivateIndex].ptr\
: NULL)
#define xxScrPriv(s) xxScrPrivPtr pScrPriv = xxGetScrPriv(s)
#define xxGetCmapPriv(s) ((xxCmapPrivPtr) \
(s)->devPrivates[xxColormapPrivateIndex].ptr)
#define xxCmapPriv(s) xxCmapPrivPtr pCmapPriv = xxGetCmapPriv(s);
typedef struct _xxGCPriv {
GCOps *ops;
GCFuncs *funcs;
} xxGCPrivRec, *xxGCPrivPtr;
#define xxGetGCPriv(pGC) ((xxGCPrivPtr) \
(pGC)->devPrivates[xxGCPrivateIndex].ptr)
#define xxGCPriv(pGC) xxGCPrivPtr pGCPriv = xxGetGCPriv(pGC)
int xxScrPrivateIndex = -1;
int xxGCPrivateIndex;
int xxColormapPrivateIndex = -1;
int xxGeneration;
#define wrap(priv,real,mem,func) {\
priv->mem = real->mem; \
real->mem = func; \
}
#define unwrap(priv,real,mem) {\
real->mem = priv->mem; \
}
#define MARK_DIRTY (1 << 31)
#define MAX_NUM_XX_INSTALLED_CMAPS 255
/* #define DEBUG */
#ifdef DEBUG
# define DBG ErrorF
# define DBG_ARGS(x) ErrorF x
# define PRINT_RECTS(rec) {\
int i;\
BoxPtr box;\
ErrorF("RECTS: %i\n",RegionNumRects(&rec));\
if (RegionNumRects(&rec) > 1) { \
for (i = 0; i < RegionNumRects(&rec); i++ ) {\
box = RegionBox(&rec,i);\
ErrorF("x1: %hi x2: %hi y1: %hi y2: %hi\n", \
box->x1,box->x2,box->y1,box->y2);\
}\
} else { \
box = &(rec.extents); \
ErrorF("x1: %hi x2: %hi y1: %hi y2: %hi\n", \
box->x1,box->x2,box->y1,box->y2);\
} \
}
#else
# define DBG(x)
# define DBG_ARGS(x)
# define PRINT_RECTS(rec)
#endif
#if 0
static void xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
xxCmapPrivPtr pCmapPriv);
static void xxUpdateFb(ScreenPtr pScreen);
static void
xxUpdateWindowImmediately(WindowPtr pWin)
{
xxScrPriv(pWin->drawable.pScreen);
xxCmapPrivPtr pCmapPriv;
ColormapPtr pmap;
pmap = (ColormapPtr)LookupIDByType(wColormap(pWin),RT_COLORMAP);
if (pmap && (pCmapPriv = xxGetCmapPriv(pmap)) != (void *)-1) {
xxCopyPseudocolorRegion(pWin->drawable.pScreen,
&pScrPriv->region, pCmapPriv);
}
}
#else
# define xxUpdateWindowImmediately(x)
#endif
static ColormapPtr
xxGetBaseColormap(ScreenPtr pScreen)
{
xxScrPriv(pScreen);
DepthPtr pDepth = pScreen->allowedDepths;
int i,j,k;
ColormapPtr pDefMap
= (ColormapPtr) LookupIDByType(pScreen->defColormap,RT_COLORMAP);
ColormapPtr cmap = NULL;
VisualPtr pVisual = NULL;
for (i = 0; i < pScreen->numDepths; i++, pDepth++)
if (pDepth->depth == pScrPriv->depth) {
for (j = 0; j < pDepth->numVids; j++) {
if (pDefMap->pVisual->vid == pDepth->vids[j]
&& pDefMap->pVisual->class == TrueColor) {
cmap = pDefMap;
break;
}
if (!pVisual) {
for (k = 0; k < pScreen->numVisuals; k++) {
if (pScreen->visuals[k].class == TrueColor
&& pScreen->visuals[k].vid
== pDepth->vids[j]) {
pVisual = &pScreen->visuals[k];
break;
}
}
}
}
if (cmap)
break;
}
if (!cmap) {
CreateColormap(FakeClientID(0),pScreen,pVisual,&cmap,AllocNone,0);
}
return cmap;
}
static Bool
xxCreateScreenResources(ScreenPtr pScreen)
{
PixmapPtr pPix;
xxScrPriv(pScreen);
Bool ret;
PixmapPtr pPixmap;
BoxRec box;
int depth = pScrPriv->myDepth;
void *pBits;
unwrap (pScrPriv,pScreen, CreateScreenResources);
ret = pScreen->CreateScreenResources(pScreen);
wrap(pScrPriv,pScreen,CreateScreenResources,xxCreateScreenResources);
if (!ret) return FALSE;
pScrPriv->pBits = NULL;
if (pScrPriv->addr)
pBits = pScrPriv->addr;
else
pBits = malloc(pScreen->width * pScreen->height
* (BitsPerPixel(depth) >> 3));
if (!pBits) return FALSE;
pPixmap = (*pScreen->CreatePixmap)(pScreen, 0, 0, depth);
if (!pPixmap) {
free(pBits);
return FALSE;
}
if (!(*pScreen->ModifyPixmapHeader)(pPixmap, pScreen->width,
pScreen->height, depth,
BitsPerPixel(depth),
PixmapBytePad(pScreen->width, depth),
pBits)) {
free(pBits);
return FALSE;
}
if (pScreen->rootDepth == pScrPriv->myDepth) {
pPix = (PixmapPtr)pScreen->devPrivate;
if (!(*pScreen->ModifyPixmapHeader)(pPix, 0,0, pScrPriv->depth,
BitsPerPixel(pScrPriv->depth),
PixmapBytePad(pScreen->width,
pScrPriv->depth),
0)) {
free(pBits);
return FALSE;
}
}
pScrPriv->baseCmap = xxGetBaseColormap(pScreen);
pScrPriv->pBits = pBits;
pScrPriv->pPixmap = pPixmap;
box.x1 = 0;
box.y1 = 0;
box.x2 = pScreen->width;
box.y2 = pScreen->height;
RegionNull(&pScrPriv->region);
RegionInit(&pScrPriv->bRegion, &box, 0);
return TRUE;
}
static Bool
xxCloseScreen (int iScreen, ScreenPtr pScreen)
{
xxScrPriv(pScreen);
Bool ret;
(*pScreen->DestroyPixmap)(pScrPriv->pPixmap);
/* We don't need to free the baseColormap as FreeClientResourcess
will have taken care of it. */
RegionUninit(&pScrPriv->region);
unwrap (pScrPriv,pScreen, CloseScreen);
ret = pScreen->CloseScreen(iScreen,pScreen);
free(pScrPriv->pBits);
free(pScrPriv->InstalledCmaps);
free(pScrPriv);
return TRUE;
}
static Bool
xxMyVisual(ScreenPtr pScreen, VisualID vid)
{
xxScrPriv(pScreen);
DepthPtr pDepth = pScreen->allowedDepths;
int i,j;
for (i = 0; i < pScreen->numDepths; i++, pDepth++)
if (pDepth->depth == pScrPriv->myDepth) {
for (j = 0; j < pDepth->numVids; j++) {
if (vid == pDepth->vids[j]) {
return TRUE;
}
}
}
return FALSE;
}
static Bool
xxInitColormapDummy(ColormapPtr pmap, int index)
{
return TRUE;
}
static Bool
xxInitColormapPrivate(ColormapPtr pmap)
{
xxScrPriv(pmap->pScreen);
xxCmapPrivPtr pCmapPriv;
void *cmap;
pmap->devPrivates[xxColormapPrivateIndex].ptr = (void *) -1;
if (xxMyVisual(pmap->pScreen,pmap->pVisual->vid)) {
DBG("CreateColormap\n");
pCmapPriv = (xxCmapPrivPtr) malloc (sizeof (xxCmapPrivRec));
if (!pCmapPriv)
return FALSE;
pmap->devPrivates[xxColormapPrivateIndex].ptr = (void *) pCmapPriv;
cmap = malloc(sizeof (CARD32) * (1 << pScrPriv->myDepth));
if (!cmap)
return FALSE;
memset(cmap,0,sizeof (CARD32) * (1 << pScrPriv->myDepth));
pCmapPriv->cmap = cmap;
pCmapPriv->dirty = FALSE;
pCmapPriv->pmap = pmap;
pCmapPriv->next = pScrPriv->Cmaps;
pScrPriv->Cmaps = pCmapPriv;
}
return TRUE;
}
static Bool
xxCreateColormap(ColormapPtr pmap)
{
xxScrPriv(pmap->pScreen);
Bool ret;
if (!xxInitColormapPrivate(pmap)) return FALSE;
unwrap(pScrPriv,pmap->pScreen, CreateColormap);
ret = pmap->pScreen->CreateColormap(pmap);
wrap(pScrPriv,pmap->pScreen,CreateColormap,xxCreateColormap);
return ret;
}
static int
xxCmapInstalled(ColormapPtr pmap)
{
xxScrPriv(pmap->pScreen);
int i;
for (i = 0; i < pScrPriv->numInstalledColormaps; i++)
if (pScrPriv->InstalledCmaps[i] == pmap)
break;
if (i == pScrPriv->numInstalledColormaps) /* not installed */
return -1;
return i;
}
static void
xxInstalledCmapDelete(ScreenPtr pScreen, int num)
{
xxScrPriv(pScreen);
int i;
pScrPriv->numInstalledColormaps--;
for (i = num; i < pScrPriv->numInstalledColormaps; i++)
pScrPriv->InstalledCmaps[i] = pScrPriv->InstalledCmaps[i+1];
}
static void
xxDestroyColormap(ColormapPtr pmap)
{
xxScrPriv(pmap->pScreen);
xxCmapPriv(pmap);
if (pCmapPriv != (void *) -1) {
xxCmapPrivPtr tmpCmapPriv = pScrPriv->Cmaps;
xxCmapPrivPtr *prevCmapPriv = &pScrPriv->Cmaps;
int n;
DBG("DestroyColormap\n");
if ((n = xxCmapInstalled(pmap)) != -1)
xxInstalledCmapDelete(pmap->pScreen,n);
while (tmpCmapPriv) {
if (tmpCmapPriv->pmap == pmap) {
*prevCmapPriv = tmpCmapPriv->next;
break;
}
prevCmapPriv = &tmpCmapPriv->next;
tmpCmapPriv = tmpCmapPriv->next;
}
free(pCmapPriv->cmap);
free(pCmapPriv);
}
unwrap(pScrPriv,pmap->pScreen, DestroyColormap);
pmap->pScreen->DestroyColormap(pmap);
wrap(pScrPriv,pmap->pScreen,DestroyColormap,xxDestroyColormap);
}
#define Shift(v,d) ((d) < 0 ? ((v) >> (-d)) : ((v) << (d)))
static int
xxComputeCmapShift (unsigned long mask)
{
int shift;
unsigned long bit;
shift = 16;
bit = 0x80000000;
while (!(mask & bit))
{
shift--;
bit >>= 1;
}
return shift;
}
static void
xxStoreColors(ColormapPtr pmap, int nColors, xColorItem *pColors)
{
xxScrPriv(pmap->pScreen);
xxCmapPriv(pmap);
if (pCmapPriv != (void *) -1) {
xColorItem *expanddefs;
int i;
VisualPtr bVisual;
int rs, gs, bs;
if (nColors == 0) return;
DBG("StoreColors\n");
expanddefs = ALLOCATE_LOCAL(sizeof(xColorItem)
* (1 << pScrPriv->myDepth));
if (!expanddefs) return;
bVisual = pScrPriv->bVisual;
DBG("StoreColors\n");
rs = xxComputeCmapShift(bVisual->redMask);
gs = xxComputeCmapShift(bVisual->greenMask);
bs = xxComputeCmapShift(bVisual->blueMask);
if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
nColors = miExpandDirectColors(pmap, nColors, pColors, expanddefs);
pColors = expanddefs;
}
for (i = 0; i < nColors; i++) {
DBG_ARGS(("index: %i r 0x%x g 0x%x b 0x%x\n", pColors->pixel,
pColors->red, pColors->green, pColors->blue));
pCmapPriv->cmap[pColors->pixel] = MARK_DIRTY
| (Shift(pColors->red, rs) & bVisual->redMask)
| (Shift(pColors->green, gs) & bVisual->greenMask)
| (Shift(pColors->blue, bs) & bVisual->blueMask);
pColors++;
}
DEALLOCATE_LOCAL(expanddefs);
pCmapPriv->dirty = TRUE;
pScrPriv->colormapDirty = TRUE;
return;
}
unwrap(pScrPriv,pmap->pScreen, StoreColors);
pmap->pScreen->StoreColors(pmap,nColors,pColors);
wrap(pScrPriv,pmap->pScreen,StoreColors,xxStoreColors);
}
static void
xxInstallColormap(ColormapPtr pmap)
{
int i;
xxScrPriv(pmap->pScreen);
xxCmapPriv(pmap);
if (pCmapPriv != (void *) -1) {
Pixel *pixels;
xrgb *colors;
int i;
VisualPtr pVisual;
xColorItem *defs;
DBG("InstallColormap\n");
if (xxCmapInstalled(pmap) != -1)
return;
if (!pScrPriv->numInstalledColormaps) {
unwrap(pScrPriv,pmap->pScreen, InstallColormap);
pmap->pScreen->InstallColormap(pScrPriv->baseCmap);
wrap(pScrPriv,pmap->pScreen,InstallColormap,xxInstallColormap);
}
pixels = ALLOCATE_LOCAL(sizeof(Pixel) * (1 << pScrPriv->myDepth));
colors = ALLOCATE_LOCAL(sizeof(xrgb) * (1 << pScrPriv->myDepth));
defs = ALLOCATE_LOCAL(sizeof(xColorItem) * (1 << pScrPriv->myDepth));
if (!pixels || !colors)
return;
/* if we have more than max installed delete the oldest */
if (pScrPriv->numInstalledColormaps == MAX_NUM_XX_INSTALLED_CMAPS)
xxInstalledCmapDelete(pmap->pScreen,0);
pScrPriv->InstalledCmaps[pScrPriv->numInstalledColormaps] = pmap;
pScrPriv->numInstalledColormaps++;
pVisual = pScrPriv->bVisual;
for (i = 0; i < (1 << pScrPriv->myDepth); i++)
pixels[i] = i;
QueryColors (pmap, (1 << pScrPriv->myDepth), pixels, colors);
for (i = 0; i < (1 << pScrPriv->myDepth); i++) {
defs[i].pixel = pixels[i];
defs[i].red = colors[i].red;
defs[i].green = colors[i].green;
defs[i].blue = colors[i].blue;
defs[i].flags = DoRed|DoGreen|DoBlue;
}
xxStoreColors(pmap,(1 << pScrPriv->myDepth),defs);
DEALLOCATE_LOCAL(pixels);
DEALLOCATE_LOCAL(colors);
DEALLOCATE_LOCAL(defs);
return;
}
for (i = pScrPriv->numInstalledColormaps; i ; i--)
WalkTree(pmap->pScreen, TellLostMap,
(char *)&pScrPriv->InstalledCmaps[i-1]->mid);
pScrPriv->numInstalledColormaps = 0;
unwrap(pScrPriv,pmap->pScreen, InstallColormap);
pmap->pScreen->InstallColormap(pmap);
wrap(pScrPriv,pmap->pScreen,InstallColormap,xxInstallColormap);
}
static void
xxUninstallColormap(ColormapPtr pmap)
{
xxScrPriv(pmap->pScreen);
xxCmapPriv(pmap);
if (pCmapPriv != (void *) -1) {
int num;
if ((num = xxCmapInstalled(pmap)) == -1)
return;
DBG("UninstallColormap\n");
xxInstalledCmapDelete(pmap->pScreen,num);
return;
}
unwrap(pScrPriv,pmap->pScreen, UninstallColormap);
pmap->pScreen->UninstallColormap(pmap);
wrap(pScrPriv,pmap->pScreen,UninstallColormap,xxUninstallColormap);
}
static int
xxListInstalledColormaps(ScreenPtr pScreen, Colormap *pCmapIds)
{
int n,i;
xxScrPriv(pScreen);
unwrap(pScrPriv,pScreen, ListInstalledColormaps);
n = pScreen->ListInstalledColormaps(pScreen, pCmapIds);
wrap (pScrPriv,pScreen,ListInstalledColormaps,xxListInstalledColormaps);
pCmapIds += n;
for (i = 0; i < pScrPriv->numInstalledColormaps; i++) {
*pCmapIds++ = pScrPriv->InstalledCmaps[i]->mid;
n++;
}
return n;
}
static Bool
xxCreateWindow(WindowPtr pWin)
{
xxScrPriv(pWin->drawable.pScreen);
if (pWin->drawable.class != InputOutput
|| pScrPriv->myDepth != pWin->drawable.depth) {
Bool ret;
DBG("CreateWindow NoPseudo\n");
unwrap (pScrPriv, pWin->drawable.pScreen, CreateWindow);
ret = pWin->drawable.pScreen->CreateWindow(pWin);
wrap(pScrPriv, pWin->drawable.pScreen, CreateWindow, xxCreateWindow);
return ret;
}
DBG("CreateWindow\n");
pWin->devPrivates[fbWinPrivateIndex].ptr = (void *) pScrPriv->pPixmap;
PRINT_RECTS(pScrPriv->region);
if (!pWin->parent) {
RegionEmpty(&pScrPriv->region);
}
PRINT_RECTS(pScrPriv->region);
return TRUE;
}
static void
xxWalkChildren(WindowPtr pWin, RegionPtr pReg, PixmapPtr pPixmap)
{
WindowPtr pCurWin = pWin;
do {
if (fbGetWindowPixmap(pCurWin) == pPixmap) {
DBG("WalkWindow Add\n");
RegionUnion(pReg,pReg,
&pCurWin->borderClip);
} else {
DBG("WalkWindow Sub\n");
RegionSubtract(pReg,pReg,
&pCurWin->borderClip);
}
if (pCurWin->lastChild)
xxWalkChildren(pCurWin->lastChild,pReg, pPixmap);
} while ((pCurWin = pCurWin->prevSib));
}
static void
xxPickMyWindows(WindowPtr pWin, RegionPtr pRgn)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
xxScrPriv(pScreen);
if (fbGetWindowPixmap(pWin) == pScrPriv->pPixmap) {
RegionUnion(pRgn,pRgn,&pWin->borderClip);
}
if (pWin->lastChild)
xxWalkChildren(pWin->lastChild,pRgn,pScrPriv->pPixmap);
}
static void
xxCopyWindow(WindowPtr pWin,
DDXPointRec ptOldOrg,
RegionPtr prgnSrc)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
xxScrPriv(pScreen);
RegionRec rgn;
RegionRec rgn_new;
int dx, dy;
PixmapPtr pPixmap = fbGetWindowPixmap(pWin);
DBG("xxCopyWindow\n");
dx = ptOldOrg.x - pWin->drawable.x;
dy = ptOldOrg.y - pWin->drawable.y;
RegionNull(&rgn_new);
RegionUnion(&rgn_new,&rgn_new,prgnSrc);
RegionTranslate(&rgn_new,-dx,-dy);
RegionNull(&rgn);
xxPickMyWindows(pWin,&rgn);
unwrap (pScrPriv, pScreen, CopyWindow);
pWin->devPrivates[fbWinPrivateIndex].ptr = fbGetScreenPixmap(pScreen);
pScreen->CopyWindow(pWin, ptOldOrg, prgnSrc);
pWin->devPrivates[fbWinPrivateIndex].ptr = pPixmap;
wrap(pScrPriv, pScreen, CopyWindow, xxCopyWindow);
RegionIntersect(&rgn,&rgn,&rgn_new);
if (RegionNotEmpty(&rgn)) {
fbCopyRegion(&pScrPriv->pPixmap->drawable,&pScrPriv->pPixmap->drawable,
0,&rgn,dx,dy,fbCopyWindowProc,0,(void*)0);
RegionTranslate(&rgn,dx,dy);
RegionIntersect(&rgn_new,&pScrPriv->region,&rgn);
RegionSubtract(&pScrPriv->region,&pScrPriv->region,&rgn);
RegionTranslate(&rgn_new,-dx,-dy);
RegionUnion(&pScrPriv->region,&pScrPriv->region,&rgn_new);
}
#if 1
RegionUninit(&rgn_new);
RegionUninit(&rgn);
#endif
}
static void
xxWindowExposures (WindowPtr pWin,
RegionPtr prgn,
RegionPtr other_exposed)
{
xxScrPriv(pWin->drawable.pScreen);
if (fbGetWindowPixmap(pWin) == pScrPriv->pPixmap) {
DBG("WindowExposures\n");
PRINT_RECTS(pScrPriv->region);
RegionUnion(&pScrPriv->region,
&pScrPriv->region,
prgn);
PRINT_RECTS(pScrPriv->region);
} else {
DBG("WindowExposures NonPseudo\n");
PRINT_RECTS(pScrPriv->region);
RegionSubtract(&pScrPriv->region,
&pScrPriv->region,
prgn);
PRINT_RECTS(pScrPriv->region);
}
unwrap (pScrPriv, pWin->drawable.pScreen, WindowExposures);
pWin->drawable.pScreen->WindowExposures(pWin, prgn, other_exposed);
wrap(pScrPriv, pWin->drawable.pScreen, WindowExposures, xxWindowExposures);
}
static void
xxPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
{
xxScrPriv(pWin->drawable.pScreen);
RegionRec rgni;
DBG("xxPaintWindow\n");
RegionNull(&rgni);
#if 0
RegionUnion(&rgni, &rgni, &pWin->borderClip);
RegionIntersect(&rgni, &rgni, pRegion);
#else
RegionUnion(&rgni, &rgni, pRegion);
#endif
switch (what) {
case PW_BORDER:
RegionSubtract(&rgni, &rgni, &pWin->winSize);
if (fbGetWindowPixmap(pWin) == pScrPriv->pPixmap) {
DBG("PaintWindowBorder\n");
RegionUnion(&pScrPriv->region,
&pScrPriv->region, &rgni);
} else {
DBG("PaintWindowBorder NoOverlay\n");
RegionSubtract(&pScrPriv->region,
&pScrPriv->region, &rgni);
}
unwrap (pScrPriv, pWin->drawable.pScreen, PaintWindowBorder);
pWin->drawable.pScreen->PaintWindowBorder (pWin, pRegion, what);
wrap(pScrPriv, pWin->drawable.pScreen, PaintWindowBorder,
xxPaintWindow);
break;
case PW_BACKGROUND:
switch (pWin->backgroundState) {
case None:
break;
default:
RegionIntersect(&rgni,
&rgni,&pWin->winSize);
if (fbGetWindowPixmap(pWin) == pScrPriv->pPixmap) {
DBG("PaintWindowBackground\n");
RegionUnion(&pScrPriv->region,
&pScrPriv->region, &rgni);
} else {
DBG("PaintWindowBackground NoOverlay\n");
RegionSubtract(&pScrPriv->region,
&pScrPriv->region, &rgni);
}
break;
}
unwrap (pScrPriv, pWin->drawable.pScreen, PaintWindowBackground);
pWin->drawable.pScreen->PaintWindowBackground (pWin, pRegion, what);
wrap(pScrPriv, pWin->drawable.pScreen, PaintWindowBackground,
xxPaintWindow);
break;
}
PRINT_RECTS(rgni);
PRINT_RECTS(pScrPriv->region);
#if 1
RegionUninit(&rgni);
#endif
}
static void
xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
xxCmapPrivPtr pCmapPriv)
{
xxScrPriv(pScreen);
CARD32 mask = (1 << pScrPriv->myDepth) - 1;
int num = RegionNumRects(pReg);
BoxPtr pbox = RegionRects(pReg);
int width, height;
CARD8 *src;
CARD16 *dst, *dst_base;
int dst_stride;
register CARD32 *cmap = pCmapPriv->cmap;
register CARD8 *s;
register CARD16 *d;
int w;
dst_base = (CARD16*) ((PixmapPtr)pScreen->devPrivate)->devPrivate.ptr;
dst_stride = (int)((PixmapPtr)pScreen->devPrivate)->devKind
/ sizeof (CARD16);
while (num--) {
height = pbox->y2 - pbox->y1;
width = pbox->x2 - pbox->x1;
src = (unsigned char *) pScrPriv->pBits
+ (pbox->y1 * pScreen->width) + pbox->x1;
dst = dst_base + (pbox->y1 * dst_stride) + pbox->x1;
while (height--) {
w = width;
s = src;
d = dst;
while(w--) {
*(d++) = (CARD16)*(cmap + ((*(s++)) & mask));
}
src += pScreen->width;
dst += dst_stride;
}
pbox++;
}
}
static void
xxUpdateCmapPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
xxCmapPrivPtr pCmapPriv)
{
xxScrPriv(pScreen);
CARD32 mask = (1 << pScrPriv->myDepth) - 1;
int num = RegionNumRects(pReg);
BoxPtr pbox = RegionRects(pReg);
int width, height;
CARD8 *src;
CARD16 *dst, *dst_base;
int dst_stride;
register CARD32 val;
register CARD32 *cmap = pCmapPriv->cmap;
register CARD8 *s;
register CARD16 *d;
int w;
dst_base = (CARD16*) ((PixmapPtr)pScreen->devPrivate)->devPrivate.ptr;
dst_stride = (int)((PixmapPtr)pScreen->devPrivate)->devKind
/ sizeof (CARD16);
while (num--) {
height = pbox->y2 - pbox->y1;
width = pbox->x2 - pbox->x1;
src = (unsigned char *) pScrPriv->pBits
+ (pbox->y1 * pScreen->width) + pbox->x1;
dst = dst_base + (pbox->y1 * dst_stride) + pbox->x1;
while (height--) {
w = width;
s = src;
d = dst;
while(w--) {
val = *(cmap + ((*(s++)) & mask));
if (val & MARK_DIRTY) {
*d = (CARD16) val;
}
d++;
}
src += pScreen->width;
dst += dst_stride;
}
pbox++;
}
}
static void
xxGetWindowRegion(WindowPtr pWin,RegionPtr winreg)
{
RegionNull(winreg);
/* get visible part of the border ...Argh */
RegionSubtract(winreg,&pWin->borderSize,
&pWin->winSize);
RegionIntersect(winreg,winreg,
&pWin->borderClip);
/* add window interior excluding children */
RegionUnion(winreg,winreg,
&pWin->clipList);
}
static int
xxUpdateRegion(WindowPtr pWin, void * unused)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
xxScrPriv(pScreen);
ColormapPtr pmap = (void *) -1;
RegionRec winreg, rgni;
if (pScrPriv->myDepth == pWin->drawable.depth) {
xxCmapPrivPtr pCmapPriv = (void *)-1;
xxGetWindowRegion(pWin,&winreg);
if (pScrPriv->colormapDirty) {
pmap = (ColormapPtr)LookupIDByType(wColormap(pWin),RT_COLORMAP);
if (!pmap)
goto CONTINUE; /* return ? */
pCmapPriv = xxGetCmapPriv(pmap);
if (pCmapPriv == (void *) -1)
return WT_WALKCHILDREN;
if (!pCmapPriv->dirty)
goto CONTINUE;
RegionNull(&rgni);
/* This will be taken care of when damaged regions are updated */
RegionSubtract(&rgni, &winreg, &pScrPriv->region);
if (RegionNotEmpty(&rgni))
xxUpdateCmapPseudocolorRegion(pScreen,&rgni, pCmapPriv);
}
CONTINUE:
RegionNull(&rgni);
RegionIntersect(&rgni, &winreg, &pScrPriv->region);
if (RegionNotEmpty(&rgni)) {
if (pmap == (void *) -1) {
pmap =
(ColormapPtr)LookupIDByType(wColormap(pWin),RT_COLORMAP);
if (!pmap) /* return ? */
pmap = (ColormapPtr)LookupIDByType(pScreen->defColormap,
RT_COLORMAP);
pCmapPriv = xxGetCmapPriv(pmap);
}
if (pCmapPriv != (void *)-1)
xxCopyPseudocolorRegion(pScreen,&rgni, pCmapPriv);
RegionSubtract(&pScrPriv->region, &pScrPriv->region,
&rgni);
}
#if 1
RegionUninit(&rgni);
RegionUninit(&winreg);
#endif
}
return WT_WALKCHILDREN;
}
static void
xxUpdateFb(ScreenPtr pScreen)
{
xxScrPriv(pScreen);
DBG("Update FB\n");
PRINT_RECTS(pScrPriv->region);
if (pScrPriv->sync)
pScrPriv->sync(pScreen); /*@!@*/
WalkTree(pScreen,xxUpdateRegion,NULL);
#if 0
if (RegionNotEmpty(&pScrPriv->region)) {
ColormapPtr pmap = (void *) -1;
xxCmapPrivPtr pCmapPriv;
pmap = (ColormapPtr)LookupIDByType(pScreen->defColormap,
RT_COLORMAP);
pCmapPriv = xxGetCmapPriv(pmap);
if (pCmapPriv != (void *)-1)
xxCopyPseudocolorRegion(pScreen,&pScrPriv->region, pCmapPriv);
RegionSubtract(&pScrPriv->region, &pScrPriv->region,
&pScrPriv->region);
}
#endif
if (pScrPriv->colormapDirty) {
xxCmapPrivPtr pCmap = pScrPriv->Cmaps;
while (pCmap) {
int j;
if (pCmap->dirty) {
for (j = 0; j < (1 << pScrPriv->myDepth); j++)
pCmap->cmap[j] &= ~MARK_DIRTY;
pCmap->dirty = FALSE;
}
pCmap = pCmap->next;
}
pScrPriv->colormapDirty = FALSE;
}
}
static void
xxBlockHandler (void * data,
OSTimePtr pTimeout,
void * pRead)
{
ScreenPtr pScreen = (ScreenPtr) data;
xxScrPriv(pScreen);
if (RegionNotEmpty(&pScrPriv->region) || pScrPriv->colormapDirty)
xxUpdateFb (pScreen);
}
static void
xxWakeupHandler (void * data, int i, void * LastSelectMask)
{
}
Bool
xxSetup(ScreenPtr pScreen, int myDepth, int baseDepth, char* addr, xxSyncFunc sync)
{
xxScrPrivPtr pScrPriv;
DepthPtr pDepths;
ColormapPtr pDefMap;
int i,j,k;
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
#endif
if (xxGeneration != serverGeneration) {
xxScrPrivateIndex = AllocateScreenPrivateIndex ();
if (xxScrPrivateIndex == -1)
return FALSE;
xxColormapPrivateIndex
= AllocateColormapPrivateIndex (xxInitColormapDummy);
if (xxColormapPrivateIndex == -1)
return FALSE;
xxGCPrivateIndex = AllocateGCPrivateIndex ();
if (xxGCPrivateIndex == -1)
return FALSE;
xxGeneration = serverGeneration;
}
if (!AllocateGCPrivate (pScreen, xxGCPrivateIndex, sizeof (xxGCPrivRec)))
return FALSE;
pScrPriv = (xxScrPrivPtr) malloc (sizeof (xxScrPrivRec));
if (!pScrPriv)
return FALSE;
if (baseDepth)
pScrPriv->depth = baseDepth;
else {
pDepths = pScreen->allowedDepths;
for (i = 0; i < pScreen->numDepths; i++, pDepths++)
if (pDepths->depth != myDepth)
pScrPriv->depth = pDepths->depth;
}
if (!pScrPriv->depth)
return FALSE;
pDepths = pScreen->allowedDepths;
for (i = 0; i < pScreen->numDepths; i++, pDepths++)
if (pDepths->depth == pScrPriv->depth) {
for (j = 0; i < pDepths->numVids; j++) {
for (k = 0; k < pScreen->numVisuals; k++) {
if (pScreen->visuals[k].vid
== pDepths[i].vids[j]
&& pScreen->visuals[k].class == TrueColor) {
pScrPriv->bVisual = &pScreen->visuals[k];
goto DONE;
}
}
}
}
DONE:
if (!pScrPriv->bVisual)
return FALSE;
pScrPriv->myDepth = myDepth;
pScrPriv->numInstalledColormaps = 0;
pScrPriv->colormapDirty = FALSE;
pScrPriv->Cmaps = NULL;
pScrPriv->sync = sync;
pScreen->maxInstalledCmaps += MAX_NUM_XX_INSTALLED_CMAPS;
pScrPriv->InstalledCmaps = calloc(MAX_NUM_XX_INSTALLED_CMAPS,
sizeof(ColormapPtr));
if (!pScrPriv->InstalledCmaps)
return FALSE;
if (!RegisterBlockAndWakeupHandlers (xxBlockHandler,
xxWakeupHandler,
(void *) pScreen))
return FALSE;
wrap (pScrPriv, pScreen, CloseScreen, xxCloseScreen);
wrap (pScrPriv, pScreen, CreateScreenResources, xxCreateScreenResources);
wrap (pScrPriv, pScreen, CreateWindow, xxCreateWindow);
wrap (pScrPriv, pScreen, CopyWindow, xxCopyWindow);
wrap (pScrPriv, pScreen, PaintWindowBorder, xxPaintWindow);
wrap (pScrPriv, pScreen, PaintWindowBackground, xxPaintWindow);
#if 0 /* can we leave this out even with backing store enabled ? */
wrap (pScrPriv, pScreen, WindowExposures, xxWindowExposures);
#endif
wrap (pScrPriv, pScreen, CreateGC, xxCreateGC);
wrap (pScrPriv, pScreen, CreateColormap, xxCreateColormap);
wrap (pScrPriv, pScreen, DestroyColormap, xxDestroyColormap);
wrap (pScrPriv, pScreen, InstallColormap, xxInstallColormap);
wrap (pScrPriv, pScreen, UninstallColormap, xxUninstallColormap);
wrap (pScrPriv, pScreen, ListInstalledColormaps, xxListInstalledColormaps);
wrap (pScrPriv, pScreen, StoreColors, xxStoreColors);
#ifdef RENDER
if (ps) {
wrap (pScrPriv, ps, Glyphs, xxGlyphs);
wrap (pScrPriv, ps, Composite, xxComposite);
}
#endif
pScrPriv->addr = addr;
pScreen->devPrivates[xxScrPrivateIndex].ptr = (void *) pScrPriv;
pDefMap = (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP);
if (!xxInitColormapPrivate(pDefMap))
return FALSE;
return TRUE;
}
GCFuncs xxGCFuncs = {
xxValidateGC, xxChangeGC, xxCopyGC, xxDestroyGC,
xxChangeClip, xxDestroyClip, xxCopyClip
};
GCOps xxGCOps = {
xxFillSpans, xxSetSpans,
xxPutImage, xxCopyArea,
xxCopyPlane, xxPolyPoint,
xxPolylines, xxPolySegment,
xxPolyRectangle, xxPolyArc,
xxFillPolygon, xxPolyFillRect,
xxPolyFillArc, xxPolyText8,
xxPolyText16, xxImageText8,
xxImageText16, xxImageGlyphBlt,
xxPolyGlyphBlt, xxPushPixels,
#ifdef NEED_LINEHELPER
NULL,
#endif
{NULL} /* devPrivate */
};
#define IS_VISIBLE(pDraw) (pDraw->type == DRAWABLE_WINDOW \
&& (fbGetWindowPixmap((WindowPtr) pDraw) == pScrPriv->pPixmap))
#define TRANSLATE_BOX(box, pDraw) { \
box.x1 += pDraw->x; \
box.x2 += pDraw->x; \
box.y1 += pDraw->y; \
box.y2 += pDraw->y; \
}
#define TRIM_BOX(box, pGC) { \
BoxPtr extents = &pGC->pCompositeClip->extents;\
if(box.x1 < extents->x1) box.x1 = extents->x1; \
if(box.x2 > extents->x2) box.x2 = extents->x2; \
if(box.y1 < extents->y1) box.y1 = extents->y1; \
if(box.y2 > extents->y2) box.y2 = extents->y2; \
}
#define BOX_NOT_EMPTY(box) \
(((box.x2 - box.x1) > 0) && ((box.y2 - box.y1) > 0))
#define _ADD_BOX(box,pGC) {\
if (BOX_NOT_EMPTY(box)) { \
RegionRec region; \
ScreenPtr pScreen = pGC->pScreen;\
RegionInit(&region, &box, 1); \
RegionIntersect(&region,&region,\
(pGC)->pCompositeClip);\
if (RegionNotEmpty(&region)) { \
xxScrPriv(pScreen);\
PRINT_RECTS(pScrPriv->region);\
RegionUnion(&pScrPriv->region,&pScrPriv->region,&region);\
PRINT_RECTS(pScrPriv->region);\
RegionUninit(&region);\
}\
}\
}
#define TRANSLATE_AND_ADD_BOX(box,pGC) {\
TRANSLATE_BOX(box,pDraw); \
TRIM_BOX(box,pGC); \
_ADD_BOX(box,pGC); \
}
#define ADD_BOX(box,pGC) { \
TRIM_BOX(box,pGC); \
_ADD_BOX(box,pGC); \
}
#define XX_GC_FUNC_PROLOGUE(pGC) \
xxGCPriv(pGC); \
unwrap(pGCPriv, pGC, funcs); \
if (pGCPriv->ops) unwrap(pGCPriv, pGC, ops)
#define XX_GC_FUNC_EPILOGUE(pGC) \
wrap(pGCPriv, pGC, funcs, &xxGCFuncs); \
if (pGCPriv->ops) wrap(pGCPriv, pGC, ops, &xxGCOps)
static Bool
xxCreateGC(GCPtr pGC)
{
ScreenPtr pScreen = pGC->pScreen;
xxScrPriv(pScreen);
xxGCPriv(pGC);
Bool ret;
unwrap (pScrPriv, pScreen, CreateGC);
if((ret = (*pScreen->CreateGC) (pGC))) {
pGCPriv->ops = NULL;
pGCPriv->funcs = pGC->funcs;
pGC->funcs = &xxGCFuncs;
}
wrap (pScrPriv, pScreen, CreateGC, xxCreateGC);
return ret;
}
static void
xxValidateGC(
GCPtr pGC,
unsigned long changes,
DrawablePtr pDraw
){
XX_GC_FUNC_PROLOGUE (pGC);
(*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
if(pDraw->type == DRAWABLE_WINDOW)
pGCPriv->ops = pGC->ops; /* just so it's not NULL */
else
pGCPriv->ops = NULL;
XX_GC_FUNC_EPILOGUE (pGC);
}
static void
xxDestroyGC(GCPtr pGC)
{
XX_GC_FUNC_PROLOGUE (pGC);
(*pGC->funcs->DestroyGC)(pGC);
XX_GC_FUNC_EPILOGUE (pGC);
}
static void
xxChangeGC (
GCPtr pGC,
unsigned long mask
){
XX_GC_FUNC_PROLOGUE (pGC);
(*pGC->funcs->ChangeGC) (pGC, mask);
XX_GC_FUNC_EPILOGUE (pGC);
}
static void
xxCopyGC (
GCPtr pGCSrc,
unsigned long mask,
GCPtr pGCDst
){
XX_GC_FUNC_PROLOGUE (pGCDst);
(*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
XX_GC_FUNC_EPILOGUE (pGCDst);
}
static void
xxChangeClip (
GCPtr pGC,
int type,
void * pvalue,
int nrects
){
XX_GC_FUNC_PROLOGUE (pGC);
(*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
XX_GC_FUNC_EPILOGUE (pGC);
}
static void
xxCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
{
XX_GC_FUNC_PROLOGUE (pgcDst);
(* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
XX_GC_FUNC_EPILOGUE (pgcDst);
}
static void
xxDestroyClip(GCPtr pGC)
{
XX_GC_FUNC_PROLOGUE (pGC);
(* pGC->funcs->DestroyClip)(pGC);
XX_GC_FUNC_EPILOGUE (pGC);
}
#define XX_GC_OP_PROLOGUE(pGC,pDraw) \
xxScrPriv(pDraw->pScreen); \
xxGCPriv(pGC); \
GCFuncs *oldFuncs = pGC->funcs; \
unwrap(pGCPriv, pGC, funcs); \
unwrap(pGCPriv, pGC, ops); \
#define XX_GC_OP_EPILOGUE(pGC,pDraw) \
wrap(pGCPriv, pGC, funcs, oldFuncs); \
wrap(pGCPriv, pGC, ops, &xxGCOps)
static void
xxFillSpans(
DrawablePtr pDraw,
GC *pGC,
int nInit,
DDXPointPtr pptInit,
int *pwidthInit,
int fSorted
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nInit) {
DDXPointPtr ppt = pptInit;
int *pwidth = pwidthInit;
int i = nInit;
BoxRec box;
DBG("FillSpans\n");
box.x1 = ppt->x;
box.x2 = box.x1 + *pwidth;
box.y2 = box.y1 = ppt->y;
while(--i) {
ppt++;
pwidthInit++;
if(box.x1 > ppt->x) box.x1 = ppt->x;
if(box.x2 < (ppt->x + *pwidth))
box.x2 = ppt->x + *pwidth;
if(box.y1 > ppt->y) box.y1 = ppt->y;
else if(box.y2 < ppt->y) box.y2 = ppt->y;
}
box.y2++;
(*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
TRANSLATE_AND_ADD_BOX(box, pGC);
} else
(*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
XX_GC_OP_EPILOGUE(pGC, pDraw);
}
static void
xxSetSpans(
DrawablePtr pDraw,
GCPtr pGC,
char *pcharsrc,
DDXPointPtr pptInit,
int *pwidthInit,
int nspans,
int fSorted
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nspans) {
DDXPointPtr ppt = pptInit;
int *pwidth = pwidthInit;
int i = nspans;
BoxRec box;
DBG("SetSpans\n");
box.x1 = ppt->x;
box.x2 = box.x1 + *pwidth;
box.y2 = box.y1 = ppt->y;
while(--i) {
ppt++;
pwidth++;
if(box.x1 > ppt->x) box.x1 = ppt->x;
if(box.x2 < (ppt->x + *pwidth))
box.x2 = ppt->x + *pwidth;
if(box.y1 > ppt->y) box.y1 = ppt->y;
else if(box.y2 < ppt->y) box.y2 = ppt->y;
}
box.y2++;
(*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, pptInit,
pwidthInit, nspans, fSorted);
TRANSLATE_AND_ADD_BOX(box, pGC);
} else
(*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, pptInit,
pwidthInit, nspans, fSorted);
XX_GC_OP_EPILOGUE(pGC, pDraw);
}
static void
xxPutImage(
DrawablePtr pDraw,
GCPtr pGC,
int depth,
int x, int y, int w, int h,
int leftPad,
int format,
char *pImage
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
leftPad, format, pImage);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw)) {
BoxRec box;
DBG("PutImage\n");
box.x1 = x + pDraw->x;
box.x2 = box.x1 + w;
box.y1 = y + pDraw->y;
box.y2 = box.y1 + h;
ADD_BOX(box, pGC);
}
}
static RegionPtr
xxCopyArea(
DrawablePtr pSrc,
DrawablePtr pDst,
GC *pGC,
int srcx, int srcy,
int width, int height,
int dstx, int dsty
){
RegionPtr ret;
XX_GC_OP_PROLOGUE(pGC, pDst);
DBG("xxCopyArea\n");
ret = (*pGC->ops->CopyArea)(pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty);
XX_GC_OP_EPILOGUE(pGC, pDst);
if(IS_VISIBLE(pDst)) {
BoxRec box;
DBG("CopyArea\n");
box.x1 = dstx + pDst->x;
box.x2 = box.x1 + width;
box.y1 = dsty + pDst->y;
box.y2 = box.y1 + height;
ADD_BOX(box, pGC);
}
return ret;
}
static RegionPtr
xxCopyPlane(
DrawablePtr pSrc,
DrawablePtr pDst,
GCPtr pGC,
int srcx, int srcy,
int width, int height,
int dstx, int dsty,
unsigned long bitPlane
){
RegionPtr ret;
XX_GC_OP_PROLOGUE(pGC, pDst);
ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
XX_GC_OP_EPILOGUE(pGC, pDst);
if(IS_VISIBLE(pDst)) {
BoxRec box;
DBG("CopyPlane\n");
box.x1 = dstx + pDst->x;
box.x2 = box.x1 + width;
box.y1 = dsty + pDst->y;
box.y2 = box.y1 + height;
ADD_BOX(box, pGC);
}
return ret;
}
static void
xxPolyPoint(
DrawablePtr pDraw,
GCPtr pGC,
int mode,
int npt,
xPoint *pptInit
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && npt) {
BoxRec box;
DBG("PolyPoint\n");
box.x2 = box.x1 = pptInit->x;
box.y2 = box.y1 = pptInit->y;
/* this could be slow if the points were spread out */
while(--npt) {
pptInit++;
if(box.x1 > pptInit->x) box.x1 = pptInit->x;
else if(box.x2 < pptInit->x) box.x2 = pptInit->x;
if(box.y1 > pptInit->y) box.y1 = pptInit->y;
else if(box.y2 < pptInit->y) box.y2 = pptInit->y;
}
box.x2++;
box.y2++;
TRANSLATE_AND_ADD_BOX(box, pGC);
}
}
static void
xxPolylines(
DrawablePtr pDraw,
GCPtr pGC,
int mode,
int npt,
DDXPointPtr pptInit
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && npt) {
BoxRec box;
int extra = pGC->lineWidth >> 1;
DBG("PolyLine\n");
box.x2 = box.x1 = pptInit->x;
box.y2 = box.y1 = pptInit->y;
if(npt > 1) {
if(pGC->joinStyle == JoinMiter)
extra = 6 * pGC->lineWidth;
else if(pGC->capStyle == CapProjecting)
extra = pGC->lineWidth;
}
if(mode == CoordModePrevious) {
int x = box.x1;
int y = box.y1;
while(--npt) {
pptInit++;
x += pptInit->x;
y += pptInit->y;
if(box.x1 > x) box.x1 = x;
else if(box.x2 < x) box.x2 = x;
if(box.y1 > y) box.y1 = y;
else if(box.y2 < y) box.y2 = y;
}
} else {
while(--npt) {
pptInit++;
if(box.x1 > pptInit->x) box.x1 = pptInit->x;
else if(box.x2 < pptInit->x) box.x2 = pptInit->x;
if(box.y1 > pptInit->y) box.y1 = pptInit->y;
else if(box.y2 < pptInit->y) box.y2 = pptInit->y;
}
}
box.x2++;
box.y2++;
if(extra) {
box.x1 -= extra;
box.x2 += extra;
box.y1 -= extra;
box.y2 += extra;
}
TRANSLATE_AND_ADD_BOX(box, pGC);
}
}
static void
xxPolySegment(
DrawablePtr pDraw,
GCPtr pGC,
int nseg,
xSegment *pSeg
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nseg) {
BoxRec box;
int extra = pGC->lineWidth;
DBG("PolySegment\n");
if(pGC->capStyle != CapProjecting)
extra >>= 1;
if(pSeg->x2 > pSeg->x1) {
box.x1 = pSeg->x1;
box.x2 = pSeg->x2;
} else {
box.x2 = pSeg->x1;
box.x1 = pSeg->x2;
}
if(pSeg->y2 > pSeg->y1) {
box.y1 = pSeg->y1;
box.y2 = pSeg->y2;
} else {
box.y2 = pSeg->y1;
box.y1 = pSeg->y2;
}
while(--nseg) {
pSeg++;
if(pSeg->x2 > pSeg->x1) {
if(pSeg->x1 < box.x1) box.x1 = pSeg->x1;
if(pSeg->x2 > box.x2) box.x2 = pSeg->x2;
} else {
if(pSeg->x2 < box.x1) box.x1 = pSeg->x2;
if(pSeg->x1 > box.x2) box.x2 = pSeg->x1;
}
if(pSeg->y2 > pSeg->y1) {
if(pSeg->y1 < box.y1) box.y1 = pSeg->y1;
if(pSeg->y2 > box.y2) box.y2 = pSeg->y2;
} else {
if(pSeg->y2 < box.y1) box.y1 = pSeg->y2;
if(pSeg->y1 > box.y2) box.y2 = pSeg->y1;
}
}
box.x2++;
box.y2++;
if(extra) {
box.x1 -= extra;
box.x2 += extra;
box.y1 -= extra;
box.y2 += extra;
}
TRANSLATE_AND_ADD_BOX(box, pGC);
}
}
static void
xxPolyRectangle(
DrawablePtr pDraw,
GCPtr pGC,
int nRects,
xRectangle *pRects
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolyRectangle)(pDraw, pGC, nRects, pRects);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nRects)
{
BoxRec box;
int offset1, offset2, offset3;
DBG("PolyRectangle\n");
offset2 = pGC->lineWidth;
if(!offset2) offset2 = 1;
offset1 = offset2 >> 1;
offset3 = offset2 - offset1;
while(nRects--)
{
box.x1 = pRects->x - offset1;
box.y1 = pRects->y - offset1;
box.x2 = box.x1 + pRects->width + offset2;
box.y2 = box.y1 + offset2;
TRANSLATE_AND_ADD_BOX(box, pGC);
box.x1 = pRects->x - offset1;
box.y1 = pRects->y + offset3;
box.x2 = box.x1 + offset2;
box.y2 = box.y1 + pRects->height - offset2;
TRANSLATE_AND_ADD_BOX(box, pGC);
box.x1 = pRects->x + pRects->width - offset1;
box.y1 = pRects->y + offset3;
box.x2 = box.x1 + offset2;
box.y2 = box.y1 + pRects->height - offset2;
TRANSLATE_AND_ADD_BOX(box, pGC);
box.x1 = pRects->x - offset1;
box.y1 = pRects->y + pRects->height - offset1;
box.x2 = box.x1 + pRects->width + offset2;
box.y2 = box.y1 + offset2;
TRANSLATE_AND_ADD_BOX(box, pGC);
pRects++;
}
}
}
static void
xxPolyArc(
DrawablePtr pDraw,
GCPtr pGC,
int narcs,
xArc *parcs
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && narcs) {
int extra = pGC->lineWidth >> 1;
BoxRec box;
DBG("PolyArc\n");
box.x1 = parcs->x;
box.x2 = box.x1 + parcs->width;
box.y1 = parcs->y;
box.y2 = box.y1 + parcs->height;
/* should I break these up instead ? */
while(--narcs) {
parcs++;
if(box.x1 > parcs->x) box.x1 = parcs->x;
if(box.x2 < (parcs->x + parcs->width))
box.x2 = parcs->x + parcs->width;
if(box.y1 > parcs->y) box.y1 = parcs->y;
if(box.y2 < (parcs->y + parcs->height))
box.y2 = parcs->y + parcs->height;
}
if(extra) {
box.x1 -= extra;
box.x2 += extra;
box.y1 -= extra;
box.y2 += extra;
}
box.x2++;
box.y2++;
TRANSLATE_AND_ADD_BOX(box, pGC);
}
}
static void
xxFillPolygon(
DrawablePtr pDraw,
GCPtr pGC,
int shape,
int mode,
int count,
DDXPointPtr pptInit
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && (count > 2)) {
DDXPointPtr ppt = pptInit;
int i = count;
BoxRec box;
DBG("FillPolygon\n");
box.x2 = box.x1 = ppt->x;
box.y2 = box.y1 = ppt->y;
if(mode != CoordModeOrigin) {
int x = box.x1;
int y = box.y1;
while(--i) {
ppt++;
x += ppt->x;
y += ppt->y;
if(box.x1 > x) box.x1 = x;
else if(box.x2 < x) box.x2 = x;
if(box.y1 > y) box.y1 = y;
else if(box.y2 < y) box.y2 = y;
}
} else {
while(--i) {
ppt++;
if(box.x1 > ppt->x) box.x1 = ppt->x;
else if(box.x2 < ppt->x) box.x2 = ppt->x;
if(box.y1 > ppt->y) box.y1 = ppt->y;
else if(box.y2 < ppt->y) box.y2 = ppt->y;
}
}
box.x2++;
box.y2++;
(*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, pptInit);
TRANSLATE_AND_ADD_BOX(box, pGC);
} else
(*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, pptInit);
XX_GC_OP_EPILOGUE(pGC, pDraw);
}
static void
xxPolyFillRect(
DrawablePtr pDraw,
GCPtr pGC,
int nRectsInit,
xRectangle *pRectsInit
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nRectsInit) {
BoxRec box;
xRectangle *pRects = pRectsInit;
int nRects = nRectsInit;
DBG("PolyFillRect\n");
box.x1 = pRects->x;
box.x2 = box.x1 + pRects->width;
box.y1 = pRects->y;
box.y2 = box.y1 + pRects->height;
while(--nRects) {
pRects++;
if(box.x1 > pRects->x) box.x1 = pRects->x;
if(box.x2 < (pRects->x + pRects->width))
box.x2 = pRects->x + pRects->width;
if(box.y1 > pRects->y) box.y1 = pRects->y;
if(box.y2 < (pRects->y + pRects->height))
box.y2 = pRects->y + pRects->height;
}
/* cfb messes with the pRectsInit so we have to do our
calculations first */
(*pGC->ops->PolyFillRect)(pDraw, pGC, nRectsInit, pRectsInit);
TRANSLATE_AND_ADD_BOX(box, pGC);
} else
(*pGC->ops->PolyFillRect)(pDraw, pGC, nRectsInit, pRectsInit);
XX_GC_OP_EPILOGUE(pGC, pDraw);
}
static void
xxPolyFillArc(
DrawablePtr pDraw,
GCPtr pGC,
int narcs,
xArc *parcs
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && narcs) {
BoxRec box;
DBG("PolyFillArc\n");
box.x1 = parcs->x;
box.x2 = box.x1 + parcs->width;
box.y1 = parcs->y;
box.y2 = box.y1 + parcs->height;
/* should I break these up instead ? */
while(--narcs) {
parcs++;
if(box.x1 > parcs->x) box.x1 = parcs->x;
if(box.x2 < (parcs->x + parcs->width))
box.x2 = parcs->x + parcs->width;
if(box.y1 > parcs->y) box.y1 = parcs->y;
if(box.y2 < (parcs->y + parcs->height))
box.y2 = parcs->y + parcs->height;
}
TRANSLATE_AND_ADD_BOX(box, pGC);
}
}
static int
xxPolyText8(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
char *chars
){
int width;
XX_GC_OP_PROLOGUE(pGC, pDraw);
width = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
XX_GC_OP_EPILOGUE(pGC, pDraw);
width -= x;
if(IS_VISIBLE(pDraw) && (width > 0)) {
BoxRec box;
DBG("PolyText8\n");
/* ugh */
box.x1 = pDraw->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
box.x2 = pDraw->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
if(count > 1) {
if(width > 0) box.x2 += width;
else box.x1 += width;
}
box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
ADD_BOX(box, pGC);
}
return (width + x);
}
static int
xxPolyText16(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
unsigned short *chars
){
int width;
XX_GC_OP_PROLOGUE(pGC, pDraw);
width = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
XX_GC_OP_EPILOGUE(pGC, pDraw);
width -= x;
if(IS_VISIBLE(pDraw) && (width > 0)) {
BoxRec box;
DBG("PolyText16\n");
/* ugh */
box.x1 = pDraw->x + x + FONTMINBOUNDS(pGC->font, leftSideBearing);
box.x2 = pDraw->x + x + FONTMAXBOUNDS(pGC->font, rightSideBearing);
if(count > 1) {
if(width > 0) box.x2 += width;
else box.x1 += width;
}
box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
ADD_BOX(box, pGC);
}
return (width + x);
}
static void
xxImageText8(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
char *chars
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && count) {
int top, bot, Min, Max;
BoxRec box;
DBG("ImageText8\n");
top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
if(Min > 0) Min = 0;
Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
if(Max < 0) Max = 0;
/* ugh */
box.x1 = pDraw->x + x + Min +
FONTMINBOUNDS(pGC->font, leftSideBearing);
box.x2 = pDraw->x + x + Max +
FONTMAXBOUNDS(pGC->font, rightSideBearing);
box.y1 = pDraw->y + y - top;
box.y2 = pDraw->y + y + bot;
ADD_BOX(box, pGC);
}
}
static void
xxImageText16(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
unsigned short *chars
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && count) {
int top, bot, Min, Max;
BoxRec box;
DBG("ImageText16\n");
top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
Min = count * FONTMINBOUNDS(pGC->font, characterWidth);
if(Min > 0) Min = 0;
Max = count * FONTMAXBOUNDS(pGC->font, characterWidth);
if(Max < 0) Max = 0;
/* ugh */
box.x1 = pDraw->x + x + Min +
FONTMINBOUNDS(pGC->font, leftSideBearing);
box.x2 = pDraw->x + x + Max +
FONTMAXBOUNDS(pGC->font, rightSideBearing);
box.y1 = pDraw->y + y - top;
box.y2 = pDraw->y + y + bot;
ADD_BOX(box, pGC);
}
}
static void
xxImageGlyphBlt(
DrawablePtr pDraw,
GCPtr pGC,
int x, int y,
unsigned int nglyph,
CharInfoPtr *ppci,
void * pglyphBase
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->ImageGlyphBlt)(pDraw, pGC, x, y, nglyph,
ppci, pglyphBase);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nglyph) {
int top, bot, width = 0;
BoxRec box;
DBG("ImageGlyphBlt\n");
top = max(FONTMAXBOUNDS(pGC->font, ascent), FONTASCENT(pGC->font));
bot = max(FONTMAXBOUNDS(pGC->font, descent), FONTDESCENT(pGC->font));
box.x1 = ppci[0]->metrics.leftSideBearing;
if(box.x1 > 0) box.x1 = 0;
box.x2 = ppci[nglyph - 1]->metrics.rightSideBearing -
ppci[nglyph - 1]->metrics.characterWidth;
if(box.x2 < 0) box.x2 = 0;
box.x2 += pDraw->x + x;
box.x1 += pDraw->x + x;
while(nglyph--) {
width += (*ppci)->metrics.characterWidth;
ppci++;
}
if(width > 0)
box.x2 += width;
else
box.x1 += width;
box.y1 = pDraw->y + y - top;
box.y2 = pDraw->y + y + bot;
ADD_BOX(box, pGC);
}
}
static void
xxPolyGlyphBlt(
DrawablePtr pDraw,
GCPtr pGC,
int x, int y,
unsigned int nglyph,
CharInfoPtr *ppci,
void * pglyphBase
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PolyGlyphBlt)(pDraw, pGC, x, y, nglyph,
ppci, pglyphBase);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw) && nglyph) {
BoxRec box;
DBG("PolyGlyphBlt\n");
/* ugh */
box.x1 = pDraw->x + x + ppci[0]->metrics.leftSideBearing;
box.x2 = pDraw->x + x + ppci[nglyph - 1]->metrics.rightSideBearing;
if(nglyph > 1) {
int width = 0;
while(--nglyph) {
width += (*ppci)->metrics.characterWidth;
ppci++;
}
if(width > 0) box.x2 += width;
else box.x1 += width;
}
box.y1 = pDraw->y + y - FONTMAXBOUNDS(pGC->font, ascent);
box.y2 = pDraw->y + y + FONTMAXBOUNDS(pGC->font, descent);
ADD_BOX(box, pGC);
}
}
static void
xxPushPixels(
GCPtr pGC,
PixmapPtr pBitMap,
DrawablePtr pDraw,
int dx, int dy, int xOrg, int yOrg
){
XX_GC_OP_PROLOGUE(pGC, pDraw);
(*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
XX_GC_OP_EPILOGUE(pGC, pDraw);
if(IS_VISIBLE(pDraw)) {
BoxRec box;
DBG("PushPixels\n");
box.x1 = xOrg + pDraw->x;
box.x2 = box.x1 + dx;
box.y1 = yOrg + pDraw->y;
box.y2 = box.y1 + dy;
ADD_BOX(box, pGC);
}
}
#ifdef RENDER
#define RENDER_MAKE_BOX(pDrawable,X,Y,W,H) { \
box.x1 = X + pDrawable->x; \
box.x2 = X + pDrawable->x + W; \
box.y1 = Y + pDrawable->y; \
box.y2 = Y + pDrawable->y + H; \
}
#define RENDER_ADD_BOX(pScreen,box) {\
if (BOX_NOT_EMPTY(box)) { \
RegionRec region; \
xxScrPriv(pScreen);\
ScreenPtr pScreen = pScreen;\
RegionInit(&region, &box, 1); \
PRINT_RECTS(pScrPriv->region);\
RegionUnion(&pScrPriv->region,&pScrPriv->region,&region);\
PRINT_RECTS(pScrPriv->region);\
RegionUninit(&region);\
}\
}
static void
xxComposite (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask,
INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
{
ScreenPtr pScreen = pDst->pDrawable->pScreen;
PictureScreenPtr ps = GetPictureScreen(pScreen);
xxScrPriv(pScreen);
BoxRec box;
unwrap (pScrPriv, ps, Composite);
(*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask,
xDst, yDst, width, height);
wrap (pScrPriv, ps, Composite, xxComposite);
if (pDst->pDrawable->type == DRAWABLE_WINDOW) {
RENDER_MAKE_BOX(pDst->pDrawable, xDst, yDst, width, height);
RENDER_ADD_BOX(pScreen,box);
}
}
static void
xxGlyphs (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
GlyphListPtr list, GlyphPtr *glyphs)
{
ScreenPtr pScreen = pDst->pDrawable->pScreen;
PictureScreenPtr ps = GetPictureScreen(pScreen);
xxScrPriv(pScreen);
int x, y;
int n;
GlyphPtr glyph;
BoxRec box;
unwrap (pScrPriv, ps, Glyphs);
(*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc,
nlist, list, glyphs);
wrap (pScrPriv, ps, Glyphs, xxGlyphs);
if (pDst->pDrawable->type == DRAWABLE_WINDOW)
{
x = xSrc;
y = ySrc;
while (nlist--)
{
x += list->xOff;
y += list->yOff;
n = list->len;
while (n--)
{
glyph = *glyphs++;
RENDER_MAKE_BOX(pDst->pDrawable,
x - glyph->info.x, y - glyph->info.y,
glyph->info.width, glyph->info.height);
RENDER_ADD_BOX(pScreen,box);
x += glyph->info.xOff;
y += glyph->info.yOff;
}
list++;
}
}
}
#endif
void
xxPrintVisuals(void)
{
int k,i,j;
DepthPtr pDepth;
VisualPtr pVisual;
for (k = 0; k < screenInfo.numScreens; k++) {
ScreenPtr pScreen = screenInfo.screens[k];
pDepth = pScreen->allowedDepths;
for (i = 0; i < pScreen->numDepths; i++, pDepth++)
for (j = 0; j < pDepth->numVids; j++) {
ErrorF("depth: %i vid: 0x%lx\n",
pDepth->depth, pDepth->vids[j]);
}
pVisual = pScreen->visuals;
for (i = 0; i < pScreen->numVisuals; i++, pVisual++)
ErrorF("vid: 0x%x rm: 0x%lx gm: 0x%lx bm: 0x%lx\n",
(unsigned int)pVisual->vid,
pVisual->redMask,
pVisual->greenMask,
pVisual->blueMask);
}
}
#ifndef _FB_XX_H_
# define _FB_XX_H_
typedef void (*xxSyncFunc)(ScreenPtr);
extern Bool xxSetup(ScreenPtr pScreen, int myDepth,
int baseDepth, char *addr, xxSyncFunc sync);
extern void xxPrintVisuals(void);
#endif /* _FB_XX_H_ */
......@@ -237,7 +237,7 @@ fbPushPixels (GCPtr pGC,
FbStip *stip;
FbStride stipStride;
int stipBpp;
int stipXoff, stipYoff; /* Assumed to be zero */
_X_UNUSED int stipXoff, stipYoff; /* Assumed to be zero */
fbGetStipDrawable (&pBitmap->drawable, stip, stipStride, stipBpp, stipXoff, stipYoff);
......
......@@ -251,7 +251,7 @@ fbFillRegionTiled (DrawablePtr pDrawable,
FbBits *tile;
FbStride tileStride;
int tileBpp;
int tileXoff, tileYoff; /* XXX assumed to be zero */
_X_UNUSED int tileXoff, tileYoff; /* XXX assumed to be zero */
int tileWidth, tileHeight;
int n = RegionNumRects(pRegion);
BoxPtr pbox = RegionRects(pRegion);
......
......@@ -1380,7 +1380,7 @@ static void nxagentParseOptions(char *name, char *value)
sleep_parse = UINT_MAX;
fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] "
"out of range, clamped to [%u].\n",
"out of range, clamped to [%lu].\n",
validateString(value), validateString(name), sleep_parse);
}
......@@ -1389,7 +1389,7 @@ static void nxagentParseOptions(char *name, char *value)
sleep_parse = 0;
fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] "
"out of range, clamped to [%u].\n",
"out of range, clamped to [%lu].\n",
validateString(value), validateString(name), sleep_parse);
}
......
......@@ -142,9 +142,9 @@ void nxagentInitRandRExtension(ScreenPtr pScreen)
/* only fake provider support in nx-X11, so far */
pRandRScrPriv -> provider = RRProviderCreate(pScreen, "default", 7);
pRandRScrPriv -> rrProviderSetOutputSource = NULL;
pRandRScrPriv -> rrProviderSetOffloadSink;
pRandRScrPriv -> rrProviderGetProperty;
pRandRScrPriv -> rrProviderSetProperty;
pRandRScrPriv -> rrProviderSetOffloadSink = NULL;
pRandRScrPriv -> rrProviderGetProperty = NULL;
pRandRScrPriv -> rrProviderSetProperty = NULL;
#endif
#if RANDR_13_INTERFACE
......
......@@ -76,7 +76,7 @@ extern void fbPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
char *pImage);
void
ShmExtensionInit(INITARGS)
ShmExtensionInit(void)
{
ExtensionEntry *extEntry;
int i;
......
......@@ -457,6 +457,13 @@ extern void AbortDDX(void);
extern void ddxGiveUp(void);
extern int TimeSinceLastInputEvent(void);
#ifndef HAVE_STRLCPY
extern _X_EXPORT size_t
strlcpy(char *dst, const char *src, size_t siz);
extern _X_EXPORT size_t
strlcat(char *dst, const char *src, size_t siz);
#endif
/* Logging. */
typedef enum _LogParameter {
XLOG_FLUSH,
......
......@@ -1920,7 +1920,7 @@ miComputeArcs (
int arcsJoin;
int selfJoin;
int iDash = 0, dashRemaining;
int iDash = 0, dashRemaining = 0;
int iDashStart = 0, dashRemainingStart = 0, iphaseStart;
int startAngle, spanAngle, endAngle, backwards = 0;
int prevDashAngle, dashAngle;
......
......@@ -2573,11 +2573,9 @@ miBSAllocate(pWin)
WindowPtr pWin;
{
register miBSWindowPtr pBackingStore;
register ScreenPtr pScreen;
if (pWin->drawable.pScreen->backingStoreSupport == NotUseful)
return;
pScreen = pWin->drawable.pScreen;
if (!(pBackingStore = (miBSWindowPtr)pWin->backStorage))
{
......@@ -2674,9 +2672,6 @@ miBSFree(pWin)
WindowPtr pWin;
{
miBSWindowPtr pBackingStore;
register ScreenPtr pScreen;
pScreen = pWin->drawable.pScreen;
pBackingStore = (miBSWindowPtr)pWin->backStorage;
if (pBackingStore)
......
......@@ -151,7 +151,7 @@ extern Bool noXvExtension;
#ifndef XFree86LOADER
#define INITARGS void
typedef void (*InitExtension)(INITARGS);
typedef void (*InitExtension)(void);
#else /* XFree86Loader */
#include "loaderProcs.h"
#endif
......@@ -183,95 +183,95 @@ typedef void (*InitExtension)(INITARGS);
/* FIXME: this whole block of externs should be from the appropriate headers */
#ifdef XTESTEXT1
extern void XTestExtension1Init(INITARGS);
extern void XTestExtension1Init(void);
#endif
#ifdef SHAPE
extern void ShapeExtensionInit(INITARGS);
extern void ShapeExtensionInit(void);
#endif
#ifdef MITSHM
extern void ShmExtensionInit(INITARGS);
extern void ShmExtensionInit(void);
#endif
#ifdef PANORAMIX
extern void PanoramiXExtensionInit(INITARGS);
extern void PanoramiXExtensionInit(void);
#endif
#ifdef XINPUT
extern void XInputExtensionInit(INITARGS);
extern void XInputExtensionInit(void);
#endif
#ifdef XTEST
extern void XTestExtensionInit(INITARGS);
extern void XTestExtensionInit(void);
#endif
#ifdef BIGREQS
extern void BigReqExtensionInit(INITARGS);
extern void BigReqExtensionInit(void);
#endif
#ifdef XIDLE
extern void XIdleExtensionInit(INITARGS);
extern void XIdleExtensionInit(void);
#endif
#ifdef SCREENSAVER
extern void ScreenSaverExtensionInit (INITARGS);
extern void ScreenSaverExtensionInit (void);
#endif
#ifdef XV
extern void XvExtensionInit(INITARGS);
extern void XvMCExtensionInit(INITARGS);
extern void XvExtensionInit(void);
extern void XvMCExtensionInit(void);
#endif
#ifdef XSYNC
extern void SyncExtensionInit(INITARGS);
extern void SyncExtensionInit(void);
#endif
#ifdef XKB
extern void XkbExtensionInit(INITARGS);
extern void XkbExtensionInit(void);
#endif
#ifdef XCMISC
extern void XCMiscExtensionInit(INITARGS);
extern void XCMiscExtensionInit(void);
#endif
#ifdef XRECORD
extern void RecordExtensionInit(INITARGS);
extern void RecordExtensionInit(void);
#endif
#ifdef DBE
extern void DbeExtensionInit(INITARGS);
extern void DbeExtensionInit(void);
#endif
#ifdef XCSECURITY
extern void SecurityExtensionInit(INITARGS);
extern void SecurityExtensionInit(void);
#endif
#ifdef XF86BIGFONT
extern void XFree86BigfontExtensionInit(INITARGS);
extern void XFree86BigfontExtensionInit(void);
#endif
#ifdef GLXEXT
#ifndef __DARWIN__
extern void GlxExtensionInit(INITARGS);
extern void GlxExtensionInit(void);
extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
#else
extern void DarwinGlxExtensionInit(INITARGS);
extern void DarwinGlxExtensionInit(void);
extern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *);
#endif
#endif
#ifdef XF86DRI
extern void XFree86DRIExtensionInit(INITARGS);
extern void XFree86DRIExtensionInit(void);
#endif
#ifdef DPMSExtension
extern void DPMSExtensionInit(INITARGS);
extern void DPMSExtensionInit(void);
#endif
#ifdef DPSEXT
extern void DPSExtensionInit(INITARGS);
extern void DPSExtensionInit(void);
#endif
#ifdef RENDER
extern void RenderExtensionInit(INITARGS);
extern void RenderExtensionInit(void);
#endif
#ifdef RANDR
extern void RRExtensionInit(INITARGS);
extern void RRExtensionInit(void);
#endif
#ifdef RES
extern void ResExtensionInit(INITARGS);
extern void ResExtensionInit(void);
#endif
#ifdef DMXEXT
extern void DMXExtensionInit(INITARGS);
extern void DMXExtensionInit(void);
#endif
#ifdef XFIXES
extern void XFixesExtensionInit(INITARGS);
extern void XFixesExtensionInit(void);
#endif
#ifdef DAMAGE
extern void DamageExtensionInit(INITARGS);
extern void DamageExtensionInit(void);
#endif
#ifdef COMPOSITE
extern void CompositeExtensionInit(INITARGS);
extern void CompositeExtensionInit(void);
#endif
/* The following is only a small first step towards run-time
......
......@@ -2029,7 +2029,6 @@ HasUnderlayChildren(WindowPtr pWin)
static Bool
CollectUnderlayChildrenRegions(WindowPtr pWin, RegionPtr pReg)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
WindowPtr pChild;
miOverlayTreePtr pTree;
Bool hasUnderlay;
......
......@@ -275,14 +275,12 @@ miChangeSaveUnder(pWin, first)
* Used when pWin was restacked */
{
RegionRec rgn; /* Area obscured by saveUnder windows */
register ScreenPtr pScreen;
Bool res;
if (!deltaSaveUndersViewable && !numSaveUndersViewable)
return FALSE;
numSaveUndersViewable += deltaSaveUndersViewable;
deltaSaveUndersViewable = 0;
pScreen = pWin->drawable.pScreen;
RegionNull(&rgn);
res = miCheckSubSaveUnder (pWin->parent,
pWin->saveUnder ? first : pWin->nextSib,
......@@ -368,9 +366,6 @@ miMarkOverlappedWindows(pWin, pFirst, ppLayerWin)
register WindowPtr pChild, pLast;
Bool anyMarked = FALSE;
MarkWindowProcPtr MarkWindow = pWin->drawable.pScreen->MarkWindow;
ScreenPtr pScreen;
pScreen = pWin->drawable.pScreen;
/* single layered systems are easy */
if (ppLayerWin) *ppLayerWin = pWin;
......@@ -453,11 +448,8 @@ miHandleValidateExposures(pWin)
{
register WindowPtr pChild;
register ValidatePtr val;
ScreenPtr pScreen;
WindowExposuresProcPtr WindowExposures;
pScreen = pWin->drawable.pScreen;
pChild = pWin;
WindowExposures = pChild->drawable.pScreen->WindowExposures;
while (1)
......@@ -581,12 +573,10 @@ miRecomputeExposures (
register WindowPtr pWin,
void * value) /* must conform to VisitWindowProcPtr */
{
register ScreenPtr pScreen;
RegionPtr pValid = (RegionPtr)value;
if (pWin->valdata)
{
pScreen = pWin->drawable.pScreen;
/*
* compute exposed regions of this window
*/
......@@ -1186,11 +1176,8 @@ miMarkUnrealizedWindow(pChild, pWin, fromConfigure)
void
miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth)
{
ScreenPtr pScreen;
WindowPtr pChild;
pScreen = pWin->drawable.pScreen;
for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib)
{
if (pChild->drawable.depth == depth)
......
......@@ -720,7 +720,7 @@ miZeroPolyArc(pDraw, pGC, narcs, parcs)
register int n, maxw = 0;
register xArc *arc;
register int i;
DDXPointPtr points, pts, oddPts;
DDXPointPtr points, pts, oddPts = NULL;
register DDXPointPtr pt;
int numPts;
Bool dospans;
......
......@@ -72,9 +72,15 @@ SOFTWARE.
#endif
#include <nx-X11/X.h>
#include <nx-X11/Xproto.h>
#define XSERV_t
#define TRANS_SERVER
#define TRANS_REOPEN
#ifndef XSERV_t
# define XSERV_t
#endif
#ifndef TRANS_SERVER
# define TRANS_SERVER
#endif
#ifndef TRANS_REOPEN
# define TRANS_REOPEN
#endif
#include <nx-X11/Xtrans/Xtrans.h>
#include <errno.h>
#include <signal.h>
......@@ -682,7 +688,6 @@ ClientAuthorized(ClientPtr client,
XID auth_id;
char *reason = NULL;
XtransConnInfo trans_conn;
int restore_trans_conn = 0;
priv = (OsCommPtr)client->osPrivate;
trans_conn = priv->trans_conn;
......
......@@ -107,6 +107,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
#include <stdlib.h> /* for malloc() */
#include <errno.h>
#include "input.h"
#include "site.h"
#include "opaque.h"
......@@ -561,15 +562,6 @@ VAuditF(const char *f, va_list args)
prefix = AuditPrefix();
len = vsnprintf(buf, sizeof(buf), f, args);
#if 1
/* XXX Compressing duplicated messages is temporarily disabled to
* work around bugzilla 964:
* https://freedesktop.org/bugzilla/show_bug.cgi?id=964
*/
ErrorF("%s%s", prefix != NULL ? prefix : "", buf);
oldlen = -1;
nrepeat = 0;
#else
if (len == oldlen && strcmp(buf, oldbuf) == 0) {
/* Message already seen */
nrepeat++;
......@@ -583,7 +575,6 @@ VAuditF(const char *f, va_list args)
nrepeat = 0;
auditTimer = TimerSet(auditTimer, 0, AUDIT_TIMEOUT, AuditFlush, NULL);
}
#endif
if (prefix != NULL)
free(prefix);
}
......
......@@ -411,7 +411,9 @@ LockServer(void)
if (lfd < 0)
FatalError("Could not create lock file in %s\n", tmp);
(void) sprintf(pid_str, "%10ld\n", (long)getpid());
(void) write(lfd, pid_str, 11);
if (write(lfd, pid_str, 11) != 11)
FatalError("Could not write pid to lock file in %s\n", tmp);
#ifndef __UNIXOS2__
#ifndef USE_CHMOD
(void) fchmod(lfd, 0444);
......
......@@ -70,9 +70,7 @@ XdmAuthenticationValidator (ARRAY8Ptr privateData, ARRAY8Ptr incomingData,
XdmcpUnwrap (incomingData->data, &privateKey,
incomingData->data,incomingData->length);
switch (packet_type)
{
case ACCEPT:
if (packet_type == ACCEPT) {
if (incomingData->length != 8)
return FALSE;
incoming = (XdmAuthKeyPtr) incomingData->data;
......@@ -88,9 +86,7 @@ XdmAuthenticationGenerator (ARRAY8Ptr privateData, ARRAY8Ptr outgoingData,
{
outgoingData->length = 0;
outgoingData->data = 0;
switch (packet_type)
{
case REQUEST:
if (packet_type == REQUEST) {
if (XdmcpAllocARRAY8 (outgoingData, 8))
XdmcpWrap (&rho, &privateKey, outgoingData->data, 8);
}
......
......@@ -10,7 +10,7 @@ extern Bool noTestExtensions;
static MODULESETUPPROTO(recordSetup);
extern void RecordExtensionInit(INITARGS);
extern void RecordExtensionInit(void);
ExtensionModule recordExt = {
RecordExtensionInit,
......
......@@ -129,7 +129,6 @@ miValidatePicture (PicturePtr pPicture,
Mask mask)
{
DrawablePtr pDrawable = pPicture->pDrawable;
ScreenPtr pScreen = pDrawable->pScreen;
if ((mask & (CPClipXOrigin|CPClipYOrigin|CPClipMask|CPSubwindowMode)) ||
(pDrawable->serialNumber != (pPicture->serialNumber & DRAWABLE_SERIAL_BITS)))
......
......@@ -754,14 +754,12 @@ ProcXFixesSetPictureClipRegion (ClientPtr client)
PicturePtr pPicture;
RegionPtr pRegion;
ScreenPtr pScreen;
PictureScreenPtr ps;
REQUEST(xXFixesSetPictureClipRegionReq);
REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
RenderErrBase + BadPicture);
pScreen = pPicture->pDrawable->pScreen;
ps = GetPictureScreen (pScreen);
VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, SecurityReadAccess);
return SetPictureClipRegion (pPicture, stuff->xOrigin, stuff->yOrigin,
......
......@@ -2277,7 +2277,7 @@ ProcXkbSetMap(ClientPtr client)
XkbDescPtr xkb;
XkbChangesRec change;
XkbEventCauseRec cause;
int nTypes,nActions,error;
int nTypes = 0,nActions,error;
char * tmp;
CARD8 mapWidths[XkbMaxLegalKeyCode+1];
CARD16 symsPerKey[XkbMaxLegalKeyCode+1];
......@@ -6200,7 +6200,7 @@ XkbResetProc(ExtensionEntry *extEntry)
}
void
XkbExtensionInit(INITARGS)
XkbExtensionInit(void)
{
ExtensionEntry *extEntry;
......
......@@ -32,6 +32,8 @@ extern int ProcXkbSetDebuggingFlags(ClientPtr client);
extern int XkbSetRepeatRate(DeviceIntPtr dev, int timeout, int interval, int major, int minor);
extern int XkbGetRepeatRate(DeviceIntPtr dev, int *timeout, int *interval);
extern void XkbExtensionInit(void);
extern Status XkbComputeGetIndicatorMapReplySize(
XkbIndicatorPtr indicators,
xkbGetIndicatorMapReply *rep);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment