[PATCH 16/37] Move DGA from extmod to built-in

Alan Hourihane alanh at fairlite.co.uk
Tue Jun 28 12:55:40 PDT 2011


Just remembered, if --disable-dga when configuring still works, then I'm
fine :-)

Alan.

On 06/28/11 20:53, Alan Hourihane wrote:
> Yack !
>
> Do we really need to keep DGA in the core server ???
>
> If so, then at least a build time option to turn it off.
>
> Alan.
>
> On 06/28/11 20:27, Daniel Stone wrote:
>> Rather than leave DGA languishing in extmod, move it to be a built-in
>> extension.  As it's quite specific to the Xorg DDX, just move it
>> sideways to the rest of the DGA code in hw/xfree86/common, and
>> initialise it from xf86ExtensionInit, rather than miinitext.
>>
>> Signed-off-by: Daniel Stone <daniel at fooishbar.org>
>> ---
>>  hw/xfree86/common/dgaproc.h           |  142 +++++
>>  hw/xfree86/common/xf86DGA.c           | 1030 ++++++++++++++++++++++++++++++++
>>  hw/xfree86/common/xf86Extensions.c    |   21 +
>>  hw/xfree86/dixmods/extmod/Makefile.am |    7 -
>>  hw/xfree86/dixmods/extmod/dgaproc.h   |  142 -----
>>  hw/xfree86/dixmods/extmod/xf86dga2.c  | 1035 ---------------------------------
>>  hw/xfree86/sdksyms.sh                 |    4 +-
>>  7 files changed, 1195 insertions(+), 1186 deletions(-)
>>  create mode 100644 hw/xfree86/common/dgaproc.h
>>  delete mode 100644 hw/xfree86/dixmods/extmod/dgaproc.h
>>  delete mode 100644 hw/xfree86/dixmods/extmod/xf86dga2.c
>>
>> diff --git a/hw/xfree86/common/dgaproc.h b/hw/xfree86/common/dgaproc.h
>> new file mode 100644
>> index 0000000..a13a517
>> --- /dev/null
>> +++ b/hw/xfree86/common/dgaproc.h
>> @@ -0,0 +1,142 @@
>> +
>> +#ifndef __DGAPROC_H
>> +#define __DGAPROC_H
>> +
>> +#include <X11/Xproto.h>
>> +#include "pixmap.h"
>> +
>> +#define DGA_CONCURRENT_ACCESS	0x00000001
>> +#define DGA_FILL_RECT		0x00000002
>> +#define DGA_BLIT_RECT		0x00000004
>> +#define DGA_BLIT_RECT_TRANS	0x00000008
>> +#define DGA_PIXMAP_AVAILABLE	0x00000010
>> +
>> +#define DGA_INTERLACED		0x00010000
>> +#define DGA_DOUBLESCAN		0x00020000
>> +
>> +#define DGA_FLIP_IMMEDIATE	0x00000001
>> +#define DGA_FLIP_RETRACE	0x00000002
>> +
>> +#define DGA_COMPLETED		0x00000000
>> +#define DGA_PENDING		0x00000001
>> +
>> +#define DGA_NEED_ROOT		0x00000001
>> +
>> +typedef struct {
>> +   int num;		/* A unique identifier for the mode (num > 0) */
>> +   char *name;		/* name of mode given in the XF86Config */
>> +   int VSync_num;
>> +   int VSync_den;
>> +   int flags;		/* DGA_CONCURRENT_ACCESS, etc... */
>> +   int imageWidth;	/* linear accessible portion (pixels) */
>> +   int imageHeight;
>> +   int pixmapWidth;	/* Xlib accessible portion (pixels) */
>> +   int pixmapHeight;	/* both fields ignored if no concurrent access */
>> +   int bytesPerScanline; 
>> +   int byteOrder;	/* MSBFirst, LSBFirst */
>> +   int depth;		
>> +   int bitsPerPixel;
>> +   unsigned long red_mask;
>> +   unsigned long green_mask;
>> +   unsigned long blue_mask;
>> +   short visualClass;
>> +   int viewportWidth;
>> +   int viewportHeight;
>> +   int xViewportStep;	/* viewport position granularity */
>> +   int yViewportStep;
>> +   int maxViewportX;	/* max viewport origin */
>> +   int maxViewportY;
>> +   int viewportFlags;	/* types of page flipping possible */
>> +   int offset;
>> +   int reserved1;
>> +   int reserved2;
>> +} XDGAModeRec, *XDGAModePtr;
>> +
>> +/* DDX interface */
>> +
>> +extern _X_EXPORT int
>> +DGASetMode(
>> +   int Index,
>> +   int num,
>> +   XDGAModePtr mode,
>> +   PixmapPtr *pPix
>> +);
>> +
>> +extern _X_EXPORT void
>> +DGASetInputMode(
>> +   int Index,
>> +   Bool keyboard,
>> +   Bool mouse
>> +);
>> +
>> +extern _X_EXPORT void
>> +DGASelectInput(
>> +   int Index,
>> +   ClientPtr client,
>> +   long mask
>> +);
>> +
>> +extern _X_EXPORT Bool DGAAvailable(int Index);
>> +extern _X_EXPORT Bool DGAActive(int Index);
>> +extern _X_EXPORT void DGAShutdown(void);
>> +extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap);
>> +extern _X_EXPORT int DGAGetViewportStatus(int Index);
>> +extern _X_EXPORT int DGASync(int Index);
>> +
>> +extern _X_EXPORT int
>> +DGAFillRect(
>> +   int Index,
>> +   int x, int y, int w, int h,
>> +   unsigned long color
>> +);
>> +
>> +extern _X_EXPORT int
>> +DGABlitRect(
>> +   int Index,
>> +   int srcx, int srcy, 
>> +   int w, int h, 
>> +   int dstx, int dsty
>> +);
>> +
>> +extern _X_EXPORT int
>> +DGABlitTransRect(
>> +   int Index,
>> +   int srcx, int srcy, 
>> +   int w, int h, 
>> +   int dstx, int dsty,
>> +   unsigned long color
>> +);
>> +
>> +extern _X_EXPORT int
>> +DGASetViewport(
>> +   int Index,
>> +   int x, int y,
>> +   int mode
>> +); 
>> +
>> +extern _X_EXPORT int DGAGetModes(int Index);
>> +extern _X_EXPORT int DGAGetOldDGAMode(int Index);
>> +
>> +extern _X_EXPORT int DGAGetModeInfo(int Index, XDGAModePtr mode, int num);
>> +
>> +extern _X_EXPORT Bool DGAVTSwitch(void);
>> +extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, int button,
>> +                         int is_down);
>> +extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy);
>> +extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, int key_code, int is_down);
>> +	    
>> +extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, unsigned char **mem,
>> +			int *size, int *offset, int *flags);
>> +extern _X_EXPORT void DGACloseFramebuffer(int Index);
>> +extern _X_EXPORT Bool DGAChangePixmapMode(int Index, int *x, int *y, int mode);
>> +extern _X_EXPORT int DGACreateColormap(int Index, ClientPtr client, int id, int mode,
>> +			int alloc);
>> +
>> +extern _X_EXPORT unsigned char DGAReqCode;
>> +extern _X_EXPORT int DGAErrorBase;
>> +extern _X_EXPORT int DGAEventBase;
>> +extern _X_EXPORT int *XDGAEventBase;
>> +
>> +
>> +
>> +#endif /* __DGAPROC_H */
>> diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
>> index 74eb739..0e3f53d 100644
>> --- a/hw/xfree86/common/xf86DGA.c
>> +++ b/hw/xfree86/common/xf86DGA.c
>> @@ -1,4 +1,6 @@
>>  /*
>> + * Copyright (c) 1995  Jon Tombs
>> + * Copyright (c) 1995, 1996, 1999  XFree86 Inc
>>   * Copyright (c) 1998-2002 by The XFree86 Project, Inc.
>>   *
>>   * Permission is hereby granted, free of charge, to any person obtaining a
>> @@ -27,10 +29,20 @@
>>   * Written by Mark Vojkovich
>>   */
>>  
>> +/*
>> + * This is quite literally just two files glued together:
>> + * hw/xfree86/common/xf86DGA.c is the first part, and
>> + * hw/xfree86/dixmods/extmod/xf86dga2.c is the second part.  One day, if
>> + * someone actually cares about DGA, it'd be nice to clean this up.  But trust
>> + * me, I am not that person.
>> + */
>> +
>>  #ifdef HAVE_XORG_CONFIG_H
>>  #include <xorg-config.h>
>>  #endif
>>  
>> +#include <X11/X.h>
>> +#include <X11/Xproto.h>
>>  #include "xf86.h"
>>  #include "xf86str.h"
>>  #include "xf86Priv.h"
>> @@ -51,6 +63,22 @@
>>  
>>  #include "mi.h"
>>  
>> +#include "misc.h"
>> +#include "dixstruct.h"
>> +#include "dixevents.h"
>> +#include "extnsionst.h"
>> +#include "cursorstr.h"
>> +#include "scrnintstr.h"
>> +#include "swaprep.h"
>> +#include "dgaproc.h"
>> +#include "protocol-versions.h"
>> +
>> +#include <string.h>
>> +
>> +#include "modinit.h"
>> +
>> +#define DGA_PROTOCOL_OLD_SUPPORT 1
>> +
>>  static DevPrivateKeyRec DGAScreenKeyRec;
>>  #define DGAScreenKeyRegistered dixPrivateKeyRegistered(&DGAScreenKeyRec)
>>  static Bool mieq_installed;
>> @@ -1215,3 +1243,1005 @@ DGAHandleEvent(int screen_num, InternalEvent *ev, DeviceIntPtr device)
>>  	break;
>>      }
>>  }
>> +
>> +
>> +
>> +static void XDGAResetProc(ExtensionEntry *extEntry);
>> +
>> +static void DGAClientStateChange (CallbackListPtr*, pointer, pointer);
>> +
>> +unsigned char DGAReqCode = 0;
>> +int DGAErrorBase;
>> +int DGAEventBase;
>> +
>> +static DevPrivateKeyRec DGAScreenPrivateKeyRec;
>> +#define DGAScreenPrivateKey (&DGAScreenPrivateKeyRec)
>> +#define DGAScreenPrivateKeyRegistered (DGAScreenPrivateKeyRec.initialized)
>> +static DevPrivateKeyRec DGAClientPrivateKeyRec;
>> +#define DGAClientPrivateKey (&DGAClientPrivateKeyRec)
>> +static int DGACallbackRefCount = 0;
>> +
>> +/* This holds the client's version information */
>> +typedef struct {
>> +    int		major;
>> +    int		minor;
>> +} DGAPrivRec, *DGAPrivPtr;
>> +
>> +#define DGA_GETCLIENT(idx) ((ClientPtr) \
>> +    dixLookupPrivate(&screenInfo.screens[idx]->devPrivates, DGAScreenPrivateKey))
>> +#define DGA_SETCLIENT(idx,p) \
>> +    dixSetPrivate(&screenInfo.screens[idx]->devPrivates, DGAScreenPrivateKey, p)
>> +
>> +#define DGA_GETPRIV(c) ((DGAPrivPtr) \
>> +    dixLookupPrivate(&(c)->devPrivates, DGAClientPrivateKey))
>> +#define DGA_SETPRIV(c,p) \
>> +    dixSetPrivate(&(c)->devPrivates, DGAClientPrivateKey, p)
>> +
>> +
>> +static void
>> +XDGAResetProc (ExtensionEntry *extEntry)
>> +{
>> +   DeleteCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> +   DGACallbackRefCount = 0;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGAQueryVersion(ClientPtr client)
>> +{
>> +    xXDGAQueryVersionReply rep;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAQueryVersionReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +    rep.majorVersion = SERVER_XDGA_MAJOR_VERSION;
>> +    rep.minorVersion = SERVER_XDGA_MINOR_VERSION;
>> +
>> +    WriteToClient(client, sizeof(xXDGAQueryVersionReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGAOpenFramebuffer(ClientPtr client)
>> +{
>> +    REQUEST(xXDGAOpenFramebufferReq);
>> +    xXDGAOpenFramebufferReply rep;
>> +    char *deviceName;
>> +    int nameSize;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAOpenFramebufferReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    if(!DGAOpenFramebuffer(stuff->screen, &deviceName,
>> +			(unsigned char**)(&rep.mem1),
>> +			(int*)&rep.size, (int*)&rep.offset, (int*)&rep.extra))
>> +    {
>> +	return BadAlloc;
>> +    }
>> +
>> +    nameSize = deviceName ? (strlen(deviceName) + 1) : 0;
>> +    rep.length = bytes_to_int32(nameSize);
>> +
>> +    WriteToClient(client, sizeof(xXDGAOpenFramebufferReply), (char *)&rep);
>> +    if(rep.length)
>> +	WriteToClient(client, nameSize, deviceName);
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGACloseFramebuffer(ClientPtr client)
>> +{
>> +    REQUEST(xXDGACloseFramebufferReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGACloseFramebufferReq);
>> +
>> +    DGACloseFramebuffer(stuff->screen);
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGAQueryModes(ClientPtr client)
>> +{
>> +    int i, num, size;
>> +    REQUEST(xXDGAQueryModesReq);
>> +    xXDGAQueryModesReply rep;
>> +    xXDGAModeInfo info;
>> +    XDGAModePtr mode;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAQueryModesReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.number = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    if (!DGAAvailable(stuff->screen)) {
>> +	rep.number = 0;
>> +	rep.length = 0;
>> +	WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> +	return Success;
>> +    }
>> +
>> +    if(!(num = DGAGetModes(stuff->screen))) {
>> +	WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> +	return Success;
>> +    }
>> +
>> +    if(!(mode = (XDGAModePtr)malloc(num * sizeof(XDGAModeRec))))
>> +	return BadAlloc;
>> +
>> +    for(i = 0; i < num; i++)
>> +	DGAGetModeInfo(stuff->screen, mode + i, i + 1);
>> +
>> +    size = num * sz_xXDGAModeInfo;
>> +    for(i = 0; i < num; i++)
>> +	size += pad_to_int32(strlen(mode[i].name) + 1);  /* plus NULL */
>> +
>> +    rep.number = num;
>> +    rep.length = bytes_to_int32(size);
>> +
>> +    WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> +
>> +    for(i = 0; i < num; i++) {
>> +	size = strlen(mode[i].name) + 1;
>> +
>> +	info.byte_order = mode[i].byteOrder;
>> +	info.depth = mode[i].depth;
>> +	info.num = mode[i].num;
>> +	info.bpp = mode[i].bitsPerPixel;
>> +	info.name_size = (size + 3) & ~3L;
>> +	info.vsync_num = mode[i].VSync_num;
>> +	info.vsync_den = mode[i].VSync_den;
>> +	info.flags = mode[i].flags;
>> +	info.image_width = mode[i].imageWidth;
>> +	info.image_height = mode[i].imageHeight;
>> +	info.pixmap_width = mode[i].pixmapWidth;
>> +	info.pixmap_height = mode[i].pixmapHeight;
>> +	info.bytes_per_scanline = mode[i].bytesPerScanline;
>> +	info.red_mask = mode[i].red_mask;
>> +	info.green_mask = mode[i].green_mask;
>> +	info.blue_mask = mode[i].blue_mask;
>> +	info.visual_class = mode[i].visualClass;
>> +	info.viewport_width = mode[i].viewportWidth;
>> +	info.viewport_height = mode[i].viewportHeight;
>> +	info.viewport_xstep = mode[i].xViewportStep;
>> +	info.viewport_ystep = mode[i].yViewportStep;
>> + 	info.viewport_xmax = mode[i].maxViewportX;
>> +	info.viewport_ymax = mode[i].maxViewportY;
>> +	info.viewport_flags = mode[i].viewportFlags;
>> +	info.reserved1 = mode[i].reserved1;
>> +	info.reserved2 = mode[i].reserved2;
>> +
>> +	WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
>> +	WriteToClient(client, size, mode[i].name);
>> +    }
>> +
>> +    free(mode);
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static void
>> +DGAClientStateChange (
>> +    CallbackListPtr* pcbl,
>> +    pointer nulldata,
>> +    pointer calldata
>> +){
>> +    NewClientInfoRec* pci = (NewClientInfoRec*) calldata;
>> +    ClientPtr client = NULL;
>> +    int i;
>> +
>> +    for(i = 0; i < screenInfo.numScreens; i++) {
>> +	if(DGA_GETCLIENT(i) == pci->client) {
>> +	   client = pci->client;
>> +	   break;
>> +	}
>> +    }
>> +
>> +    if(client &&
>> +      ((client->clientState == ClientStateGone) ||
>> +       (client->clientState == ClientStateRetained))) {
>> +	XDGAModeRec mode;
>> +	PixmapPtr pPix;
>> +
>> +	DGA_SETCLIENT(i, NULL);
>> +	DGASelectInput(i, NULL, 0);
>> +	DGASetMode(i, 0, &mode, &pPix);
>> +
>> +	if(--DGACallbackRefCount == 0)
>> +	    DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> +    }
>> +}
>> +
>> +static int
>> +ProcXDGASetMode(ClientPtr client)
>> +{
>> +    REQUEST(xXDGASetModeReq);
>> +    xXDGASetModeReply rep;
>> +    XDGAModeRec mode;
>> +    xXDGAModeInfo info;
>> +    PixmapPtr pPix;
>> +    ClientPtr owner;
>> +    int size;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +    owner = DGA_GETCLIENT(stuff->screen);
>> +
>> +    REQUEST_SIZE_MATCH(xXDGASetModeReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.offset = 0;
>> +    rep.flags = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if(owner && owner != client)
>> +        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if(!stuff->mode) {
>> +	if(owner) {
>> +	  if(--DGACallbackRefCount == 0)
>> +	    DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> +	}
>> +	DGA_SETCLIENT(stuff->screen, NULL);
>> +	DGASelectInput(stuff->screen, NULL, 0);
>> +	DGASetMode(stuff->screen, 0, &mode, &pPix);
>> +	WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
>> +	return Success;
>> +    }
>> +
>> +    if(Success != DGASetMode(stuff->screen, stuff->mode, &mode, &pPix))
>> +	return BadValue;
>> +
>> +    if(!owner) {
>> +	if(DGACallbackRefCount++ == 0)
>> +	   AddCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> +    }
>> +
>> +    DGA_SETCLIENT(stuff->screen, client);
>> +
>> +    if(pPix) {
>> +	if(AddResource(stuff->pid, RT_PIXMAP, (pointer)(pPix))) {
>> +	    pPix->drawable.id = (int)stuff->pid;
>> +	    rep.flags = DGA_PIXMAP_AVAILABLE;
>> +	}
>> +    }
>> +
>> +    size = strlen(mode.name) + 1;
>> +
>> +    info.byte_order = mode.byteOrder;
>> +    info.depth = mode.depth;
>> +    info.num = mode.num;
>> +    info.bpp = mode.bitsPerPixel;
>> +    info.name_size = (size + 3) & ~3L;
>> +    info.vsync_num = mode.VSync_num;
>> +    info.vsync_den = mode.VSync_den;
>> +    info.flags = mode.flags;
>> +    info.image_width = mode.imageWidth;
>> +    info.image_height = mode.imageHeight;
>> +    info.pixmap_width = mode.pixmapWidth;
>> +    info.pixmap_height = mode.pixmapHeight;
>> +    info.bytes_per_scanline = mode.bytesPerScanline;
>> +    info.red_mask = mode.red_mask;
>> +    info.green_mask = mode.green_mask;
>> +    info.blue_mask = mode.blue_mask;
>> +    info.visual_class = mode.visualClass;
>> +    info.viewport_width = mode.viewportWidth;
>> +    info.viewport_height = mode.viewportHeight;
>> +    info.viewport_xstep = mode.xViewportStep;
>> +    info.viewport_ystep = mode.yViewportStep;
>> +    info.viewport_xmax = mode.maxViewportX;
>> +    info.viewport_ymax = mode.maxViewportY;
>> +    info.viewport_flags = mode.viewportFlags;
>> +    info.reserved1 = mode.reserved1;
>> +    info.reserved2 = mode.reserved2;
>> +
>> +    rep.length = bytes_to_int32(sz_xXDGAModeInfo + info.name_size);
>> +
>> +    WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
>> +    WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
>> +    WriteToClient(client, size, mode.name);
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGASetViewport(ClientPtr client)
>> +{
>> +    REQUEST(xXDGASetViewportReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGASetViewportReq);
>> +
>> +    DGASetViewport(stuff->screen, stuff->x, stuff->y, stuff->flags);
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGAInstallColormap(ClientPtr client)
>> +{
>> +    ColormapPtr cmap;
>> +    int rc;
>> +    REQUEST(xXDGAInstallColormapReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAInstallColormapReq);
>> +
>> +    rc = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, RT_COLORMAP,
>> +				 client, DixInstallAccess);
>> +    if (rc != Success)
>> +        return rc;
>> +    DGAInstallCmap(cmap);
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGASelectInput(ClientPtr client)
>> +{
>> +    REQUEST(xXDGASelectInputReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGASelectInputReq);
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) == client)
>> +	DGASelectInput(stuff->screen, client, stuff->mask);
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGAFillRectangle(ClientPtr client)
>> +{
>> +    REQUEST(xXDGAFillRectangleReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAFillRectangleReq);
>> +
>> +    if(Success != DGAFillRect(stuff->screen, stuff->x, stuff->y,
>> +			stuff->width, stuff->height, stuff->color))
>> +	return BadMatch;
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGACopyArea(ClientPtr client)
>> +{
>> +    REQUEST(xXDGACopyAreaReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGACopyAreaReq);
>> +
>> +    if(Success != DGABlitRect(stuff->screen, stuff->srcx, stuff->srcy,
>> +		stuff->width, stuff->height, stuff->dstx, stuff->dsty))
>> +	return BadMatch;
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGACopyTransparentArea(ClientPtr client)
>> +{
>> +    REQUEST(xXDGACopyTransparentAreaReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGACopyTransparentAreaReq);
>> +
>> +    if(Success != DGABlitTransRect(stuff->screen, stuff->srcx, stuff->srcy,
>> +	stuff->width, stuff->height, stuff->dstx, stuff->dsty, stuff->key))
>> +	return BadMatch;
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGAGetViewportStatus(ClientPtr client)
>> +{
>> +    REQUEST(xXDGAGetViewportStatusReq);
>> +    xXDGAGetViewportStatusReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAGetViewportStatusReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    rep.status = DGAGetViewportStatus(stuff->screen);
>> +
>> +    WriteToClient(client, sizeof(xXDGAGetViewportStatusReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGASync(ClientPtr client)
>> +{
>> +    REQUEST(xXDGASyncReq);
>> +    xXDGASyncReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGASyncReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    DGASync(stuff->screen);
>> +
>> +    WriteToClient(client, sizeof(xXDGASyncReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGASetClientVersion(ClientPtr client)
>> +{
>> +    REQUEST(xXDGASetClientVersionReq);
>> +
>> +    DGAPrivPtr pPriv;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGASetClientVersionReq);
>> +    if ((pPriv = DGA_GETPRIV(client)) == NULL) {
>> +	pPriv = malloc(sizeof(DGAPrivRec));
>> +	/* XXX Need to look into freeing this */
>> +	if (!pPriv)
>> +	    return BadAlloc;
>> +	DGA_SETPRIV(client, pPriv);
>> +    }
>> +    pPriv->major = stuff->major;
>> +    pPriv->minor = stuff->minor;
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXDGAChangePixmapMode(ClientPtr client)
>> +{
>> +    REQUEST(xXDGAChangePixmapModeReq);
>> +    xXDGAChangePixmapModeReply rep;
>> +    int x, y;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGAChangePixmapModeReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    x = stuff->x;
>> +    y = stuff->y;
>> +
>> +    if(!DGAChangePixmapMode(stuff->screen, &x, &y, stuff->flags))
>> +	return BadMatch;
>> +
>> +    rep.x = x;
>> +    rep.y = y;
>> +    WriteToClient(client, sizeof(xXDGAChangePixmapModeReply), (char *)&rep);
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXDGACreateColormap(ClientPtr client)
>> +{
>> +    REQUEST(xXDGACreateColormapReq);
>> +    int result;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +        return BadValue;
>> +
>> +    if(DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXDGACreateColormapReq);
>> +
>> +    if(!stuff->mode)
>> +	return BadValue;
>> +
>> +    result = DGACreateColormap(stuff->screen, client, stuff->id,
>> +				stuff->mode, stuff->alloc);
>> +    if(result != Success)
>> +	return result;
>> +
>> +    return Success;
>> +}
>> +
>> +/*
>> + *
>> + * Support for the old DGA protocol, used to live in xf86dga.c
>> + *
>> + */
>> +
>> +#ifdef DGA_PROTOCOL_OLD_SUPPORT
>> +
>> +
>> +
>> +static int
>> +ProcXF86DGAGetVideoLL(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGAGetVideoLLReq);
>> +    xXF86DGAGetVideoLLReply rep;
>> +    XDGAModeRec mode;
>> +    int num, offset, flags;
>> +    char *name;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    if(!DGAAvailable(stuff->screen))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    /* get the parameters for the mode that best matches */
>> +    DGAGetModeInfo(stuff->screen, &mode, num);
>> +
>> +    if(!DGAOpenFramebuffer(stuff->screen, &name,
>> +			(unsigned char**)(&rep.offset),
>> +			(int*)(&rep.bank_size), &offset, &flags))
>> +	return BadAlloc;
>> +
>> +    rep.offset += mode.offset;
>> +    rep.width = mode.bytesPerScanline / (mode.bitsPerPixel >> 3);
>> +    rep.ram_size = rep.bank_size >> 10;
>> +
>> +    WriteToClient(client, SIZEOF(xXF86DGAGetVideoLLReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXF86DGADirectVideo(ClientPtr client)
>> +{
>> +    int num;
>> +    PixmapPtr pix;
>> +    XDGAModeRec mode;
>> +    ClientPtr owner;
>> +    REQUEST(xXF86DGADirectVideoReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +    REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq);
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    owner = DGA_GETCLIENT(stuff->screen);
>> +
>> +    if (owner && owner != client)
>> +        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if (stuff->enable & XF86DGADirectGraphics) {
>> +	if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> +	    return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +    } else
>> +	num = 0;
>> +
>> +    if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
>> +	return DGAErrorBase + XF86DGAScreenNotActive;
>> +
>> +    DGASetInputMode (stuff->screen,
>> +		     (stuff->enable & XF86DGADirectKeyb) != 0,
>> +		     (stuff->enable & XF86DGADirectMouse) != 0);
>> +
>> +    /* We need to track the client and attach the teardown callback */
>> +    if (stuff->enable &
>> +	(XF86DGADirectGraphics | XF86DGADirectKeyb | XF86DGADirectMouse)) {
>> +	if (!owner) {
>> +	    if (DGACallbackRefCount++ == 0)
>> +		AddCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> +	}
>> +
>> +	DGA_SETCLIENT(stuff->screen, client);
>> +    } else {
>> +	if (owner) {
>> +	    if (--DGACallbackRefCount == 0)
>> +		DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> +	}
>> +
>> +	DGA_SETCLIENT(stuff->screen, NULL);
>> +    }
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXF86DGAGetViewPortSize(ClientPtr client)
>> +{
>> +    int num;
>> +    XDGAModeRec mode;
>> +    REQUEST(xXF86DGAGetViewPortSizeReq);
>> +    xXF86DGAGetViewPortSizeReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    DGAGetModeInfo(stuff->screen, &mode, num);
>> +
>> +    rep.width = mode.viewportWidth;
>> +    rep.height = mode.viewportHeight;
>> +
>> +    WriteToClient(client, SIZEOF(xXF86DGAGetViewPortSizeReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXF86DGASetViewPort(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGASetViewPortReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    if (DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq);
>> +
>> +    if (!DGAAvailable(stuff->screen))
>> +	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> +
>> +    if (!DGAActive(stuff->screen))
>> +	return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE)
>> +		!= Success)
>> +	return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXF86DGAGetVidPage(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGAGetVidPageReq);
>> +    xXF86DGAGetVidPageReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +    rep.vpage = 0;  /* silently fail */
>> +
>> +    WriteToClient(client, SIZEOF(xXF86DGAGetVidPageReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXF86DGASetVidPage(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGASetVidPageReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq);
>> +
>> +    /* silently fail */
>> +
>> +    return Success;
>> +}
>> +
>> +
>> +static int
>> +ProcXF86DGAInstallColormap(ClientPtr client)
>> +{
>> +    ColormapPtr pcmp;
>> +    int rc;
>> +    REQUEST(xXF86DGAInstallColormapReq);
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    if (DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq);
>> +
>> +    if (!DGAActive(stuff->screen))
>> +	return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP,
>> +				 client, DixInstallAccess);
>> +    if (rc == Success) {
>> +	DGAInstallCmap(pcmp);
>> +        return Success;
>> +    } else {
>> +        return rc;
>> +    }
>> +}
>> +
>> +static int
>> +ProcXF86DGAQueryDirectVideo(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGAQueryDirectVideoReq);
>> +    xXF86DGAQueryDirectVideoReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq);
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +    rep.flags = 0;
>> +
>> +    if (DGAAvailable(stuff->screen))
>> +	rep.flags = XF86DGADirectPresent;
>> +
>> +    WriteToClient(client, SIZEOF(xXF86DGAQueryDirectVideoReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +static int
>> +ProcXF86DGAViewPortChanged(ClientPtr client)
>> +{
>> +    REQUEST(xXF86DGAViewPortChangedReq);
>> +    xXF86DGAViewPortChangedReply rep;
>> +
>> +    if (stuff->screen >= screenInfo.numScreens)
>> +	return BadValue;
>> +
>> +    if (DGA_GETCLIENT(stuff->screen) != client)
>> +        return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq);
>> +
>> +    if (!DGAActive(stuff->screen))
>> +	return DGAErrorBase + XF86DGADirectNotActivated;
>> +
>> +    rep.type = X_Reply;
>> +    rep.length = 0;
>> +    rep.sequenceNumber = client->sequence;
>> +    rep.result = 1;
>> +
>> +    WriteToClient(client, SIZEOF(xXF86DGAViewPortChangedReply), (char *)&rep);
>> +    return Success;
>> +}
>> +
>> +#endif /* DGA_PROTOCOL_OLD_SUPPORT */
>> +
>> +static int
>> +SProcXDGADispatch (ClientPtr client)
>> +{
>> +   return DGAErrorBase + XF86DGAClientNotLocal;
>> +}
>> +
>> +#if 0
>> +#define DGA_REQ_DEBUG
>> +#endif
>> +
>> +#ifdef DGA_REQ_DEBUG
>> +static char *dgaMinor[] = {
>> +    "QueryVersion",
>> +    "GetVideoLL",
>> +    "DirectVideo",
>> +    "GetViewPortSize",
>> +    "SetViewPort",
>> +    "GetVidPage",
>> +    "SetVidPage",
>> +    "InstallColormap",
>> +    "QueryDirectVideo",
>> +    "ViewPortChanged",
>> +    "10",
>> +    "11",
>> +    "QueryModes",
>> +    "SetMode",
>> +    "SetViewport",
>> +    "InstallColormap",
>> +    "SelectInput",
>> +    "FillRectangle",
>> +    "CopyArea",
>> +    "CopyTransparentArea",
>> +    "GetViewportStatus",
>> +    "Sync",
>> +    "OpenFramebuffer",
>> +    "CloseFramebuffer",
>> +    "SetClientVersion",
>> +    "ChangePixmapMode",
>> +    "CreateColormap",
>> +};
>> +#endif
>> +
>> +static int
>> +ProcXDGADispatch (ClientPtr client)
>> +{
>> +    REQUEST(xReq);
>> +
>> +    if (!LocalClient(client))
>> +	return DGAErrorBase + XF86DGAClientNotLocal;
>> +
>> +#ifdef DGA_REQ_DEBUG
>> +    if (stuff->data <= X_XDGACreateColormap)
>> +	fprintf (stderr, "    DGA %s\n", dgaMinor[stuff->data]);
>> +#endif
>> +
>> +    switch (stuff->data){
>> +    /*
>> +     * DGA2 Protocol
>> +     */
>> +    case X_XDGAQueryVersion:
>> +	return ProcXDGAQueryVersion(client);
>> +    case X_XDGAQueryModes:
>> +	return ProcXDGAQueryModes(client);
>> +    case X_XDGASetMode:
>> +	return ProcXDGASetMode(client);
>> +    case X_XDGAOpenFramebuffer:
>> +	return ProcXDGAOpenFramebuffer(client);
>> +    case X_XDGACloseFramebuffer:
>> +	return ProcXDGACloseFramebuffer(client);
>> +    case X_XDGASetViewport:
>> +	return ProcXDGASetViewport(client);
>> +    case X_XDGAInstallColormap:
>> +	return ProcXDGAInstallColormap(client);
>> +    case X_XDGASelectInput:
>> +	return ProcXDGASelectInput(client);
>> +    case X_XDGAFillRectangle:
>> +	return ProcXDGAFillRectangle(client);
>> +    case X_XDGACopyArea:
>> +	return ProcXDGACopyArea(client);
>> +    case X_XDGACopyTransparentArea:
>> +	return ProcXDGACopyTransparentArea(client);
>> +    case X_XDGAGetViewportStatus:
>> +	return ProcXDGAGetViewportStatus(client);
>> +    case X_XDGASync:
>> +	return ProcXDGASync(client);
>> +    case X_XDGASetClientVersion:
>> +	return ProcXDGASetClientVersion(client);
>> +    case X_XDGAChangePixmapMode:
>> +	return ProcXDGAChangePixmapMode(client);
>> +    case X_XDGACreateColormap:
>> +	return ProcXDGACreateColormap(client);
>> +    /*
>> +     * Old DGA Protocol
>> +     */
>> +#ifdef DGA_PROTOCOL_OLD_SUPPORT
>> +    case X_XF86DGAGetVideoLL:
>> +	return ProcXF86DGAGetVideoLL(client);
>> +    case X_XF86DGADirectVideo:
>> +	return ProcXF86DGADirectVideo(client);
>> +    case X_XF86DGAGetViewPortSize:
>> +	return ProcXF86DGAGetViewPortSize(client);
>> +    case X_XF86DGASetViewPort:
>> +	return ProcXF86DGASetViewPort(client);
>> +    case X_XF86DGAGetVidPage:
>> +	return ProcXF86DGAGetVidPage(client);
>> +    case X_XF86DGASetVidPage:
>> +	return ProcXF86DGASetVidPage(client);
>> +    case X_XF86DGAInstallColormap:
>> +	return ProcXF86DGAInstallColormap(client);
>> +    case X_XF86DGAQueryDirectVideo:
>> +	return ProcXF86DGAQueryDirectVideo(client);
>> +    case X_XF86DGAViewPortChanged:
>> +	return ProcXF86DGAViewPortChanged(client);
>> +#endif /* DGA_PROTOCOL_OLD_SUPPORT */
>> +    default:
>> +	return BadRequest;
>> +    }
>> +}
>> +
>> +void
>> +XFree86DGARegister(void)
>> +{
>> +  XDGAEventBase = &DGAEventBase;
>> +}
>> +
>> +void
>> +XFree86DGAExtensionInit(void)
>> +{
>> +    ExtensionEntry* extEntry;
>> +
>> +    if (!dixRegisterPrivateKey(&DGAClientPrivateKeyRec, PRIVATE_CLIENT, 0))
>> +	return;
>> +
>> +    if (!dixRegisterPrivateKey(&DGAScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
>> +	return;
>> +
>> +    if ((extEntry = AddExtension(XF86DGANAME,
>> +				XF86DGANumberEvents,
>> +				XF86DGANumberErrors,
>> +				ProcXDGADispatch,
>> +				SProcXDGADispatch,
>> +				XDGAResetProc,
>> +				StandardMinorOpcode))) {
>> +	int i;
>> +
>> +	DGAReqCode = (unsigned char)extEntry->base;
>> +	DGAErrorBase = extEntry->errorBase;
>> +	DGAEventBase = extEntry->eventBase;
>> +	for (i = KeyPress; i <= MotionNotify; i++)
>> +	    SetCriticalEvent (DGAEventBase + i);
>> +    }
>> +}
>> diff --git a/hw/xfree86/common/xf86Extensions.c b/hw/xfree86/common/xf86Extensions.c
>> index 5b2f631..12a8542 100644
>> --- a/hw/xfree86/common/xf86Extensions.c
>> +++ b/hw/xfree86/common/xf86Extensions.c
>> @@ -32,11 +32,29 @@
>>  
>>  #include "xf86.h"
>>  #include "xf86Config.h"
>> +#include "xf86Module.h"
>>  #include "xf86Opt.h"
>>  
>> +/*
>> + * DDX-specific extensions.
>> + */
>> +static ExtensionModule extensionModules[] = {
>> +#ifdef XFreeXDGA
>> +    {
>> +	XFree86DGAExtensionInit,
>> +	XF86DGANAME,
>> +	&noXFree86DGAExtension,
>> +	XFree86DGARegister,
>> +	NULL
>> +    },
>> +#endif
>> +};
>> +
>>  void
>>  xf86ExtensionInit(void)
>>  {
>> +    int i;
>> +
>>      if (xf86configptr->conf_modules) {
>>          XF86LoadPtr modp = xf86configptr->conf_modules->mod_load_lst;
>>          for (modp = xf86configptr->conf_modules->mod_load_lst; modp;
>> @@ -72,4 +90,7 @@ xf86ExtensionInit(void)
>>  #endif
>>  	}
>>      }
>> +
>> +    for (i = 0; i < ARRAY_SIZE(extensionModules); i++)
>> +	LoadExtension(&extensionModules[i], TRUE);
>>  }
>> diff --git a/hw/xfree86/dixmods/extmod/Makefile.am b/hw/xfree86/dixmods/extmod/Makefile.am
>> index 7ef1e7e..bad2270 100644
>> --- a/hw/xfree86/dixmods/extmod/Makefile.am
>> +++ b/hw/xfree86/dixmods/extmod/Makefile.am
>> @@ -1,12 +1,6 @@
>> -sdk_HEADERS = dgaproc.h
>> -
>>  extsmoduledir = $(moduledir)/extensions
>>  extsmodule_LTLIBRARIES = libextmod.la
>>  
>> -if DGA
>> -DGA_SRCS = xf86dga2.c dgaproc.h
>> -endif
>> -
>>  if XF86VIDMODE
>>  XF86VMODE_SRCS = xf86vmode.c
>>  endif
>> @@ -20,6 +14,5 @@ INCLUDES = @XORG_INCS@ \
>>  libextmod_la_LDFLAGS = -avoid-version
>>  libextmod_la_SOURCES = modinit.c \
>>                         modinit.h \
>> -                       $(DGA_SRCS) \
>>                         $(XF86VMODE_SRCS)
>>  libextmod_la_LIBADD = $(top_builddir)/Xext/libXextmodule.la
>> diff --git a/hw/xfree86/dixmods/extmod/dgaproc.h b/hw/xfree86/dixmods/extmod/dgaproc.h
>> deleted file mode 100644
>> index a13a517..0000000
>> --- a/hw/xfree86/dixmods/extmod/dgaproc.h
>> +++ /dev/null
>> @@ -1,142 +0,0 @@
>> -
>> -#ifndef __DGAPROC_H
>> -#define __DGAPROC_H
>> -
>> -#include <X11/Xproto.h>
>> -#include "pixmap.h"
>> -
>> -#define DGA_CONCURRENT_ACCESS	0x00000001
>> -#define DGA_FILL_RECT		0x00000002
>> -#define DGA_BLIT_RECT		0x00000004
>> -#define DGA_BLIT_RECT_TRANS	0x00000008
>> -#define DGA_PIXMAP_AVAILABLE	0x00000010
>> -
>> -#define DGA_INTERLACED		0x00010000
>> -#define DGA_DOUBLESCAN		0x00020000
>> -
>> -#define DGA_FLIP_IMMEDIATE	0x00000001
>> -#define DGA_FLIP_RETRACE	0x00000002
>> -
>> -#define DGA_COMPLETED		0x00000000
>> -#define DGA_PENDING		0x00000001
>> -
>> -#define DGA_NEED_ROOT		0x00000001
>> -
>> -typedef struct {
>> -   int num;		/* A unique identifier for the mode (num > 0) */
>> -   char *name;		/* name of mode given in the XF86Config */
>> -   int VSync_num;
>> -   int VSync_den;
>> -   int flags;		/* DGA_CONCURRENT_ACCESS, etc... */
>> -   int imageWidth;	/* linear accessible portion (pixels) */
>> -   int imageHeight;
>> -   int pixmapWidth;	/* Xlib accessible portion (pixels) */
>> -   int pixmapHeight;	/* both fields ignored if no concurrent access */
>> -   int bytesPerScanline; 
>> -   int byteOrder;	/* MSBFirst, LSBFirst */
>> -   int depth;		
>> -   int bitsPerPixel;
>> -   unsigned long red_mask;
>> -   unsigned long green_mask;
>> -   unsigned long blue_mask;
>> -   short visualClass;
>> -   int viewportWidth;
>> -   int viewportHeight;
>> -   int xViewportStep;	/* viewport position granularity */
>> -   int yViewportStep;
>> -   int maxViewportX;	/* max viewport origin */
>> -   int maxViewportY;
>> -   int viewportFlags;	/* types of page flipping possible */
>> -   int offset;
>> -   int reserved1;
>> -   int reserved2;
>> -} XDGAModeRec, *XDGAModePtr;
>> -
>> -/* DDX interface */
>> -
>> -extern _X_EXPORT int
>> -DGASetMode(
>> -   int Index,
>> -   int num,
>> -   XDGAModePtr mode,
>> -   PixmapPtr *pPix
>> -);
>> -
>> -extern _X_EXPORT void
>> -DGASetInputMode(
>> -   int Index,
>> -   Bool keyboard,
>> -   Bool mouse
>> -);
>> -
>> -extern _X_EXPORT void
>> -DGASelectInput(
>> -   int Index,
>> -   ClientPtr client,
>> -   long mask
>> -);
>> -
>> -extern _X_EXPORT Bool DGAAvailable(int Index);
>> -extern _X_EXPORT Bool DGAActive(int Index);
>> -extern _X_EXPORT void DGAShutdown(void);
>> -extern _X_EXPORT void DGAInstallCmap(ColormapPtr cmap);
>> -extern _X_EXPORT int DGAGetViewportStatus(int Index);
>> -extern _X_EXPORT int DGASync(int Index);
>> -
>> -extern _X_EXPORT int
>> -DGAFillRect(
>> -   int Index,
>> -   int x, int y, int w, int h,
>> -   unsigned long color
>> -);
>> -
>> -extern _X_EXPORT int
>> -DGABlitRect(
>> -   int Index,
>> -   int srcx, int srcy, 
>> -   int w, int h, 
>> -   int dstx, int dsty
>> -);
>> -
>> -extern _X_EXPORT int
>> -DGABlitTransRect(
>> -   int Index,
>> -   int srcx, int srcy, 
>> -   int w, int h, 
>> -   int dstx, int dsty,
>> -   unsigned long color
>> -);
>> -
>> -extern _X_EXPORT int
>> -DGASetViewport(
>> -   int Index,
>> -   int x, int y,
>> -   int mode
>> -); 
>> -
>> -extern _X_EXPORT int DGAGetModes(int Index);
>> -extern _X_EXPORT int DGAGetOldDGAMode(int Index);
>> -
>> -extern _X_EXPORT int DGAGetModeInfo(int Index, XDGAModePtr mode, int num);
>> -
>> -extern _X_EXPORT Bool DGAVTSwitch(void);
>> -extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, int button,
>> -                         int is_down);
>> -extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy);
>> -extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, int key_code, int is_down);
>> -	    
>> -extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, unsigned char **mem,
>> -			int *size, int *offset, int *flags);
>> -extern _X_EXPORT void DGACloseFramebuffer(int Index);
>> -extern _X_EXPORT Bool DGAChangePixmapMode(int Index, int *x, int *y, int mode);
>> -extern _X_EXPORT int DGACreateColormap(int Index, ClientPtr client, int id, int mode,
>> -			int alloc);
>> -
>> -extern _X_EXPORT unsigned char DGAReqCode;
>> -extern _X_EXPORT int DGAErrorBase;
>> -extern _X_EXPORT int DGAEventBase;
>> -extern _X_EXPORT int *XDGAEventBase;
>> -
>> -
>> -
>> -#endif /* __DGAPROC_H */
>> diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
>> deleted file mode 100644
>> index e24dda0..0000000
>> --- a/hw/xfree86/dixmods/extmod/xf86dga2.c
>> +++ /dev/null
>> @@ -1,1035 +0,0 @@
>> -/*
>> - * Copyright (c) 1995  Jon Tombs
>> - * Copyright (c) 1995, 1996, 1999  XFree86 Inc
>> - * Copyright (c) 1999 - The XFree86 Project Inc.
>> - *
>> - * Written by Mark Vojkovich
>> - */
>> -
>> -
>> -#ifdef HAVE_XORG_CONFIG_H
>> -#include <xorg-config.h>
>> -#endif
>> -
>> -#include <X11/X.h>
>> -#include <X11/Xproto.h>
>> -#include "misc.h"
>> -#include "dixstruct.h"
>> -#include "dixevents.h"
>> -#include "pixmapstr.h"
>> -#include "extnsionst.h"
>> -#include "colormapst.h"
>> -#include "cursorstr.h"
>> -#include "scrnintstr.h"
>> -#include "servermd.h"
>> -#include <X11/extensions/xf86dgaproto.h>
>> -#include "swaprep.h"
>> -#include "dgaproc.h"
>> -#include "protocol-versions.h"
>> -
>> -#include <string.h>
>> -
>> -#include "modinit.h"
>> -
>> -#define DGA_PROTOCOL_OLD_SUPPORT 1
>> -
>> -
>> -static void XDGAResetProc(ExtensionEntry *extEntry);
>> -
>> -static void DGAClientStateChange (CallbackListPtr*, pointer, pointer);
>> -
>> -unsigned char DGAReqCode = 0;
>> -int DGAErrorBase;
>> -int DGAEventBase;
>> -
>> -static DevPrivateKeyRec DGAScreenPrivateKeyRec;
>> -#define DGAScreenPrivateKey (&DGAScreenPrivateKeyRec)
>> -#define DGAScreenPrivateKeyRegistered (DGAScreenPrivateKeyRec.initialized)
>> -static DevPrivateKeyRec DGAClientPrivateKeyRec;
>> -#define DGAClientPrivateKey (&DGAClientPrivateKeyRec)
>> -static int DGACallbackRefCount = 0;
>> -
>> -/* This holds the client's version information */
>> -typedef struct {
>> -    int		major;
>> -    int		minor;
>> -} DGAPrivRec, *DGAPrivPtr;
>> -
>> -#define DGA_GETCLIENT(idx) ((ClientPtr) \
>> -    dixLookupPrivate(&screenInfo.screens[idx]->devPrivates, DGAScreenPrivateKey))
>> -#define DGA_SETCLIENT(idx,p) \
>> -    dixSetPrivate(&screenInfo.screens[idx]->devPrivates, DGAScreenPrivateKey, p)
>> -
>> -#define DGA_GETPRIV(c) ((DGAPrivPtr) \
>> -    dixLookupPrivate(&(c)->devPrivates, DGAClientPrivateKey))
>> -#define DGA_SETPRIV(c,p) \
>> -    dixSetPrivate(&(c)->devPrivates, DGAClientPrivateKey, p)
>> -
>> -
>> -static void
>> -XDGAResetProc (ExtensionEntry *extEntry)
>> -{
>> -   DeleteCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> -   DGACallbackRefCount = 0;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGAQueryVersion(ClientPtr client)
>> -{
>> -    xXDGAQueryVersionReply rep;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAQueryVersionReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -    rep.majorVersion = SERVER_XDGA_MAJOR_VERSION;
>> -    rep.minorVersion = SERVER_XDGA_MINOR_VERSION;
>> -
>> -    WriteToClient(client, sizeof(xXDGAQueryVersionReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGAOpenFramebuffer(ClientPtr client)
>> -{
>> -    REQUEST(xXDGAOpenFramebufferReq);
>> -    xXDGAOpenFramebufferReply rep;
>> -    char *deviceName;
>> -    int nameSize;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAOpenFramebufferReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    if(!DGAOpenFramebuffer(stuff->screen, &deviceName,
>> -			(unsigned char**)(&rep.mem1),
>> -			(int*)&rep.size, (int*)&rep.offset, (int*)&rep.extra))
>> -    {
>> -	return BadAlloc;
>> -    }
>> -
>> -    nameSize = deviceName ? (strlen(deviceName) + 1) : 0;
>> -    rep.length = bytes_to_int32(nameSize);
>> -
>> -    WriteToClient(client, sizeof(xXDGAOpenFramebufferReply), (char *)&rep);
>> -    if(rep.length)
>> -	WriteToClient(client, nameSize, deviceName);
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGACloseFramebuffer(ClientPtr client)
>> -{
>> -    REQUEST(xXDGACloseFramebufferReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGACloseFramebufferReq);
>> -
>> -    DGACloseFramebuffer(stuff->screen);
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGAQueryModes(ClientPtr client)
>> -{
>> -    int i, num, size;
>> -    REQUEST(xXDGAQueryModesReq);
>> -    xXDGAQueryModesReply rep;
>> -    xXDGAModeInfo info;
>> -    XDGAModePtr mode;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAQueryModesReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.number = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    if (!DGAAvailable(stuff->screen)) {
>> -	rep.number = 0;
>> -	rep.length = 0;
>> -	WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> -	return Success;
>> -    }
>> -
>> -    if(!(num = DGAGetModes(stuff->screen))) {
>> -	WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> -	return Success;
>> -    }
>> -
>> -    if(!(mode = (XDGAModePtr)malloc(num * sizeof(XDGAModeRec))))
>> -	return BadAlloc;
>> -
>> -    for(i = 0; i < num; i++)
>> -	DGAGetModeInfo(stuff->screen, mode + i, i + 1);
>> -
>> -    size = num * sz_xXDGAModeInfo;
>> -    for(i = 0; i < num; i++)
>> -	size += pad_to_int32(strlen(mode[i].name) + 1);  /* plus NULL */
>> -
>> -    rep.number = num;
>> -    rep.length = bytes_to_int32(size);
>> -
>> -    WriteToClient(client, sz_xXDGAQueryModesReply, (char*)&rep);
>> -
>> -    for(i = 0; i < num; i++) {
>> -	size = strlen(mode[i].name) + 1;
>> -
>> -	info.byte_order = mode[i].byteOrder;
>> -	info.depth = mode[i].depth;
>> -	info.num = mode[i].num;
>> -	info.bpp = mode[i].bitsPerPixel;
>> -	info.name_size = (size + 3) & ~3L;
>> -	info.vsync_num = mode[i].VSync_num;
>> -	info.vsync_den = mode[i].VSync_den;
>> -	info.flags = mode[i].flags;
>> -	info.image_width = mode[i].imageWidth;
>> -	info.image_height = mode[i].imageHeight;
>> -	info.pixmap_width = mode[i].pixmapWidth;
>> -	info.pixmap_height = mode[i].pixmapHeight;
>> -	info.bytes_per_scanline = mode[i].bytesPerScanline;
>> -	info.red_mask = mode[i].red_mask;
>> -	info.green_mask = mode[i].green_mask;
>> -	info.blue_mask = mode[i].blue_mask;
>> -	info.visual_class = mode[i].visualClass;
>> -	info.viewport_width = mode[i].viewportWidth;
>> -	info.viewport_height = mode[i].viewportHeight;
>> -	info.viewport_xstep = mode[i].xViewportStep;
>> -	info.viewport_ystep = mode[i].yViewportStep;
>> - 	info.viewport_xmax = mode[i].maxViewportX;
>> -	info.viewport_ymax = mode[i].maxViewportY;
>> -	info.viewport_flags = mode[i].viewportFlags;
>> -	info.reserved1 = mode[i].reserved1;
>> -	info.reserved2 = mode[i].reserved2;
>> -
>> -	WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
>> -	WriteToClient(client, size, mode[i].name);
>> -    }
>> -
>> -    free(mode);
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static void
>> -DGAClientStateChange (
>> -    CallbackListPtr* pcbl,
>> -    pointer nulldata,
>> -    pointer calldata
>> -){
>> -    NewClientInfoRec* pci = (NewClientInfoRec*) calldata;
>> -    ClientPtr client = NULL;
>> -    int i;
>> -
>> -    for(i = 0; i < screenInfo.numScreens; i++) {
>> -	if(DGA_GETCLIENT(i) == pci->client) {
>> -	   client = pci->client;
>> -	   break;
>> -	}
>> -    }
>> -
>> -    if(client &&
>> -      ((client->clientState == ClientStateGone) ||
>> -       (client->clientState == ClientStateRetained))) {
>> -	XDGAModeRec mode;
>> -	PixmapPtr pPix;
>> -
>> -	DGA_SETCLIENT(i, NULL);
>> -	DGASelectInput(i, NULL, 0);
>> -	DGASetMode(i, 0, &mode, &pPix);
>> -
>> -	if(--DGACallbackRefCount == 0)
>> -	    DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> -    }
>> -}
>> -
>> -static int
>> -ProcXDGASetMode(ClientPtr client)
>> -{
>> -    REQUEST(xXDGASetModeReq);
>> -    xXDGASetModeReply rep;
>> -    XDGAModeRec mode;
>> -    xXDGAModeInfo info;
>> -    PixmapPtr pPix;
>> -    ClientPtr owner;
>> -    int size;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -    owner = DGA_GETCLIENT(stuff->screen);
>> -
>> -    REQUEST_SIZE_MATCH(xXDGASetModeReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.offset = 0;
>> -    rep.flags = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if(owner && owner != client)
>> -        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if(!stuff->mode) {
>> -	if(owner) {
>> -	  if(--DGACallbackRefCount == 0)
>> -	    DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> -	}
>> -	DGA_SETCLIENT(stuff->screen, NULL);
>> -	DGASelectInput(stuff->screen, NULL, 0);
>> -	DGASetMode(stuff->screen, 0, &mode, &pPix);
>> -	WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
>> -	return Success;
>> -    }
>> -
>> -    if(Success != DGASetMode(stuff->screen, stuff->mode, &mode, &pPix))
>> -	return BadValue;
>> -
>> -    if(!owner) {
>> -	if(DGACallbackRefCount++ == 0)
>> -	   AddCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> -    }
>> -
>> -    DGA_SETCLIENT(stuff->screen, client);
>> -
>> -    if(pPix) {
>> -	if(AddResource(stuff->pid, RT_PIXMAP, (pointer)(pPix))) {
>> -	    pPix->drawable.id = (int)stuff->pid;
>> -	    rep.flags = DGA_PIXMAP_AVAILABLE;
>> -	}
>> -    }
>> -
>> -    size = strlen(mode.name) + 1;
>> -
>> -    info.byte_order = mode.byteOrder;
>> -    info.depth = mode.depth;
>> -    info.num = mode.num;
>> -    info.bpp = mode.bitsPerPixel;
>> -    info.name_size = (size + 3) & ~3L;
>> -    info.vsync_num = mode.VSync_num;
>> -    info.vsync_den = mode.VSync_den;
>> -    info.flags = mode.flags;
>> -    info.image_width = mode.imageWidth;
>> -    info.image_height = mode.imageHeight;
>> -    info.pixmap_width = mode.pixmapWidth;
>> -    info.pixmap_height = mode.pixmapHeight;
>> -    info.bytes_per_scanline = mode.bytesPerScanline;
>> -    info.red_mask = mode.red_mask;
>> -    info.green_mask = mode.green_mask;
>> -    info.blue_mask = mode.blue_mask;
>> -    info.visual_class = mode.visualClass;
>> -    info.viewport_width = mode.viewportWidth;
>> -    info.viewport_height = mode.viewportHeight;
>> -    info.viewport_xstep = mode.xViewportStep;
>> -    info.viewport_ystep = mode.yViewportStep;
>> -    info.viewport_xmax = mode.maxViewportX;
>> -    info.viewport_ymax = mode.maxViewportY;
>> -    info.viewport_flags = mode.viewportFlags;
>> -    info.reserved1 = mode.reserved1;
>> -    info.reserved2 = mode.reserved2;
>> -
>> -    rep.length = bytes_to_int32(sz_xXDGAModeInfo + info.name_size);
>> -
>> -    WriteToClient(client, sz_xXDGASetModeReply, (char*)&rep);
>> -    WriteToClient(client, sz_xXDGAModeInfo, (char*)(&info));
>> -    WriteToClient(client, size, mode.name);
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGASetViewport(ClientPtr client)
>> -{
>> -    REQUEST(xXDGASetViewportReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGASetViewportReq);
>> -
>> -    DGASetViewport(stuff->screen, stuff->x, stuff->y, stuff->flags);
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGAInstallColormap(ClientPtr client)
>> -{
>> -    ColormapPtr cmap;
>> -    int rc;
>> -    REQUEST(xXDGAInstallColormapReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAInstallColormapReq);
>> -
>> -    rc = dixLookupResourceByType((pointer *)&cmap, stuff->cmap, RT_COLORMAP,
>> -				 client, DixInstallAccess);
>> -    if (rc != Success)
>> -        return rc;
>> -    DGAInstallCmap(cmap);
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGASelectInput(ClientPtr client)
>> -{
>> -    REQUEST(xXDGASelectInputReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGASelectInputReq);
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) == client)
>> -	DGASelectInput(stuff->screen, client, stuff->mask);
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGAFillRectangle(ClientPtr client)
>> -{
>> -    REQUEST(xXDGAFillRectangleReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAFillRectangleReq);
>> -
>> -    if(Success != DGAFillRect(stuff->screen, stuff->x, stuff->y,
>> -			stuff->width, stuff->height, stuff->color))
>> -	return BadMatch;
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGACopyArea(ClientPtr client)
>> -{
>> -    REQUEST(xXDGACopyAreaReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGACopyAreaReq);
>> -
>> -    if(Success != DGABlitRect(stuff->screen, stuff->srcx, stuff->srcy,
>> -		stuff->width, stuff->height, stuff->dstx, stuff->dsty))
>> -	return BadMatch;
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGACopyTransparentArea(ClientPtr client)
>> -{
>> -    REQUEST(xXDGACopyTransparentAreaReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGACopyTransparentAreaReq);
>> -
>> -    if(Success != DGABlitTransRect(stuff->screen, stuff->srcx, stuff->srcy,
>> -	stuff->width, stuff->height, stuff->dstx, stuff->dsty, stuff->key))
>> -	return BadMatch;
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGAGetViewportStatus(ClientPtr client)
>> -{
>> -    REQUEST(xXDGAGetViewportStatusReq);
>> -    xXDGAGetViewportStatusReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAGetViewportStatusReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    rep.status = DGAGetViewportStatus(stuff->screen);
>> -
>> -    WriteToClient(client, sizeof(xXDGAGetViewportStatusReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGASync(ClientPtr client)
>> -{
>> -    REQUEST(xXDGASyncReq);
>> -    xXDGASyncReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGASyncReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    DGASync(stuff->screen);
>> -
>> -    WriteToClient(client, sizeof(xXDGASyncReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGASetClientVersion(ClientPtr client)
>> -{
>> -    REQUEST(xXDGASetClientVersionReq);
>> -
>> -    DGAPrivPtr pPriv;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGASetClientVersionReq);
>> -    if ((pPriv = DGA_GETPRIV(client)) == NULL) {
>> -	pPriv = malloc(sizeof(DGAPrivRec));
>> -	/* XXX Need to look into freeing this */
>> -	if (!pPriv)
>> -	    return BadAlloc;
>> -	DGA_SETPRIV(client, pPriv);
>> -    }
>> -    pPriv->major = stuff->major;
>> -    pPriv->minor = stuff->minor;
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXDGAChangePixmapMode(ClientPtr client)
>> -{
>> -    REQUEST(xXDGAChangePixmapModeReq);
>> -    xXDGAChangePixmapModeReply rep;
>> -    int x, y;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGAChangePixmapModeReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    x = stuff->x;
>> -    y = stuff->y;
>> -
>> -    if(!DGAChangePixmapMode(stuff->screen, &x, &y, stuff->flags))
>> -	return BadMatch;
>> -
>> -    rep.x = x;
>> -    rep.y = y;
>> -    WriteToClient(client, sizeof(xXDGAChangePixmapModeReply), (char *)&rep);
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXDGACreateColormap(ClientPtr client)
>> -{
>> -    REQUEST(xXDGACreateColormapReq);
>> -    int result;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -        return BadValue;
>> -
>> -    if(DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXDGACreateColormapReq);
>> -
>> -    if(!stuff->mode)
>> -	return BadValue;
>> -
>> -    result = DGACreateColormap(stuff->screen, client, stuff->id,
>> -				stuff->mode, stuff->alloc);
>> -    if(result != Success)
>> -	return result;
>> -
>> -    return Success;
>> -}
>> -
>> -/*
>> - *
>> - * Support for the old DGA protocol, used to live in xf86dga.c
>> - *
>> - */
>> -
>> -#ifdef DGA_PROTOCOL_OLD_SUPPORT
>> -
>> -
>> -
>> -static int
>> -ProcXF86DGAGetVideoLL(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGAGetVideoLLReq);
>> -    xXF86DGAGetVideoLLReply rep;
>> -    XDGAModeRec mode;
>> -    int num, offset, flags;
>> -    char *name;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAGetVideoLLReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    if(!DGAAvailable(stuff->screen))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    /* get the parameters for the mode that best matches */
>> -    DGAGetModeInfo(stuff->screen, &mode, num);
>> -
>> -    if(!DGAOpenFramebuffer(stuff->screen, &name,
>> -			(unsigned char**)(&rep.offset),
>> -			(int*)(&rep.bank_size), &offset, &flags))
>> -	return BadAlloc;
>> -
>> -    rep.offset += mode.offset;
>> -    rep.width = mode.bytesPerScanline / (mode.bitsPerPixel >> 3);
>> -    rep.ram_size = rep.bank_size >> 10;
>> -
>> -    WriteToClient(client, SIZEOF(xXF86DGAGetVideoLLReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXF86DGADirectVideo(ClientPtr client)
>> -{
>> -    int num;
>> -    PixmapPtr pix;
>> -    XDGAModeRec mode;
>> -    ClientPtr owner;
>> -    REQUEST(xXF86DGADirectVideoReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -    REQUEST_SIZE_MATCH(xXF86DGADirectVideoReq);
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    owner = DGA_GETCLIENT(stuff->screen);
>> -
>> -    if (owner && owner != client)
>> -        return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if (stuff->enable & XF86DGADirectGraphics) {
>> -	if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> -	    return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -    } else
>> -	num = 0;
>> -
>> -    if(Success != DGASetMode(stuff->screen, num, &mode, &pix))
>> -	return DGAErrorBase + XF86DGAScreenNotActive;
>> -
>> -    DGASetInputMode (stuff->screen,
>> -		     (stuff->enable & XF86DGADirectKeyb) != 0,
>> -		     (stuff->enable & XF86DGADirectMouse) != 0);
>> -
>> -    /* We need to track the client and attach the teardown callback */
>> -    if (stuff->enable &
>> -	(XF86DGADirectGraphics | XF86DGADirectKeyb | XF86DGADirectMouse)) {
>> -	if (!owner) {
>> -	    if (DGACallbackRefCount++ == 0)
>> -		AddCallback (&ClientStateCallback, DGAClientStateChange, NULL);
>> -	}
>> -
>> -	DGA_SETCLIENT(stuff->screen, client);
>> -    } else {
>> -	if (owner) {
>> -	    if (--DGACallbackRefCount == 0)
>> -		DeleteCallback(&ClientStateCallback, DGAClientStateChange, NULL);
>> -	}
>> -
>> -	DGA_SETCLIENT(stuff->screen, NULL);
>> -    }
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXF86DGAGetViewPortSize(ClientPtr client)
>> -{
>> -    int num;
>> -    XDGAModeRec mode;
>> -    REQUEST(xXF86DGAGetViewPortSizeReq);
>> -    xXF86DGAGetViewPortSizeReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAGetViewPortSizeReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if(!(num = DGAGetOldDGAMode(stuff->screen)))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    DGAGetModeInfo(stuff->screen, &mode, num);
>> -
>> -    rep.width = mode.viewportWidth;
>> -    rep.height = mode.viewportHeight;
>> -
>> -    WriteToClient(client, SIZEOF(xXF86DGAGetViewPortSizeReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXF86DGASetViewPort(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGASetViewPortReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    if (DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGASetViewPortReq);
>> -
>> -    if (!DGAAvailable(stuff->screen))
>> -	return DGAErrorBase + XF86DGANoDirectVideoMode;
>> -
>> -    if (!DGAActive(stuff->screen))
>> -	return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    if (DGASetViewport(stuff->screen, stuff->x, stuff->y, DGA_FLIP_RETRACE)
>> -		!= Success)
>> -	return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXF86DGAGetVidPage(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGAGetVidPageReq);
>> -    xXF86DGAGetVidPageReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAGetVidPageReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -    rep.vpage = 0;  /* silently fail */
>> -
>> -    WriteToClient(client, SIZEOF(xXF86DGAGetVidPageReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXF86DGASetVidPage(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGASetVidPageReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGASetVidPageReq);
>> -
>> -    /* silently fail */
>> -
>> -    return Success;
>> -}
>> -
>> -
>> -static int
>> -ProcXF86DGAInstallColormap(ClientPtr client)
>> -{
>> -    ColormapPtr pcmp;
>> -    int rc;
>> -    REQUEST(xXF86DGAInstallColormapReq);
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    if (DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAInstallColormapReq);
>> -
>> -    if (!DGAActive(stuff->screen))
>> -	return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    rc = dixLookupResourceByType((pointer *)&pcmp, stuff->id, RT_COLORMAP,
>> -				 client, DixInstallAccess);
>> -    if (rc == Success) {
>> -	DGAInstallCmap(pcmp);
>> -        return Success;
>> -    } else {
>> -        return rc;
>> -    }
>> -}
>> -
>> -static int
>> -ProcXF86DGAQueryDirectVideo(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGAQueryDirectVideoReq);
>> -    xXF86DGAQueryDirectVideoReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAQueryDirectVideoReq);
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -    rep.flags = 0;
>> -
>> -    if (DGAAvailable(stuff->screen))
>> -	rep.flags = XF86DGADirectPresent;
>> -
>> -    WriteToClient(client, SIZEOF(xXF86DGAQueryDirectVideoReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -static int
>> -ProcXF86DGAViewPortChanged(ClientPtr client)
>> -{
>> -    REQUEST(xXF86DGAViewPortChangedReq);
>> -    xXF86DGAViewPortChangedReply rep;
>> -
>> -    if (stuff->screen >= screenInfo.numScreens)
>> -	return BadValue;
>> -
>> -    if (DGA_GETCLIENT(stuff->screen) != client)
>> -        return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    REQUEST_SIZE_MATCH(xXF86DGAViewPortChangedReq);
>> -
>> -    if (!DGAActive(stuff->screen))
>> -	return DGAErrorBase + XF86DGADirectNotActivated;
>> -
>> -    rep.type = X_Reply;
>> -    rep.length = 0;
>> -    rep.sequenceNumber = client->sequence;
>> -    rep.result = 1;
>> -
>> -    WriteToClient(client, SIZEOF(xXF86DGAViewPortChangedReply), (char *)&rep);
>> -    return Success;
>> -}
>> -
>> -#endif /* DGA_PROTOCOL_OLD_SUPPORT */
>> -
>> -static int
>> -SProcXDGADispatch (ClientPtr client)
>> -{
>> -   return DGAErrorBase + XF86DGAClientNotLocal;
>> -}
>> -
>> -#if 0
>> -#define DGA_REQ_DEBUG
>> -#endif
>> -
>> -#ifdef DGA_REQ_DEBUG
>> -static char *dgaMinor[] = {
>> -    "QueryVersion",
>> -    "GetVideoLL",
>> -    "DirectVideo",
>> -    "GetViewPortSize",
>> -    "SetViewPort",
>> -    "GetVidPage",
>> -    "SetVidPage",
>> -    "InstallColormap",
>> -    "QueryDirectVideo",
>> -    "ViewPortChanged",
>> -    "10",
>> -    "11",
>> -    "QueryModes",
>> -    "SetMode",
>> -    "SetViewport",
>> -    "InstallColormap",
>> -    "SelectInput",
>> -    "FillRectangle",
>> -    "CopyArea",
>> -    "CopyTransparentArea",
>> -    "GetViewportStatus",
>> -    "Sync",
>> -    "OpenFramebuffer",
>> -    "CloseFramebuffer",
>> -    "SetClientVersion",
>> -    "ChangePixmapMode",
>> -    "CreateColormap",
>> -};
>> -#endif
>> -
>> -static int
>> -ProcXDGADispatch (ClientPtr client)
>> -{
>> -    REQUEST(xReq);
>> -
>> -    if (!LocalClient(client))
>> -	return DGAErrorBase + XF86DGAClientNotLocal;
>> -
>> -#ifdef DGA_REQ_DEBUG
>> -    if (stuff->data <= X_XDGACreateColormap)
>> -	fprintf (stderr, "    DGA %s\n", dgaMinor[stuff->data]);
>> -#endif
>> -
>> -    switch (stuff->data){
>> -    /*
>> -     * DGA2 Protocol
>> -     */
>> -    case X_XDGAQueryVersion:
>> -	return ProcXDGAQueryVersion(client);
>> -    case X_XDGAQueryModes:
>> -	return ProcXDGAQueryModes(client);
>> -    case X_XDGASetMode:
>> -	return ProcXDGASetMode(client);
>> -    case X_XDGAOpenFramebuffer:
>> -	return ProcXDGAOpenFramebuffer(client);
>> -    case X_XDGACloseFramebuffer:
>> -	return ProcXDGACloseFramebuffer(client);
>> -    case X_XDGASetViewport:
>> -	return ProcXDGASetViewport(client);
>> -    case X_XDGAInstallColormap:
>> -	return ProcXDGAInstallColormap(client);
>> -    case X_XDGASelectInput:
>> -	return ProcXDGASelectInput(client);
>> -    case X_XDGAFillRectangle:
>> -	return ProcXDGAFillRectangle(client);
>> -    case X_XDGACopyArea:
>> -	return ProcXDGACopyArea(client);
>> -    case X_XDGACopyTransparentArea:
>> -	return ProcXDGACopyTransparentArea(client);
>> -    case X_XDGAGetViewportStatus:
>> -	return ProcXDGAGetViewportStatus(client);
>> -    case X_XDGASync:
>> -	return ProcXDGASync(client);
>> -    case X_XDGASetClientVersion:
>> -	return ProcXDGASetClientVersion(client);
>> -    case X_XDGAChangePixmapMode:
>> -	return ProcXDGAChangePixmapMode(client);
>> -    case X_XDGACreateColormap:
>> -	return ProcXDGACreateColormap(client);
>> -    /*
>> -     * Old DGA Protocol
>> -     */
>> -#ifdef DGA_PROTOCOL_OLD_SUPPORT
>> -    case X_XF86DGAGetVideoLL:
>> -	return ProcXF86DGAGetVideoLL(client);
>> -    case X_XF86DGADirectVideo:
>> -	return ProcXF86DGADirectVideo(client);
>> -    case X_XF86DGAGetViewPortSize:
>> -	return ProcXF86DGAGetViewPortSize(client);
>> -    case X_XF86DGASetViewPort:
>> -	return ProcXF86DGASetViewPort(client);
>> -    case X_XF86DGAGetVidPage:
>> -	return ProcXF86DGAGetVidPage(client);
>> -    case X_XF86DGASetVidPage:
>> -	return ProcXF86DGASetVidPage(client);
>> -    case X_XF86DGAInstallColormap:
>> -	return ProcXF86DGAInstallColormap(client);
>> -    case X_XF86DGAQueryDirectVideo:
>> -	return ProcXF86DGAQueryDirectVideo(client);
>> -    case X_XF86DGAViewPortChanged:
>> -	return ProcXF86DGAViewPortChanged(client);
>> -#endif /* DGA_PROTOCOL_OLD_SUPPORT */
>> -    default:
>> -	return BadRequest;
>> -    }
>> -}
>> -
>> -void
>> -XFree86DGARegister(void)
>> -{
>> -  XDGAEventBase = &DGAEventBase;
>> -}
>> -
>> -void
>> -XFree86DGAExtensionInit(void)
>> -{
>> -    ExtensionEntry* extEntry;
>> -
>> -    if (!dixRegisterPrivateKey(&DGAClientPrivateKeyRec, PRIVATE_CLIENT, 0))
>> -	return;
>> -
>> -    if (!dixRegisterPrivateKey(&DGAScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
>> -	return;
>> -
>> -    if ((extEntry = AddExtension(XF86DGANAME,
>> -				XF86DGANumberEvents,
>> -				XF86DGANumberErrors,
>> -				ProcXDGADispatch,
>> -				SProcXDGADispatch,
>> -				XDGAResetProc,
>> -				StandardMinorOpcode))) {
>> -	int i;
>> -
>> -	DGAReqCode = (unsigned char)extEntry->base;
>> -	DGAErrorBase = extEntry->errorBase;
>> -	DGAEventBase = extEntry->eventBase;
>> -	for (i = KeyPress; i <= MotionNotify; i++)
>> -	    SetCriticalEvent (DGAEventBase + i);
>> -    }
>> -}
>> diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
>> index 2adf727..a3a8477 100755
>> --- a/hw/xfree86/sdksyms.sh
>> +++ b/hw/xfree86/sdksyms.sh
>> @@ -183,9 +183,9 @@ cat > sdksyms.c << EOF
>>  
>>  
>>  /* hw/xfree86/dixmods/extmod/Makefile.am -- module */
>> -/*
>> +#ifdef XFreeXDGA
>>  #include "dgaproc.h"
>> - */
>> +#endif
>>  
>>  
>>  /* hw/xfree86/parser/Makefile.am */



More information about the xorg-devel mailing list