Merge branch 'master' into XACE-SELINUX

Conflicts:

	configure.ac
This commit is contained in:
Eamon Walsh 2007-04-05 14:41:39 -04:00 committed by Eamon Walsh
commit cf962a849d
77 changed files with 875 additions and 532 deletions

View File

@ -14,7 +14,6 @@ AM_CFLAGS = \
-I@MESA_SOURCE@/src/mesa/glapi \
-I@MESA_SOURCE@/src/mesa/main \
-DXFree86Server \
-DNO_LIBCWRAPPER \
@GLX_DEFINES@
# none yet

View File

@ -275,7 +275,7 @@ static GLboolean errorOccured = GL_FALSE;
/*
** The GL was will call this routine if an error occurs.
*/
void __glXErrorCallBack(__GLinterface *gc, GLenum code)
void __glXErrorCallBack(GLenum code)
{
errorOccured = GL_TRUE;
}

View File

@ -66,7 +66,7 @@ typedef struct {
extern GLboolean __glXFreeContext(__GLXcontext *glxc);
extern void __glXFlushContextCache(void);
extern void __glXErrorCallBack(__GLinterface *gc, GLenum code);
extern void __glXErrorCallBack(GLenum code);
extern void __glXClearErrorOccured(void);
extern GLboolean __glXErrorOccured(void);
extern void __glXResetLargeCommandStatus(__GLXclientState*);

View File

@ -20,13 +20,11 @@ INCLUDES = -I@MESA_SOURCE@/include \
AM_CFLAGS = \
$(DIX_CFLAGS) \
-DXFree86Server \
@GLX_DEFINES@ \
-DXFree86Server
@GLX_DEFINES@
libX_la_SOURCES = xf86glx.c \
xf86glx_util.c \
xf86glx_util.h \
xf86glxint.h
xf86glx_util.h
nodist_libX_la_SOURCES = \
xm_api.c \

View File

@ -37,40 +37,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#endif
#include <string.h>
#include <regionstr.h>
#include <resource.h>
#include <GL/gl.h>
#include <GL/glxint.h>
#include <GL/glxtokens.h>
#include <scrnintstr.h>
#include <windowstr.h>
#include <config.h>
#include <GL/xmesa.h>
#include <GL/internal/glcore.h>
#include <glxserver.h>
#include <glxscreens.h>
#include <glxdrawable.h>
#include <glxcontext.h>
#include <glxext.h>
#include <glxutil.h>
#include "context.h"
#include "xmesaP.h"
#include "context.h"
#include "glcontextmodes.h"
#include "os.h"
/*
* This define is for the glcore.h header file.
* If you add it here, then make sure you also add it in
* ../../../glx/Imakefile.
*/
#if 0
#define DEBUG
#include <GL/internal/glcore.h>
#undef DEBUG
#else
#include <GL/internal/glcore.h>
#endif
typedef struct __GLXMESAscreen __GLXMESAscreen;
typedef struct __GLXMESAcontext __GLXMESAcontext;
typedef struct __GLXMESAdrawable __GLXMESAdrawable;
@ -218,8 +197,7 @@ __glXMesaContextCopy(__GLXcontext *baseDst,
__GLXMESAcontext *dst = (__GLXMESAcontext *) baseDst;
__GLXMESAcontext *src = (__GLXMESAcontext *) baseSrc;
_mesa_copy_context(&src->xmesa->mesa, &dst->xmesa->mesa, mask);
return GL_TRUE;
return XMesaCopyContext(src->xmesa, dst->xmesa, mask);
}
static int
@ -227,7 +205,7 @@ __glXMesaContextForceCurrent(__GLXcontext *baseContext)
{
__GLXMESAcontext *context = (__GLXMESAcontext *) baseContext;
GlxSetRenderTables (context->xmesa->mesa.CurrentDispatch);
/* GlxSetRenderTables() call for XGL moved in XMesaForceCurrent() */
return XMesaForceCurrent(context->xmesa);
}

View File

@ -37,8 +37,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <stdlib.h>
#include <gcstruct.h>
#include "pixmapstr.h"
#include "xf86glx_util.h"
#include <X11/Xmd.h>

View File

@ -1,45 +0,0 @@
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sub license, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice (including the
next paragraph) shall be included in all copies or substantial portions
of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
/*
* Authors:
* Kevin E. Martin <kevin@precisioninsight.com>
*
*/
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _XF86GLXINT_H_
#define _XF86GLXINT_H_
#include <miscstruct.h>
#include <GL/gl.h>
#include <GL/xmesa.h>
#endif /* _XF86GLXINT_H_ */

View File

@ -225,9 +225,6 @@ symlink_glx() {
dst_dir glx
action indirect_size.h
src_dir src/mesa/drivers/dri/common
action glcontextmodes.c
action glcontextmodes.h

View File

@ -42,6 +42,12 @@ from The Open Group.
#include <X11/extensions/xcmiscstr.h>
#include "modinit.h"
#if HAVE_STDINT_H
#include <stdint.h>
#elif !defined(UINT32_MAX)
#define UINT32_MAX 0xffffffffU
#endif
#if 0
static unsigned char XCMiscCode;
#endif
@ -143,7 +149,10 @@ ProcXCMiscGetXIDList(client)
REQUEST_SIZE_MATCH(xXCMiscGetXIDListReq);
pids = (XID *)ALLOCATE_LOCAL(stuff->count * sizeof(XID));
if (stuff->count > UINT32_MAX / sizeof(XID))
return BadAlloc;
pids = (XID *)Xalloc(stuff->count * sizeof(XID));
if (!pids)
{
return BadAlloc;
@ -164,7 +173,7 @@ ProcXCMiscGetXIDList(client)
client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
WriteSwappedDataToClient(client, count * sizeof(XID), pids);
}
DEALLOCATE_LOCAL(pids);
Xfree(pids);
return(client->noClientException);
}

View File

@ -76,9 +76,9 @@ SOFTWARE.
*/
int
SProcXAllowDeviceEvents(register ClientPtr client)
SProcXAllowDeviceEvents(ClientPtr client)
{
register char n;
char n;
REQUEST(xAllowDeviceEventsReq);
swaps(&stuff->length, n);
@ -94,7 +94,7 @@ SProcXAllowDeviceEvents(register ClientPtr client)
*/
int
ProcXAllowDeviceEvents(register ClientPtr client)
ProcXAllowDeviceEvents(ClientPtr client)
{
TimeStamp time;
DeviceIntPtr thisdev;

View File

@ -78,9 +78,9 @@ SOFTWARE.
*/
int
SProcXChangeDeviceControl(register ClientPtr client)
SProcXChangeDeviceControl(ClientPtr client)
{
register char n;
char n;
REQUEST(xChangeDeviceControlReq);
swaps(&stuff->length, n);
@ -287,7 +287,7 @@ void
SRepXChangeDeviceControl(ClientPtr client, int size,
xChangeDeviceControlReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -78,9 +78,9 @@ SOFTWARE.
*/
int
SProcXChangeFeedbackControl(register ClientPtr client)
SProcXChangeFeedbackControl(ClientPtr client)
{
register char n;
char n;
REQUEST(xChangeFeedbackControlReq);
swaps(&stuff->length, n);
@ -99,7 +99,7 @@ static int
ChangeKbdFeedback(ClientPtr client, DeviceIntPtr dev, long unsigned int mask,
KbdFeedbackPtr k, xKbdFeedbackCtl * f)
{
register char n;
char n;
KeybdCtrl kctrl;
int t;
int key = DO_ALL;
@ -231,7 +231,7 @@ static int
ChangePtrFeedback(ClientPtr client, DeviceIntPtr dev, long unsigned int mask,
PtrFeedbackPtr p, xPtrFeedbackCtl * f)
{
register char n;
char n;
PtrCtrl pctrl; /* might get BadValue part way through */
if (client->swapped) {
@ -303,7 +303,7 @@ ChangeIntegerFeedback(ClientPtr client, DeviceIntPtr dev,
long unsigned int mask, IntegerFeedbackPtr i,
xIntegerFeedbackCtl * f)
{
register char n;
char n;
if (client->swapped) {
swaps(&f->length, n);
@ -326,8 +326,8 @@ ChangeStringFeedback(ClientPtr client, DeviceIntPtr dev,
long unsigned int mask, StringFeedbackPtr s,
xStringFeedbackCtl * f)
{
register char n;
register long *p;
char n;
long *p;
int i, j;
KeySym *syms, *sup_syms;
@ -376,7 +376,7 @@ ChangeBellFeedback(ClientPtr client, DeviceIntPtr dev,
long unsigned int mask, BellFeedbackPtr b,
xBellFeedbackCtl * f)
{
register char n;
char n;
int t;
BellCtrl bctrl; /* might get BadValue part way through */
@ -440,7 +440,7 @@ static int
ChangeLedFeedback(ClientPtr client, DeviceIntPtr dev, long unsigned int mask,
LedFeedbackPtr l, xLedFeedbackCtl * f)
{
register char n;
char n;
LedCtrl lctrl; /* might get BadValue part way through */
if (client->swapped) {
@ -520,7 +520,7 @@ ProcXChangeFeedbackControl(ClientPtr client)
break;
case StringFeedbackClass:
{
register char n;
char n;
xStringFeedbackCtl *f = ((xStringFeedbackCtl *) & stuff[1]);
if (client->swapped) {

View File

@ -78,9 +78,9 @@ SOFTWARE.
*/
int
SProcXChangeKeyboardDevice(register ClientPtr client)
SProcXChangeKeyboardDevice(ClientPtr client)
{
register char n;
char n;
REQUEST(xChangeKeyboardDeviceReq);
swaps(&stuff->length, n);
@ -96,7 +96,7 @@ SProcXChangeKeyboardDevice(register ClientPtr client)
*/
int
ProcXChangeKeyboardDevice(register ClientPtr client)
ProcXChangeKeyboardDevice(ClientPtr client)
{
REQUEST(xChangeKeyboardDeviceReq);
REQUEST_SIZE_MATCH(xChangeKeyboardDeviceReq);

View File

@ -76,11 +76,11 @@ SOFTWARE.
*/
int
SProcXChangeDeviceKeyMapping(register ClientPtr client)
SProcXChangeDeviceKeyMapping(ClientPtr client)
{
register char n;
register long *p;
register int i, count;
char n;
long *p;
int i, count;
REQUEST(xChangeDeviceKeyMappingReq);
swaps(&stuff->length, n);
@ -101,7 +101,7 @@ SProcXChangeDeviceKeyMapping(register ClientPtr client)
*/
int
ProcXChangeDeviceKeyMapping(register ClientPtr client)
ProcXChangeDeviceKeyMapping(ClientPtr client)
{
int ret;
unsigned len;

View File

@ -78,11 +78,11 @@ SOFTWARE.
*/
int
SProcXChangeDeviceDontPropagateList(register ClientPtr client)
SProcXChangeDeviceDontPropagateList(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
REQUEST(xChangeDeviceDontPropagateListReq);
swaps(&stuff->length, n);
@ -104,7 +104,7 @@ SProcXChangeDeviceDontPropagateList(register ClientPtr client)
*/
int
ProcXChangeDeviceDontPropagateList(register ClientPtr client)
ProcXChangeDeviceDontPropagateList(ClientPtr client)
{
int i, rc;
WindowPtr pWin;

View File

@ -82,9 +82,9 @@ SOFTWARE.
*/
int
SProcXChangePointerDevice(register ClientPtr client)
SProcXChangePointerDevice(ClientPtr client)
{
register char n;
char n;
REQUEST(xChangePointerDeviceReq);
swaps(&stuff->length, n);
@ -99,7 +99,7 @@ SProcXChangePointerDevice(register ClientPtr client)
*/
int
ProcXChangePointerDevice(register ClientPtr client)
ProcXChangePointerDevice(ClientPtr client)
{
REQUEST(xChangePointerDeviceReq);
REQUEST_SIZE_MATCH(xChangePointerDeviceReq);

View File

@ -77,9 +77,9 @@ SOFTWARE.
*/
int
SProcXCloseDevice(register ClientPtr client)
SProcXCloseDevice(ClientPtr client)
{
register char n;
char n;
REQUEST(xCloseDeviceReq);
swaps(&stuff->length, n);
@ -141,7 +141,7 @@ DeleteEventsFromChildren(DeviceIntPtr dev, WindowPtr p1, ClientPtr client)
*/
int
ProcXCloseDevice(register ClientPtr client)
ProcXCloseDevice(ClientPtr client)
{
int i;
WindowPtr pWin, p1;

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXDeviceBell(register ClientPtr client)
SProcXDeviceBell(ClientPtr client)
{
register char n;
char n;
REQUEST(xDeviceBellReq);
swaps(&stuff->length, n);
@ -91,7 +91,7 @@ SProcXDeviceBell(register ClientPtr client)
*/
int
ProcXDeviceBell(register ClientPtr client)
ProcXDeviceBell(ClientPtr client)
{
DeviceIntPtr dev;
KbdFeedbackPtr k;

View File

@ -104,12 +104,12 @@ RegisterOtherDevice(DeviceIntPtr device)
}
/*ARGSUSED*/ void
ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count)
ProcessOtherEvent(xEventPtr xE, DeviceIntPtr other, int count)
{
register BYTE *kptr;
register int i;
register CARD16 modifiers;
register CARD16 mask;
BYTE *kptr;
int i;
CARD16 modifiers;
CARD16 mask;
GrabPtr grab = other->grab;
Bool deactivateDeviceGrab = FALSE;
int key = 0, bit = 0, rootX, rootY;
@ -288,7 +288,7 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count)
_X_EXPORT int
InitProximityClassDeviceStruct(DeviceIntPtr dev)
{
register ProximityClassPtr proxc;
ProximityClassPtr proxc;
proxc = (ProximityClassPtr) xalloc(sizeof(ProximityClassRec));
if (!proxc)
@ -301,7 +301,7 @@ _X_EXPORT void
InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, int minval, int maxval,
int resolution, int min_res, int max_res)
{
register AxisInfoPtr ax;
AxisInfoPtr ax;
if (!dev || !dev->valuator)
return;
@ -378,7 +378,7 @@ FixDeviceValuator(DeviceIntPtr dev, deviceValuator * ev, ValuatorClassPtr v,
void
DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
register WindowPtr pWin)
WindowPtr pWin)
{
deviceFocus event;
@ -703,9 +703,9 @@ MakeInputMasks(WindowPtr pWin)
void
RecalculateDeviceDeliverableEvents(WindowPtr pWin)
{
register InputClientsPtr others;
InputClientsPtr others;
struct _OtherInputMasks *inputMasks; /* default: NULL */
register WindowPtr pChild, tmp;
WindowPtr pChild, tmp;
int i;
pChild = pWin;
@ -739,9 +739,9 @@ RecalculateDeviceDeliverableEvents(WindowPtr pWin)
}
int
InputClientGone(register WindowPtr pWin, XID id)
InputClientGone(WindowPtr pWin, XID id)
{
register InputClientsPtr other, prev;
InputClientsPtr other, prev;
if (!wOtherInputMasks(pWin))
return (Success);
@ -839,7 +839,7 @@ SendEvent(ClientPtr client, DeviceIntPtr d, Window dest, Bool propagate,
int
SetButtonMapping(ClientPtr client, DeviceIntPtr dev, int nElts, BYTE * map)
{
register int i;
int i;
ButtonClassPtr b = dev->button;
if (b == NULL)
@ -865,7 +865,7 @@ SetModifierMapping(ClientPtr client, DeviceIntPtr dev, int len, int rlen,
{
KeyCode *map = NULL;
int inputMapLen;
register int i;
int i;
*k = dev->key;
if (*k == NULL)
@ -1141,7 +1141,7 @@ CheckDeviceGrabAndHintWindow(WindowPtr pWin, int type,
static Mask
DeviceEventMaskForClient(DeviceIntPtr dev, WindowPtr pWin, ClientPtr client)
{
register InputClientsPtr other;
InputClientsPtr other;
if (!wOtherInputMasks(pWin))
return 0;
@ -1154,7 +1154,7 @@ DeviceEventMaskForClient(DeviceIntPtr dev, WindowPtr pWin, ClientPtr client)
}
void
MaybeStopDeviceHint(register DeviceIntPtr dev, ClientPtr client)
MaybeStopDeviceHint(DeviceIntPtr dev, ClientPtr client)
{
WindowPtr pWin;
GrabPtr grab = dev->grab;

View File

@ -216,7 +216,7 @@ static XExtensionVersion thisversion = { XI_Present,
*/
static int
ProcIDispatch(register ClientPtr client)
ProcIDispatch(ClientPtr client)
{
REQUEST(xReq);
if (stuff->data == X_GetExtensionVersion)
@ -305,7 +305,7 @@ ProcIDispatch(register ClientPtr client)
*/
static int
SProcIDispatch(register ClientPtr client)
SProcIDispatch(ClientPtr client)
{
REQUEST(xReq);
if (stuff->data == X_GetExtensionVersion)
@ -464,8 +464,8 @@ SReplyIDispatch(ClientPtr client, int len, xGrabDeviceReply * rep)
static void
SEventDeviceValuator(deviceValuator * from, deviceValuator * to)
{
register char n;
register int i;
char n;
int i;
INT32 *ip B32;
*to = *from;
@ -480,7 +480,7 @@ SEventDeviceValuator(deviceValuator * from, deviceValuator * to)
static void
SEventFocus(deviceFocus * from, deviceFocus * to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber, n);
@ -491,8 +491,8 @@ SEventFocus(deviceFocus * from, deviceFocus * to)
static void
SDeviceStateNotifyEvent(deviceStateNotify * from, deviceStateNotify * to)
{
register int i;
register char n;
int i;
char n;
INT32 *ip B32;
*to = *from;
@ -508,7 +508,7 @@ static void
SDeviceKeyStateNotifyEvent(deviceKeyStateNotify * from,
deviceKeyStateNotify * to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber, n);
@ -518,7 +518,7 @@ static void
SDeviceButtonStateNotifyEvent(deviceButtonStateNotify * from,
deviceButtonStateNotify * to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber, n);
@ -527,7 +527,7 @@ SDeviceButtonStateNotifyEvent(deviceButtonStateNotify * from,
static void
SChangeDeviceNotifyEvent(changeDeviceNotify * from, changeDeviceNotify * to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber, n);
@ -537,7 +537,7 @@ SChangeDeviceNotifyEvent(changeDeviceNotify * from, changeDeviceNotify * to)
static void
SDeviceMappingNotifyEvent(deviceMappingNotify * from, deviceMappingNotify * to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber, n);
@ -547,7 +547,7 @@ SDeviceMappingNotifyEvent(deviceMappingNotify * from, deviceMappingNotify * to)
static void
SDevicePresenceNotifyEvent (devicePresenceNotify *from, devicePresenceNotify *to)
{
register char n;
char n;
*to = *from;
swaps(&to->sequenceNumber,n);

View File

@ -74,9 +74,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceButtonMapping(register ClientPtr client)
SProcXGetDeviceButtonMapping(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceButtonMappingReq);
swaps(&stuff->length, n);
@ -90,7 +90,7 @@ SProcXGetDeviceButtonMapping(register ClientPtr client)
*/
int
ProcXGetDeviceButtonMapping(register ClientPtr client)
ProcXGetDeviceButtonMapping(ClientPtr client)
{
DeviceIntPtr dev;
xGetDeviceButtonMappingReply rep;
@ -136,7 +136,7 @@ void
SRepXGetDeviceButtonMapping(ClientPtr client, int size,
xGetDeviceButtonMappingReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceControl(register ClientPtr client)
SProcXGetDeviceControl(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceControlReq);
swaps(&stuff->length, n);
@ -96,7 +96,7 @@ static void
CopySwapDeviceResolution(ClientPtr client, ValuatorClassPtr v, char *buf,
int length)
{
register char n;
char n;
AxisInfoPtr a;
xDeviceResolutionState *r;
int i, *iptr;
@ -127,7 +127,7 @@ CopySwapDeviceResolution(ClientPtr client, ValuatorClassPtr v, char *buf,
static void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
char *buf)
{
register char n;
char n;
xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
calib->control = DEVICE_ABS_CALIB;
@ -158,7 +158,7 @@ static void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
static void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
char *buf)
{
register char n;
char n;
xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
area->control = DEVICE_ABS_AREA;
@ -184,7 +184,7 @@ static void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
static void CopySwapDeviceCore (ClientPtr client, DeviceIntPtr dev, char *buf)
{
register char n;
char n;
xDeviceCoreState *c = (xDeviceCoreState *) buf;
c->control = DEVICE_CORE;
@ -201,7 +201,7 @@ static void CopySwapDeviceCore (ClientPtr client, DeviceIntPtr dev, char *buf)
static void CopySwapDeviceEnable (ClientPtr client, DeviceIntPtr dev, char *buf)
{
register char n;
char n;
xDeviceEnableState *e = (xDeviceEnableState *) buf;
e->control = DEVICE_ENABLE;
@ -225,7 +225,7 @@ static void CopySwapDeviceEnable (ClientPtr client, DeviceIntPtr dev, char *buf)
void
SRepXGetDeviceControl(ClientPtr client, int size, xGetDeviceControlReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
@ -243,7 +243,7 @@ ProcXGetDeviceControl(ClientPtr client)
{
int total_length = 0;
char *buf, *savbuf;
register DeviceIntPtr dev;
DeviceIntPtr dev;
xGetDeviceControlReply rep;
REQUEST(xGetDeviceControlReq);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXGetFeedbackControl(register ClientPtr client)
SProcXGetFeedbackControl(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetFeedbackControlReq);
swaps(&stuff->length, n);
@ -94,7 +94,7 @@ static void
CopySwapKbdFeedback(ClientPtr client, KbdFeedbackPtr k, char **buf)
{
int i;
register char n;
char n;
xKbdFeedbackState *k2;
k2 = (xKbdFeedbackState *) * buf;
@ -128,7 +128,7 @@ CopySwapKbdFeedback(ClientPtr client, KbdFeedbackPtr k, char **buf)
static void
CopySwapPtrFeedback(ClientPtr client, PtrFeedbackPtr p, char **buf)
{
register char n;
char n;
xPtrFeedbackState *p2;
p2 = (xPtrFeedbackState *) * buf;
@ -156,7 +156,7 @@ CopySwapPtrFeedback(ClientPtr client, PtrFeedbackPtr p, char **buf)
static void
CopySwapIntegerFeedback(ClientPtr client, IntegerFeedbackPtr i, char **buf)
{
register char n;
char n;
xIntegerFeedbackState *i2;
i2 = (xIntegerFeedbackState *) * buf;
@ -185,7 +185,7 @@ static void
CopySwapStringFeedback(ClientPtr client, StringFeedbackPtr s, char **buf)
{
int i;
register char n;
char n;
xStringFeedbackState *s2;
KeySym *kptr;
@ -221,7 +221,7 @@ CopySwapStringFeedback(ClientPtr client, StringFeedbackPtr s, char **buf)
static void
CopySwapLedFeedback(ClientPtr client, LedFeedbackPtr l, char **buf)
{
register char n;
char n;
xLedFeedbackState *l2;
l2 = (xLedFeedbackState *) * buf;
@ -247,7 +247,7 @@ CopySwapLedFeedback(ClientPtr client, LedFeedbackPtr l, char **buf)
static void
CopySwapBellFeedback(ClientPtr client, BellFeedbackPtr b, char **buf)
{
register char n;
char n;
xBellFeedbackState *b2;
b2 = (xBellFeedbackState *) * buf;
@ -276,7 +276,7 @@ void
SRepXGetFeedbackControl(ClientPtr client, int size,
xGetFeedbackControlReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
@ -295,7 +295,7 @@ ProcXGetFeedbackControl(ClientPtr client)
{
int total_length = 0;
char *buf, *savbuf;
register DeviceIntPtr dev;
DeviceIntPtr dev;
KbdFeedbackPtr k;
PtrFeedbackPtr p;
IntegerFeedbackPtr i;

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceFocus(register ClientPtr client)
SProcXGetDeviceFocus(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceFocusReq);
swaps(&stuff->length, n);
@ -138,7 +138,7 @@ ProcXGetDeviceFocus(ClientPtr client)
void
SRepXGetDeviceFocus(ClientPtr client, int size, xGetDeviceFocusReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -76,9 +76,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceKeyMapping(register ClientPtr client)
SProcXGetDeviceKeyMapping(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceKeyMappingReq);
swaps(&stuff->length, n);
@ -92,7 +92,7 @@ SProcXGetDeviceKeyMapping(register ClientPtr client)
*/
int
ProcXGetDeviceKeyMapping(register ClientPtr client)
ProcXGetDeviceKeyMapping(ClientPtr client)
{
xGetDeviceKeyMappingReply rep;
DeviceIntPtr dev;
@ -154,7 +154,7 @@ void
SRepXGetDeviceKeyMapping(ClientPtr client, int size,
xGetDeviceKeyMappingReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceModifierMapping(register ClientPtr client)
SProcXGetDeviceModifierMapping(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceModifierMappingReq);
swaps(&stuff->length, n);
@ -141,7 +141,7 @@ void
SRepXGetDeviceModifierMapping(ClientPtr client, int size,
xGetDeviceModifierMappingReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -79,9 +79,9 @@ extern int ExtEventIndex;
*/
int
SProcXGetDeviceDontPropagateList(register ClientPtr client)
SProcXGetDeviceDontPropagateList(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceDontPropagateListReq);
swaps(&stuff->length, n);
@ -97,7 +97,7 @@ SProcXGetDeviceDontPropagateList(register ClientPtr client)
*/
int
ProcXGetDeviceDontPropagateList(register ClientPtr client)
ProcXGetDeviceDontPropagateList(ClientPtr client)
{
CARD16 count = 0;
int i, rc;
@ -187,7 +187,7 @@ void
SRepXGetDeviceDontPropagateList(ClientPtr client, int size,
xGetDeviceDontPropagateListReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -77,9 +77,9 @@ SOFTWARE.
*/
int
SProcXGetSelectedExtensionEvents(register ClientPtr client)
SProcXGetSelectedExtensionEvents(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetSelectedExtensionEventsReq);
swaps(&stuff->length, n);
@ -96,7 +96,7 @@ SProcXGetSelectedExtensionEvents(register ClientPtr client)
*/
int
ProcXGetSelectedExtensionEvents(register ClientPtr client)
ProcXGetSelectedExtensionEvents(ClientPtr client)
{
int i, rc, total_length = 0;
xGetSelectedExtensionEventsReply rep;
@ -177,7 +177,7 @@ void
SRepXGetSelectedExtensionEvents(ClientPtr client, int size,
xGetSelectedExtensionEventsReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -76,9 +76,9 @@ XExtensionVersion AllExtensionVersions[128];
*/
int
SProcXGetExtensionVersion(register ClientPtr client)
SProcXGetExtensionVersion(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetExtensionVersionReq);
swaps(&stuff->length, n);
@ -94,7 +94,7 @@ SProcXGetExtensionVersion(register ClientPtr client)
*/
int
ProcXGetExtensionVersion(register ClientPtr client)
ProcXGetExtensionVersion(ClientPtr client)
{
xGetExtensionVersionReply rep;
@ -136,7 +136,7 @@ void
SRepXGetExtensionVersion(ClientPtr client, int size,
xGetExtensionVersionReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -79,11 +79,11 @@ extern int ExtEventIndex;
*/
int
SProcXGrabDevice(register ClientPtr client)
SProcXGrabDevice(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
REQUEST(xGrabDeviceReq);
swaps(&stuff->length, n);
@ -202,7 +202,7 @@ CreateMaskFromList(ClientPtr client, XEventClass * list, int count,
void
SRepXGrabDevice(ClientPtr client, int size, xGrabDeviceReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -77,11 +77,11 @@ SOFTWARE.
*/
int
SProcXGrabDeviceButton(register ClientPtr client)
SProcXGrabDeviceButton(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
REQUEST(xGrabDeviceButtonReq);
swaps(&stuff->length, n);

View File

@ -77,11 +77,11 @@ SOFTWARE.
*/
int
SProcXGrabDeviceKey(register ClientPtr client)
SProcXGrabDeviceKey(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
REQUEST(xGrabDeviceKeyReq);
swaps(&stuff->length, n);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXGetDeviceMotionEvents(register ClientPtr client)
SProcXGetDeviceMotionEvents(ClientPtr client)
{
register char n;
char n;
REQUEST(xGetDeviceMotionEventsReq);
swaps(&stuff->length, n);
@ -162,7 +162,7 @@ ProcXGetDeviceMotionEvents(ClientPtr client)
WriteReplyToClient(client, sizeof(xGetDeviceMotionEventsReply), &rep);
if (nEvents) {
if (client->swapped) {
register char n;
char n;
bufptr = coords;
for (i = 0; i < nEvents * (axes + 1); i++) {
@ -188,7 +188,7 @@ void
SRepXGetDeviceMotionEvents(ClientPtr client, int size,
xGetDeviceMotionEventsReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -77,9 +77,9 @@ SOFTWARE.
*/
int
SProcXListInputDevices(register ClientPtr client)
SProcXListInputDevices(ClientPtr client)
{
register char n;
char n;
REQUEST(xListInputDevicesReq);
swaps(&stuff->length, n);
@ -144,9 +144,9 @@ CopyDeviceName(char **namebuf, char *name)
*/
static void
CopySwapButtonClass(register ClientPtr client, ButtonClassPtr b, char **buf)
CopySwapButtonClass(ClientPtr client, ButtonClassPtr b, char **buf)
{
register char n;
char n;
xButtonInfoPtr b2;
b2 = (xButtonInfoPtr) * buf;
@ -166,10 +166,10 @@ CopySwapButtonClass(register ClientPtr client, ButtonClassPtr b, char **buf)
*/
static void
CopySwapDevice(register ClientPtr client, DeviceIntPtr d, int num_classes,
CopySwapDevice(ClientPtr client, DeviceIntPtr d, int num_classes,
char **buf)
{
register char n;
char n;
xDeviceInfoPtr dev;
dev = (xDeviceInfoPtr) * buf;
@ -200,9 +200,9 @@ CopySwapDevice(register ClientPtr client, DeviceIntPtr d, int num_classes,
*/
static void
CopySwapKeyClass(register ClientPtr client, KeyClassPtr k, char **buf)
CopySwapKeyClass(ClientPtr client, KeyClassPtr k, char **buf)
{
register char n;
char n;
xKeyInfoPtr k2;
k2 = (xKeyInfoPtr) * buf;
@ -230,10 +230,10 @@ CopySwapKeyClass(register ClientPtr client, KeyClassPtr k, char **buf)
*/
static int
CopySwapValuatorClass(register ClientPtr client, ValuatorClassPtr v, char **buf)
CopySwapValuatorClass(ClientPtr client, ValuatorClassPtr v, char **buf)
{
int i, j, axes, t_axes;
register char n;
char n;
xValuatorInfoPtr v2;
AxisInfo *a;
xAxisInfoPtr a2;
@ -305,7 +305,7 @@ ListDeviceInfo(ClientPtr client, DeviceIntPtr d, xDeviceInfoPtr dev,
*/
int
ProcXListInputDevices(register ClientPtr client)
ProcXListInputDevices(ClientPtr client)
{
xListInputDevicesReply rep;
int numdevs = 0;
@ -367,7 +367,7 @@ ProcXListInputDevices(register ClientPtr client)
void
SRepXListInputDevices(ClientPtr client, int size, xListInputDevicesReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -79,9 +79,9 @@ extern CARD8 event_base[];
*/
int
SProcXOpenDevice(register ClientPtr client)
SProcXOpenDevice(ClientPtr client)
{
register char n;
char n;
REQUEST(xOpenDeviceReq);
swaps(&stuff->length, n);
@ -95,7 +95,7 @@ SProcXOpenDevice(register ClientPtr client)
*/
int
ProcXOpenDevice(register ClientPtr client)
ProcXOpenDevice(ClientPtr client)
{
xInputClassInfo evbase[numInputClasses];
Bool enableit = FALSE;
@ -179,7 +179,7 @@ ProcXOpenDevice(register ClientPtr client)
void
SRepXOpenDevice(ClientPtr client, int size, xOpenDeviceReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -58,9 +58,9 @@ from The Open Group.
*/
int
SProcXQueryDeviceState(register ClientPtr client)
SProcXQueryDeviceState(ClientPtr client)
{
register char n;
char n;
REQUEST(xQueryDeviceStateReq);
swaps(&stuff->length, n);
@ -74,9 +74,9 @@ SProcXQueryDeviceState(register ClientPtr client)
*/
int
ProcXQueryDeviceState(register ClientPtr client)
ProcXQueryDeviceState(ClientPtr client)
{
register char n;
char n;
int i;
int num_classes = 0;
int total_length = 0;
@ -187,7 +187,7 @@ ProcXQueryDeviceState(register ClientPtr client)
void
SRepXQueryDeviceState(ClientPtr client, int size, xQueryDeviceStateReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -128,11 +128,11 @@ HandleDevicePresenceMask(ClientPtr client, WindowPtr win,
*/
int
SProcXSelectExtensionEvent(register ClientPtr client)
SProcXSelectExtensionEvent(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
REQUEST(xSelectExtensionEventReq);
swaps(&stuff->length, n);
@ -154,7 +154,7 @@ SProcXSelectExtensionEvent(register ClientPtr client)
*/
int
ProcXSelectExtensionEvent(register ClientPtr client)
ProcXSelectExtensionEvent(ClientPtr client)
{
int ret;
int i;

View File

@ -80,11 +80,11 @@ extern int lastEvent; /* Defined in extension.c */
*/
int
SProcXSendExtensionEvent(register ClientPtr client)
SProcXSendExtensionEvent(ClientPtr client)
{
register char n;
register long *p;
register int i;
char n;
long *p;
int i;
xEvent eventT;
xEvent *eventP;
EventSwapPtr proc;
@ -119,7 +119,7 @@ SProcXSendExtensionEvent(register ClientPtr client)
*/
int
ProcXSendExtensionEvent(register ClientPtr client)
ProcXSendExtensionEvent(ClientPtr client)
{
int ret;
DeviceIntPtr dev;

View File

@ -78,9 +78,9 @@ SOFTWARE.
*/
int
SProcXSetDeviceButtonMapping(register ClientPtr client)
SProcXSetDeviceButtonMapping(ClientPtr client)
{
register char n;
char n;
REQUEST(xSetDeviceButtonMappingReq);
swaps(&stuff->length, n);
@ -94,7 +94,7 @@ SProcXSetDeviceButtonMapping(register ClientPtr client)
*/
int
ProcXSetDeviceButtonMapping(register ClientPtr client)
ProcXSetDeviceButtonMapping(ClientPtr client)
{
int ret;
xSetDeviceButtonMappingReply rep;
@ -149,7 +149,7 @@ void
SRepXSetDeviceButtonMapping(ClientPtr client, int size,
xSetDeviceButtonMappingReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXSetDeviceValuators(register ClientPtr client)
SProcXSetDeviceValuators(ClientPtr client)
{
register char n;
char n;
REQUEST(xSetDeviceValuatorsReq);
swaps(&stuff->length, n);
@ -91,7 +91,7 @@ SProcXSetDeviceValuators(register ClientPtr client)
*/
int
ProcXSetDeviceValuators(register ClientPtr client)
ProcXSetDeviceValuators(ClientPtr client)
{
DeviceIntPtr dev;
xSetDeviceValuatorsReply rep;
@ -152,7 +152,7 @@ void
SRepXSetDeviceValuators(ClientPtr client, int size,
xSetDeviceValuatorsReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -78,9 +78,9 @@ SOFTWARE.
*/
int
SProcXSetDeviceFocus(register ClientPtr client)
SProcXSetDeviceFocus(ClientPtr client)
{
register char n;
char n;
REQUEST(xSetDeviceFocusReq);
swaps(&stuff->length, n);
@ -97,10 +97,10 @@ SProcXSetDeviceFocus(register ClientPtr client)
*/
int
ProcXSetDeviceFocus(register ClientPtr client)
ProcXSetDeviceFocus(ClientPtr client)
{
int ret;
register DeviceIntPtr dev;
DeviceIntPtr dev;
REQUEST(xSetDeviceFocusReq);
REQUEST_SIZE_MATCH(xSetDeviceFocusReq);

View File

@ -76,9 +76,9 @@ SOFTWARE.
*/
int
SProcXSetDeviceModifierMapping(register ClientPtr client)
SProcXSetDeviceModifierMapping(ClientPtr client)
{
register char n;
char n;
REQUEST(xSetDeviceModifierMappingReq);
swaps(&stuff->length, n);
@ -145,7 +145,7 @@ void
SRepXSetDeviceModifierMapping(ClientPtr client, int size,
xSetDeviceModifierMappingReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -75,9 +75,9 @@ SOFTWARE.
*/
int
SProcXSetDeviceMode(register ClientPtr client)
SProcXSetDeviceMode(ClientPtr client)
{
register char n;
char n;
REQUEST(xSetDeviceModeReq);
swaps(&stuff->length, n);
@ -91,7 +91,7 @@ SProcXSetDeviceMode(register ClientPtr client)
*/
int
ProcXSetDeviceMode(register ClientPtr client)
ProcXSetDeviceMode(ClientPtr client)
{
DeviceIntPtr dev;
xSetDeviceModeReply rep;
@ -139,7 +139,7 @@ ProcXSetDeviceMode(register ClientPtr client)
void
SRepXSetDeviceMode(ClientPtr client, int size, xSetDeviceModeReply * rep)
{
register char n;
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);

View File

@ -168,7 +168,7 @@ OpenInputDevice(DeviceIntPtr dev, ClientPtr client, int *status)
*/
int
SetDeviceMode(register ClientPtr client, DeviceIntPtr dev, int mode)
SetDeviceMode(ClientPtr client, DeviceIntPtr dev, int mode)
{
return BadMatch;
}
@ -186,7 +186,7 @@ SetDeviceMode(register ClientPtr client, DeviceIntPtr dev, int mode)
*/
int
SetDeviceValuators(register ClientPtr client, DeviceIntPtr dev,
SetDeviceValuators(ClientPtr client, DeviceIntPtr dev,
int *valuators, int first_valuator, int num_valuators)
{
return BadMatch;
@ -201,7 +201,7 @@ SetDeviceValuators(register ClientPtr client, DeviceIntPtr dev,
*/
int
ChangeDeviceControl(register ClientPtr client, DeviceIntPtr dev,
ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev,
xDeviceCtl * control)
{
switch (control->control) {

View File

@ -74,9 +74,9 @@ SOFTWARE.
*/
int
SProcXUngrabDevice(register ClientPtr client)
SProcXUngrabDevice(ClientPtr client)
{
register char n;
char n;
REQUEST(xUngrabDeviceReq);
swaps(&stuff->length, n);
@ -92,7 +92,7 @@ SProcXUngrabDevice(register ClientPtr client)
*/
int
ProcXUngrabDevice(register ClientPtr client)
ProcXUngrabDevice(ClientPtr client)
{
DeviceIntPtr dev;
GrabPtr grab;

View File

@ -80,9 +80,9 @@ SOFTWARE.
*/
int
SProcXUngrabDeviceButton(register ClientPtr client)
SProcXUngrabDeviceButton(ClientPtr client)
{
register char n;
char n;
REQUEST(xUngrabDeviceButtonReq);
swaps(&stuff->length, n);

View File

@ -80,9 +80,9 @@ SOFTWARE.
*/
int
SProcXUngrabDeviceKey(register ClientPtr client)
SProcXUngrabDeviceKey(ClientPtr client)
{
register char n;
char n;
REQUEST(xUngrabDeviceKeyReq);
swaps(&stuff->length, n);

View File

@ -453,9 +453,6 @@ AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name o
AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
[ BUILDERSTRING="$withval" ]
[ ])
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
[ MESA_SOURCE="$withval" ],
[ MESA_SOURCE="" ])
AC_ARG_WITH(fontdir, AS_HELP_STRING([--with-fontdir=FONTDIR], [Path to top level dir where fonts are installed (default: ${libdir}/X11/fonts)]),
[ FONTDIR="$withval" ],
[ FONTDIR="${libdir}/X11/fonts" ])
@ -472,9 +469,6 @@ AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to
AC_ARG_WITH(rgb-path, AS_HELP_STRING([--with-rgb-path=PATH], [Path to RGB database (default: ${datadir}/X11/rgb)]),
[ RGBPATH="$withval" ],
[ RGBPATH="${datadir}/X11/rgb" ])
AC_ARG_WITH(dri-driver-path, AS_HELP_STRING([--with-dri-driver-path=PATH], [Path to DRI drivers (default: ${libdir}/dri)]),
[ DRI_DRIVER_PATH="$withval" ],
[ DRI_DRIVER_PATH="${libdir}/dri" ])
APPLE_APPLICATIONS_DIR="${bindir}/Applications"
AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: ${bindir}/Applications)]),
[ APPLE_APPLICATIONS_DIR="${withval}" ].
@ -494,6 +488,20 @@ AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use
[NULL_ROOT_CURSOR=$enableval],
[NULL_ROOT_CURSOR=no])
dnl GLX build options
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
[ MESA_SOURCE="$withval" ],
[ MESA_SOURCE="" ])
AC_ARG_WITH(dri-driver-path, AS_HELP_STRING([--with-dri-driver-path=PATH], [Path to DRI drivers (default: ${libdir}/dri)]),
[ DRI_DRIVER_PATH="$withval" ],
[ DRI_DRIVER_PATH="${libdir}/dri" ])
AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerated indirect GLX (default: enabled)]),
[AIGLX=$enableval],
[AIGLX=yes])
AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: disabled)]),
[GLX_USE_TLS=$enableval],
[GLX_USE_TLS=no])
dnl Extensions.
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
AC_ARG_ENABLE(mitshm, AS_HELP_STRING([--disable-shm], [Build SHM extension (default: enabled)]), [MITSHM=$enableval], [MITSHM=yes])
@ -508,8 +516,6 @@ AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build Scr
AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
AC_ARG_ENABLE(glx, AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerated indirect GLX (default: enabled)]), [AIGLX=$enableval], [AIGLX=yes])
AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: disabled)]), [GLX_USE_TLS=$enableval], [GLX_USE_TLS=no])
AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])

View File

@ -322,6 +322,9 @@ exaPixmapIsOffscreen(PixmapPtr p)
if (p->devPrivate.ptr == NULL)
return TRUE;
if (pExaScr->info->PixmapIsOffscreen)
return pExaScr->info->PixmapIsOffscreen(p);
return ((unsigned long) ((CARD8 *) p->devPrivate.ptr -
(CARD8 *) pExaScr->info->memoryBase) <
pExaScr->info->memorySize);

View File

@ -39,7 +39,7 @@
#include "fb.h"
#define EXA_VERSION_MAJOR 2
#define EXA_VERSION_MINOR 1
#define EXA_VERSION_MINOR 2
#define EXA_VERSION_RELEASE 0
typedef struct _ExaOffscreenArea ExaOffscreenArea;
@ -636,6 +636,23 @@ typedef struct _ExaDriver {
*/
void (*FinishAccess)(PixmapPtr pPix, int index);
/**
* PixmapIsOffscreen() is an optional driver replacement to
* exaPixmapIsOffscreen(). Set to NULL if you want the standard behaviour
* of exaPixmapIsOffscreen().
*
* @param pPix the pixmap
* @return TRUE if the given drawable is in framebuffer memory.
*
* exaPixmapIsOffscreen() is used to determine if a pixmap is in offscreen
* memory, meaning that acceleration could probably be done to it, and that it
* will need to be wrapped by PrepareAccess()/FinishAccess() when accessing it
* with the CPU.
*
*
*/
Bool (*PixmapIsOffscreen)(PixmapPtr pPix);
/** @name PrepareAccess() and FinishAccess() indices
* @{
*/

View File

@ -78,4 +78,4 @@ libwfb_la_SOURCES = $(libfb_la_SOURCES)
libfb_la_LIBADD = libfbmmx.la
EXTRA_DIST = fbcmap.c
EXTRA_DIST = fbcmap.c fbcmap_mi.c

View File

@ -39,7 +39,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "resource.h"
#include "fb.h"
#ifndef XFree86Server
#ifdef XFree86Server
#error "You should be compiling fbcmap_mi.c instead of fbcmap.c!"
#endif
ColormapPtr FbInstalledMaps[MAXSCREENS];
int
@ -584,87 +589,3 @@ fbInitVisuals (VisualPtr *visualp,
*defaultVisp = depth[i].vids[j];
return TRUE;
}
#else
#include "micmap.h"
int
fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
{
return miListInstalledColormaps(pScreen, pmaps);
}
void
fbInstallColormap(ColormapPtr pmap)
{
miInstallColormap(pmap);
}
void
fbUninstallColormap(ColormapPtr pmap)
{
miUninstallColormap(pmap);
}
void
fbResolveColor(unsigned short *pred,
unsigned short *pgreen,
unsigned short *pblue,
VisualPtr pVisual)
{
miResolveColor(pred, pgreen, pblue, pVisual);
}
Bool
fbInitializeColormap(ColormapPtr pmap)
{
return miInitializeColormap(pmap);
}
int
fbExpandDirectColors (ColormapPtr pmap,
int ndef,
xColorItem *indefs,
xColorItem *outdefs)
{
return miExpandDirectColors(pmap, ndef, indefs, outdefs);
}
Bool
fbCreateDefColormap(ScreenPtr pScreen)
{
return miCreateDefColormap(pScreen);
}
void
fbClearVisualTypes(void)
{
miClearVisualTypes();
}
Bool
fbSetVisualTypes (int depth, int visuals, int bitsPerRGB)
{
return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
}
/*
* Given a list of formats for a screen, create a list
* of visuals and depths for the screen which coorespond to
* the set which can be used with this version of fb.
*/
Bool
fbInitVisuals (VisualPtr *visualp,
DepthPtr *depthp,
int *nvisualp,
int *ndepthp,
int *rootDepthp,
VisualID *defaultVisp,
unsigned long sizes,
int bitsPerRGB)
{
return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
defaultVisp, sizes, bitsPerRGB, -1);
}
#endif

123
fb/fbcmap_mi.c Normal file
View File

@ -0,0 +1,123 @@
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
All Rights Reserved
Permission to use, copy, modify, and distribute this
software and its documentation for any purpose and without
fee is hereby granted, provided that the above copyright no-
tice appear in all copies and that both that copyright no-
tice and this permission notice appear in supporting docu-
mentation, and that the names of Sun or X Consortium
not be used in advertising or publicity pertaining to
distribution of the software without specific prior
written permission. Sun and X Consortium make no
representations about the suitability of this software for
any purpose. It is provided "as is" without any express or
implied warranty.
SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
/**
* This version of fbcmap.c is implemented in terms of mi functions.
* These functions used to be in fbcmap.c and depended upon the symbol
* XFree86Server being defined.
*/
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include <X11/X.h>
#include "fb.h"
#include "micmap.h"
int
fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
{
return miListInstalledColormaps(pScreen, pmaps);
}
void
fbInstallColormap(ColormapPtr pmap)
{
miInstallColormap(pmap);
}
void
fbUninstallColormap(ColormapPtr pmap)
{
miUninstallColormap(pmap);
}
void
fbResolveColor(unsigned short *pred,
unsigned short *pgreen,
unsigned short *pblue,
VisualPtr pVisual)
{
miResolveColor(pred, pgreen, pblue, pVisual);
}
Bool
fbInitializeColormap(ColormapPtr pmap)
{
return miInitializeColormap(pmap);
}
int
fbExpandDirectColors (ColormapPtr pmap,
int ndef,
xColorItem *indefs,
xColorItem *outdefs)
{
return miExpandDirectColors(pmap, ndef, indefs, outdefs);
}
Bool
fbCreateDefColormap(ScreenPtr pScreen)
{
return miCreateDefColormap(pScreen);
}
void
fbClearVisualTypes(void)
{
miClearVisualTypes();
}
Bool
fbSetVisualTypes (int depth, int visuals, int bitsPerRGB)
{
return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
}
/*
* Given a list of formats for a screen, create a list
* of visuals and depths for the screen which coorespond to
* the set which can be used with this version of fb.
*/
Bool
fbInitVisuals (VisualPtr *visualp,
DepthPtr *depthp,
int *nvisualp,
int *ndepthp,
int *rootDepthp,
VisualID *defaultVisp,
unsigned long sizes,
int bitsPerRGB)
{
return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
defaultVisp, sizes, bitsPerRGB, -1);
}

View File

@ -26,12 +26,12 @@ libdarwinShared_a_SOURCES = darwin.c \
bin_PROGRAMS = XDarwin Xquartz
XDarwin_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
$(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c
Xquartz_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
$(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c \
apple/X11Application.m \
@ -115,7 +115,7 @@ x11app:
cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
XDarwinApp_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
$(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c

View File

@ -2,7 +2,6 @@ DIST_SUBDIRS = input config glxProxy examples doc
SUBDIRS = input config examples
bin_PROGRAMS = Xdmx
noinst_LIBRARIES = libfbcmap.a
if XINERAMA
PANORAMIX_SRCS = $(top_srcdir)/Xext/panoramiX.c
@ -26,11 +25,9 @@ AM_CFLAGS = \
$(DIX_CFLAGS) \
$(GLX_INCS) \
$(GLX_DEFS) \
$(DMX_CFLAGS) \
@DMXMODULES_CFLAGS@
libfbcmap_a_SOURCES = libfbcmap.a
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
Xdmx_SOURCES = dmx.c \
dmxcb.c \
dmxcb.h \
@ -76,6 +73,7 @@ Xdmx_SOURCES = dmx.c \
dmxwindow.c \
dmxwindow.h \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/fb/fbcmap_mi.c \
$(GLX_SRCS)
@ -89,7 +87,6 @@ Xdmx_LDADD = $(XORG_CORE_LIBS) \
$(GLX_LIBS) \
input/libdmxinput.a \
config/libdmxconfig.a \
libfbcmap.a \
@DMXMODULES_LIBS@
# Man page

View File

@ -130,14 +130,16 @@ static Bool dmxCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y)
int globalX;
int globalY;
if (screenInfo.numScreens == 1) return FALSE;
if (screenInfo.numScreens == 1)
return FALSE;
/* On current screen? */
dmxScreen = &dmxScreens[(*ppScreen)->myNum];
if (localX >= 0
&& localX < dmxScreen->rootWidth
&& localY >= 0
&& localY < dmxScreen->rootHeight) return FALSE;
&& localY < dmxScreen->rootHeight)
return FALSE;
/* Convert to global coordinate space */
globalX = dmxScreen->rootXOrigin + localX;
@ -162,7 +164,8 @@ static Bool dmxCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y)
&& globalX < dmxScreen->rootXOrigin + dmxScreen->rootWidth
&& globalY >= dmxScreen->rootYOrigin
&& globalY < dmxScreen->rootYOrigin + dmxScreen->rootHeight) {
if (dmxScreen->index == (*ppScreen)->myNum) return FALSE;
if (dmxScreen->index == (*ppScreen)->myNum)
return FALSE;
*ppScreen = screenInfo.screens[dmxScreen->index];
*x = globalX - dmxScreen->rootXOrigin;
*y = globalY - dmxScreen->rootYOrigin;
@ -179,7 +182,12 @@ static void dmxCrossScreen(ScreenPtr pScreen, Bool entering)
static void dmxWarpCursor(ScreenPtr pScreen, int x, int y)
{
DMXDBG3("dmxWarpCursor(%d,%d,%d)\n", pScreen->myNum, x, y);
#if 11 /*BP*/
/* This call is depracated. Replace with???? */
miPointerWarpCursor(pScreen, x, y);
#else
pScreen->SetCursorPosition(pScreen, x, y, FALSE);
#endif
}
miPointerScreenFuncRec dmxPointerCursorFuncs =
@ -187,7 +195,7 @@ miPointerScreenFuncRec dmxPointerCursorFuncs =
dmxCursorOffScreen,
dmxCrossScreen,
dmxWarpCursor,
dmxeqEnqueue,
dmxeqEnqueue, /*XXX incompatible type/function! */
dmxeqSwitchScreen
};
@ -198,7 +206,8 @@ static int *dmxSLCreate(void)
int *list = malloc(dmxNumScreens * sizeof(*list));
int i;
for (i = 0; i < dmxNumScreens; i++) list[i] = 1;
for (i = 0; i < dmxNumScreens; i++)
list[i] = 1;
return list;
}
@ -212,7 +221,9 @@ static void dmxSLFree(int *list)
static int dmxSLFindNext(int *list)
{
int i;
for (i = 0; i < dmxNumScreens; i++) if (list[i]) return i;
for (i = 0; i < dmxNumScreens; i++)
if (list[i])
return i;
return -1;
}
@ -225,7 +236,8 @@ static int dmxTryComputeScreenOrigins(int *screensLeft)
int changed = 0;
for (i = 0; i < dmxNumScreens; i++) {
if (!screensLeft[i]) continue;
if (!screensLeft[i])
continue;
screen = &dmxScreens[i];
switch (screen->where) {
case PosAbsolute:
@ -235,14 +247,16 @@ static int dmxTryComputeScreenOrigins(int *screensLeft)
break;
case PosRelative:
ref = screen->whereRefScreen;
if (screensLeft[ref]) break;
if (screensLeft[ref])
break;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->whereX;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->whereY;
++changed, screensLeft[i] = 0;
break;
case PosRightOf:
ref = screen->whereRefScreen;
if (screensLeft[ref]) break;
if (screensLeft[ref])
break;
pScreen = screenInfo.screens[ref];
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + pScreen->width;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
@ -250,7 +264,8 @@ static int dmxTryComputeScreenOrigins(int *screensLeft)
break;
case PosLeftOf:
ref = screen->whereRefScreen;
if (screensLeft[ref]) break;
if (screensLeft[ref])
break;
pScreen = screenInfo.screens[i];
dixScreenOrigins[i].x = dixScreenOrigins[ref].x - pScreen->width;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y;
@ -258,7 +273,8 @@ static int dmxTryComputeScreenOrigins(int *screensLeft)
break;
case PosBelow:
ref = screen->whereRefScreen;
if (screensLeft[ref]) break;
if (screensLeft[ref])
break;
pScreen = screenInfo.screens[ref];
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + pScreen->height;
@ -266,7 +282,8 @@ static int dmxTryComputeScreenOrigins(int *screensLeft)
break;
case PosAbove:
ref = screen->whereRefScreen;
if (screensLeft[ref]) break;
if (screensLeft[ref])
break;
pScreen = screenInfo.screens[i];
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y - pScreen->height;
@ -308,8 +325,10 @@ static void dmxComputeScreenOrigins(void)
minX = dixScreenOrigins[0].x;
minY = dixScreenOrigins[0].y;
for (i = 1; i < dmxNumScreens; i++) { /* Compute minX, minY */
if (dixScreenOrigins[i].x < minX) minX = dixScreenOrigins[i].x;
if (dixScreenOrigins[i].y < minY) minY = dixScreenOrigins[i].y;
if (dixScreenOrigins[i].x < minX)
minX = dixScreenOrigins[i].x;
if (dixScreenOrigins[i].y < minY)
minY = dixScreenOrigins[i].y;
}
if (minX || minY) {
for (i = 0; i < dmxNumScreens; i++) {
@ -411,28 +430,36 @@ int dmxOnScreen(int x, int y, DMXScreenInfo *dmxScreen)
static int dmxDoesOverlap(DMXScreenInfo *a, DMXScreenInfo *b)
{
if (dmxOnScreen(a->rootXOrigin,
a->rootYOrigin, b)) return 1;
a->rootYOrigin, b))
return 1;
if (dmxOnScreen(a->rootXOrigin,
a->rootYOrigin + a->scrnWidth, b)) return 1;
a->rootYOrigin + a->scrnWidth, b))
return 1;
if (dmxOnScreen(a->rootXOrigin + a->scrnHeight,
a->rootYOrigin, b)) return 1;
a->rootYOrigin, b))
return 1;
if (dmxOnScreen(a->rootXOrigin + a->scrnHeight,
a->rootYOrigin + a->scrnWidth, b)) return 1;
a->rootYOrigin + a->scrnWidth, b))
return 1;
if (dmxOnScreen(b->rootXOrigin,
b->rootYOrigin, a)) return 1;
b->rootYOrigin, a))
return 1;
if (dmxOnScreen(b->rootXOrigin,
b->rootYOrigin + b->scrnWidth, a)) return 1;
b->rootYOrigin + b->scrnWidth, a))
return 1;
if (dmxOnScreen(b->rootXOrigin + b->scrnHeight,
b->rootYOrigin, a)) return 1;
b->rootYOrigin, a))
return 1;
if (dmxOnScreen(b->rootXOrigin + b->scrnHeight,
b->rootYOrigin + b->scrnWidth, a)) return 1;
b->rootYOrigin + b->scrnWidth, a))
return 1;
return 0;
}
@ -476,7 +503,8 @@ static void *dmxTestSameDisplay(DMXScreenInfo *a, void *closure)
{
DMXScreenInfo *b = closure;
if (a == b) return a;
if (a == b)
return a;
return NULL;
}
@ -489,14 +517,16 @@ void dmxInitOverlap(void)
int i, j;
DMXScreenInfo *a, *b, *pt;
for (i = 0; i < dmxNumScreens; i++) dmxScreens[i].over = NULL;
for (i = 0; i < dmxNumScreens; i++)
dmxScreens[i].over = NULL;
for (i = 0; i < dmxNumScreens; i++) {
a = &dmxScreens[i];
for (j = i+1; j < dmxNumScreens; j++) {
b = &dmxScreens[j];
if (b->over) continue;
if (b->over)
continue;
if (dmxDoesOverlap(a, b)) {
DMXDBG6("%d overlaps %d: a=%p %p b=%p %p\n",
@ -510,7 +540,8 @@ void dmxInitOverlap(void)
for (i = 0; i < dmxNumScreens; i++) {
a = &dmxScreens[i];
if (!a->over) continue;
if (!a->over)
continue;
/* Flag all pairs that are on same display */
for (pt = a->over; pt != a; pt = pt->over) {
@ -521,7 +552,8 @@ void dmxInitOverlap(void)
* screens that mutually overlap on the backend display,
* so we call dmxDoesOverlap, which is stricter than the
* ->over set. */
if (!dmxDoesOverlap(a, pt)) continue;
if (!dmxDoesOverlap(a, pt))
continue;
a->cursorNotShared = 1;
pt->cursorNotShared = 1;
dmxLog(dmxInfo,
@ -731,9 +763,11 @@ static Bool dmxRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
return _dmxRealizeCursor(pScreen, pCursor);
for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
if (pt->cursorNotShared) continue;
if (pt->cursorNotShared)
continue;
_dmxRealizeCursor(screenInfo.screens[pt->index], pCursor);
if (pt == start) break;
if (pt == start)
break;
}
return TRUE;
}
@ -747,9 +781,11 @@ static Bool dmxUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
return _dmxUnrealizeCursor(pScreen, pCursor);
for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
if (pt->cursorNotShared) continue;
if (pt->cursorNotShared)
continue;
_dmxUnrealizeCursor(screenInfo.screens[pt->index], pCursor);
if (pt == start) break;
if (pt == start)
break;
}
return TRUE;
}
@ -758,10 +794,13 @@ static CursorPtr dmxFindCursor(DMXScreenInfo *start)
{
DMXScreenInfo *pt;
if (!start || !start->over) return GetSpriteCursor();
if (!start || !start->over)
return GetSpriteCursor();
for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
if (pt->cursor) return pt->cursor;
if (pt == start) break;
if (pt->cursor)
return pt->cursor;
if (pt == start)
break;
}
return GetSpriteCursor();
}
@ -769,7 +808,12 @@ static CursorPtr dmxFindCursor(DMXScreenInfo *start)
/** Move the cursor to coordinates (\a x, \a y)on \a pScreen. This
* function is usually called via #dmxPointerSpriteFuncs, except during
* reconfiguration when the cursor is repositioned to force an update on
* newley overlapping screens and on screens that no longer overlap. */
* newley overlapping screens and on screens that no longer overlap.
*
* The coords (x,y) are in global coord space. We'll loop over the
* back-end screens and see if they contain the global coord. If so, call
* _dmxMoveCursor() (XWarpPointer) to position the pointer on that screen.
*/
void dmxMoveCursor(ScreenPtr pScreen, int x, int y)
{
DMXScreenInfo *start = &dmxScreens[pScreen->myNum];
@ -783,7 +827,8 @@ void dmxMoveCursor(ScreenPtr pScreen, int x, int y)
}
for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
if (pt->cursorNotShared) continue;
if (pt->cursorNotShared)
continue;
if (dmxOnScreen(x + start->rootXOrigin, y + start->rootYOrigin, pt)) {
if (/* pt != start && */ !pt->cursorVisible) {
if (!pt->cursor) {
@ -811,7 +856,8 @@ void dmxMoveCursor(ScreenPtr pScreen, int x, int y)
x + start->rootXOrigin - pt->rootXOrigin,
y + start->rootYOrigin - pt->rootYOrigin);
}
if (pt == start) break;
if (pt == start)
break;
}
}
@ -843,7 +889,7 @@ static void dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
gx = start->rootXOrigin + x;
gy = start->rootYOrigin + y;
if (x && y && (GX != gx || GY != gy))
dmxCoreMotion(gx, gy, 0, DMX_NO_BLOCK);
dmxCoreMotion(NULL, gx, gy, 0, DMX_NO_BLOCK);
if (!start->over || !dmxCursorDoMultiCursors || start->cursorNotShared) {
_dmxSetCursor(pScreen, pCursor, x, y);
@ -851,7 +897,8 @@ static void dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
}
for (pt = start->over; /* condition at end of loop */; pt = pt->over) {
if (pt->cursorNotShared) continue;
if (pt->cursorNotShared)
continue;
if (dmxOnScreen(x + start->rootXOrigin, y + start->rootYOrigin, pt)) {
_dmxSetCursor(screenInfo.screens[pt->index], pCursor,
x + start->rootXOrigin - pt->rootXOrigin,
@ -861,7 +908,8 @@ static void dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
x + start->rootXOrigin - pt->rootXOrigin,
y + start->rootYOrigin - pt->rootYOrigin);
}
if (pt == start) break;
if (pt == start)
break;
}
}
@ -896,8 +944,13 @@ void dmxCheckCursor(void)
pScreen = screenInfo.screens[dmxScreen->index];
if (!dmxOnScreen(x, y, dmxScreen)) {
#if 00
if (firstScreen && i == miPointerCurrentScreen()->myNum)
miPointerSetNewScreen(firstScreen->index, x, y);
#else
if (firstScreen && i == miPointerGetScreen(inputInfo.pointer)->myNum)
miPointerSetScreen(inputInfo.pointer, firstScreen->index, x, y);
#endif
_dmxSetCursor(pScreen, NULL,
x - dmxScreen->rootXOrigin,
y - dmxScreen->rootYOrigin);

View File

@ -49,6 +49,7 @@
#include "inputstr.h"
#include "input.h"
#include "mi.h"
/** Returns TRUE if the key is a valid modifier. For PC-class
* keyboards, all keys can be used as modifiers, so return TRUE
@ -75,6 +76,8 @@ void InitInput(int argc, char **argv)
dmxLog(dmxWarning, "Use keyboard/mouse pair with the first -input\n");
dmxLog(dmxFatal, "At least one core keyboard/mouse pair required\n");
}
mieqInit();
}
/** Called from dix/dispatch.c in Dispatch() whenever input events

View File

@ -154,7 +154,7 @@ typedef enum {
extern void dmxGetGlobalPosition(int *x, int *y);
extern DMXScreenInfo *dmxFindFirstScreen(int x, int y);
extern void dmxCoreMotion(int x, int y, int delta,
extern void dmxCoreMotion(DevicePtr pDev, int x, int y, int delta,
DMXBlockType block);
/* Support for dynamic addition of inputs. This functions is defined in

View File

@ -242,7 +242,7 @@ static int dmxBackendOffscreen(int screen, int x, int y)
void dmxBackendUpdatePosition(pointer private, int x, int y)
{
GETPRIVFROMPRIVATE;
int screen = miPointerCurrentScreen()->myNum;
int screen = miPointerGetScreen(inputInfo.pointer)->myNum;
DMXScreenInfo *dmxScreen = &dmxScreens[priv->myScreen];
int oldRelative = priv->relative;
int topscreen = dmxBackendFindOverlapping(priv, screen, x, y);
@ -354,7 +354,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
switch (X.type) {
case EnterNotify:
dmxCommonSaveState(priv);
if (entered++) continue;
if (entered++)
continue;
priv->entered = 1;
ignoreLeave = 1;
DMXDBG5("dmxBackendCollectEvents: Enter %lu %d,%d; GRAB %s %p\n",
@ -378,7 +379,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
continue;
}
dmxCommonRestoreState(priv);
if (left++) continue;
if (left++)
continue;
DMXDBG7("dmxBackendCollectEvents: Leave %lu %d,%d %d %d %s %s\n",
X.xcrossing.root, X.xcrossing.x, X.xcrossing.y,
X.xcrossing.detail, X.xcrossing.focus,
@ -398,7 +400,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
priv->newscreen,
X.xmotion.x, X.xmotion.y,
entered, priv->lastX, priv->lastY);
if (dmxBackendPendingMotionEvent(priv, TRUE)) continue;
if (dmxBackendPendingMotionEvent(priv, TRUE))
continue;
if (!(dmxScreen = dmxBackendFindWindow(priv, X.xmotion.window)))
dmxLog(dmxFatal,
" Event on non-existant window %lu\n",
@ -449,6 +452,9 @@ void dmxBackendCollectEvents(DevicePtr pDev,
case KeyRelease:
enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block);
break;
case ButtonPress:
case ButtonRelease:
/* fall-through */
default:
/* Pass the whole event here, because
* this may be an extension event. */
@ -571,12 +577,16 @@ void dmxBackendInit(DevicePtr pDev)
/** Get information about the backend pointer (for initialization). */
void dmxBackendMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
{
const DMXScreenInfo *dmxScreen = dmxBackendInitPrivate(pDev);
info->buttonClass = 1;
dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
info->valuatorClass = 1;
info->numRelAxes = 2;
info->minval[0] = 0;
info->maxval[0] = 0;
info->minval[1] = 0;
info->maxval[0] = dmxScreen->beWidth;
info->maxval[1] = dmxScreen->beHeight;
info->res[0] = 1;
info->minres[0] = 0;
info->maxres[0] = 1;

View File

@ -241,13 +241,15 @@ void dmxCommonKbdGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
/* Compute pModMap */
modifier_mapping = XGetModifierMapping(priv->display);
for (i = 0; i < MAP_LENGTH; i++) pModMap[i] = 0;
for (i = 0; i < MAP_LENGTH; i++)
pModMap[i] = 0;
for (j = 0; j < 8; j++) {
int max_keypermod = modifier_mapping->max_keypermod;
for (i = 0; i < max_keypermod; i++) {
CARD8 keycode = modifier_mapping->modifiermap[j*max_keypermod + i];
if (keycode) pModMap[keycode] |= 1 << j;
if (keycode)
pModMap[keycode] |= 1 << j;
}
}
XFreeModifiermap(modifier_mapping);
@ -611,6 +613,7 @@ void dmxCommonSaveState(pointer private)
&priv->dmxLocal->kctrl);
priv->savedModMap = XGetModifierMapping(priv->display);
modmap = XNewModifiermap(0);
XSetModifierMapping(priv->display, modmap);
if (dmxInput->scrnIdx != -1)
@ -627,8 +630,10 @@ void dmxCommonRestoreState(pointer private)
int retcode = -1;
CARD32 start;
if (dmxInput->console) priv = dmxInput->devs[0]->private;
if (!priv->stateSaved) return;
if (dmxInput->console)
priv = dmxInput->devs[0]->private;
if (!priv->stateSaved)
return;
priv->stateSaved = 0;
DMXDBG0("dmxCommonRestoreState\n");
@ -645,7 +650,8 @@ void dmxCommonRestoreState(pointer private)
CARD32 tmp;
retcode = XSetModifierMapping(priv->display, priv->savedModMap);
if (retcode == MappingSuccess) break;
if (retcode == MappingSuccess)
break;
if (retcode == MappingBusy)
dmxLogInput(dmxInput, "Keyboard busy, waiting\n");
else

View File

@ -860,12 +860,17 @@ void dmxConsoleInit(DevicePtr pDev)
* for pointers. */
void dmxConsoleMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
{
GETPRIVFROMPDEV;
info->buttonClass = 1;
dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
info->valuatorClass = 1;
info->numRelAxes = 2;
info->minval[0] = 0;
info->maxval[0] = 0;
info->minval[1] = 0;
/* max possible console window size: */
info->maxval[0] = DisplayWidth(priv->display, DefaultScreen(priv->display));
info->maxval[1] = DisplayHeight(priv->display, DefaultScreen(priv->display));
info->res[0] = 1;
info->minres[0] = 0;
info->maxres[0] = 1;

View File

@ -79,7 +79,9 @@ void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
info->valuatorClass = 1;
info->numRelAxes = 2;
info->minval[0] = 0;
info->minval[1] = 0;
info->maxval[0] = 0;
info->maxval[1] = 0;
info->res[0] = 1;
info->minres[0] = 0;
info->maxres[0] = 1;

View File

@ -56,6 +56,7 @@
#include "opaque.h"
#include "inputstr.h"
#include "mipointer.h"
#include "mi.h"
#ifdef XINPUT
#include "XIstubs.h"
@ -103,6 +104,24 @@ static int dmxCheckFunctionKeys(DMXLocalInputInfoPtr dmxLocal,
DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
unsigned short state = 0;
#if 1 /* hack to detect ctrl-alt-q, etc */
static int ctrl = 0, alt = 0;
/* keep track of ctrl/alt key status */
if (type == KeyPress && keySym == 0xffe3) {
ctrl = 1;
}
else if (type == KeyRelease && keySym == 0xffe3) {
ctrl = 0;
}
else if (type == KeyPress && keySym == 0xffe9) {
alt = 1;
}
else if (type == KeyRelease && keySym == 0xffe9) {
alt = 0;
}
if (!ctrl || !alt)
return 0;
#else
if (dmxLocal->sendsCore)
state = dmxLocalCoreKeyboard->pDevice->key->state;
else if (dmxLocal->pDevice->key)
@ -111,7 +130,9 @@ static int dmxCheckFunctionKeys(DMXLocalInputInfoPtr dmxLocal,
DMXDBG3("dmxCheckFunctionKeys: keySym=0x%04x %s state=0x%04x\n",
keySym, type == KeyPress ? "press" : "release", state);
if ((state & (ControlMask|Mod1Mask)) != (ControlMask|Mod1Mask)) return 0;
if ((state & (ControlMask|Mod1Mask)) != (ControlMask|Mod1Mask))
return 0;
#endif
switch (keySym) {
case XK_g:
@ -146,16 +167,25 @@ static void dmxEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal, xEvent *e,
int type = e->u.u.type;
switch (e->u.u.type) {
case KeyPress: type = DeviceKeyPress; break;
case KeyRelease: type = DeviceKeyRelease; break;
case ButtonPress: type = DeviceButtonPress; break;
case ButtonRelease: type = DeviceButtonRelease; break;
case KeyPress:
type = DeviceKeyPress;
break;
case KeyRelease:
type = DeviceKeyRelease;
break;
case ButtonPress:
type = DeviceButtonPress;
break;
case ButtonRelease:
type = DeviceButtonRelease;
break;
case MotionNotify:
dmxLog(dmxError,
"dmxEnqueueExtEvent: MotionNotify not allowed here\n");
return;
default:
if (e->u.u.type == ProximityIn || e->u.u.type == ProximityOut) break;
if (e->u.u.type == ProximityIn || e->u.u.type == ProximityOut)
break;
dmxLogInput(dmxInput,
"dmxEnqueueExtEvent: Unhandled %s event (%d)\n",
e->u.u.type >= LASTEvent ? "extension" : "non-extension",
@ -173,9 +203,11 @@ static void dmxEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal, xEvent *e,
xv->num_valuators = 0;
xv->first_valuator = 0;
if (block) dmxSigioBlock();
if (block)
dmxSigioBlock();
dmxeqEnqueue(xE);
if (block) dmxSigioUnblock();
if (block)
dmxSigioUnblock();
}
#endif
@ -185,12 +217,36 @@ DMXScreenInfo *dmxFindFirstScreen(int x, int y)
for (i = 0; i < dmxNumScreens; i++) {
DMXScreenInfo *dmxScreen = &dmxScreens[i];
if (dmxOnScreen(x, y, dmxScreen)) return dmxScreen;
if (dmxOnScreen(x, y, dmxScreen))
return dmxScreen;
}
return NULL;
}
void dmxCoreMotion(int x, int y, int delta, DMXBlockType block)
/**
* Enqueue a motion event.
*/
static void enqueueMotion(DevicePtr pDev, int x, int y)
{
GETDMXLOCALFROMPDEV;
DeviceIntPtr p = dmxLocal->pDevice;
int i, nevents, valuators[3];
xEvent *events = Xcalloc(sizeof(xEvent), GetMaximumEventsNum());
int detail = 0; /* XXX should this be mask of pressed buttons? */
valuators[0] = x;
valuators[1] = y;
nevents = GetPointerEvents(events, p, MotionNotify, detail,
POINTER_ABSOLUTE, 0, 2, valuators);
for (i = 0; i < nevents; i++)
mieqEnqueue(p, events + i);
xfree(events);
return;
}
void
dmxCoreMotion(DevicePtr pDev, int x, int y, int delta, DMXBlockType block)
{
DMXScreenInfo *dmxScreen;
DMXInputInfo *dmxInput;
@ -199,7 +255,8 @@ void dmxCoreMotion(int x, int y, int delta, DMXBlockType block)
int localY;
int i;
if (!dmxGlobalInvalid && dmxGlobalX == x && dmxGlobalY == y) return;
if (!dmxGlobalInvalid && dmxGlobalX == x && dmxGlobalY == y)
return;
DMXDBG5("dmxCoreMotion(%d,%d,%d) dmxGlobalX=%d dmxGlobalY=%d\n",
x, y, delta, dmxGlobalX, dmxGlobalY);
@ -208,47 +265,61 @@ void dmxCoreMotion(int x, int y, int delta, DMXBlockType block)
dmxGlobalX = x;
dmxGlobalY = y;
if (dmxGlobalX < 0) dmxGlobalX = 0;
if (dmxGlobalY < 0) dmxGlobalY = 0;
if (dmxGlobalX >= dmxGlobalWidth) dmxGlobalX = dmxGlobalWidth + delta -1;
if (dmxGlobalY >= dmxGlobalHeight) dmxGlobalY = dmxGlobalHeight + delta -1;
if (dmxGlobalX < 0)
dmxGlobalX = 0;
if (dmxGlobalY < 0)
dmxGlobalY = 0;
if (dmxGlobalX >= dmxGlobalWidth)
dmxGlobalX = dmxGlobalWidth + delta -1;
if (dmxGlobalY >= dmxGlobalHeight)
dmxGlobalY = dmxGlobalHeight + delta -1;
if ((dmxScreen = dmxFindFirstScreen(dmxGlobalX, dmxGlobalY))) {
localX = dmxGlobalX - dmxScreen->rootXOrigin;
localY = dmxGlobalY - dmxScreen->rootYOrigin;
if ((pScreen = miPointerCurrentScreen())
if ((pScreen = miPointerGetScreen(inputInfo.pointer))
&& pScreen->myNum == dmxScreen->index) {
/* Screen is old screen */
if (block) dmxSigioBlock();
miPointerAbsoluteCursor(localX, localY, GetTimeInMillis());
if (block) dmxSigioUnblock();
if (block)
dmxSigioBlock();
if (pDev)
enqueueMotion(pDev, localX, localY);
if (block)
dmxSigioUnblock();
} else {
/* Screen is new */
DMXDBG4(" New screen: old=%d new=%d localX=%d localY=%d\n",
pScreen->myNum, dmxScreen->index, localX, localY);
if (block) dmxSigioBlock();
if (block)
dmxSigioBlock();
dmxeqProcessInputEvents();
miPointerSetNewScreen(dmxScreen->index, localX, localY);
miPointerAbsoluteCursor(localX, localY, GetTimeInMillis());
if (block) dmxSigioUnblock();
miPointerSetScreen(inputInfo.pointer, dmxScreen->index,
localX, localY);
if (pDev)
enqueueMotion(pDev, localX, localY);
if (block)
dmxSigioUnblock();
}
miPointerPosition(&localX, &localY);
#if 00
miPointerGetPosition(inputInfo.pointer, &localX, &localY);
if ((pScreen = miPointerCurrentScreen())) {
if ((pScreen = miPointerGetScreen(inputInfo.pointer))) {
dmxGlobalX = localX + dmxScreens[pScreen->myNum].rootXOrigin;
dmxGlobalY = localY + dmxScreens[pScreen->myNum].rootYOrigin;
ErrorF("Global is now %d, %d %d, %d\n", dmxGlobalX, dmxGlobalY,
localX, localY);
DMXDBG6(" Moved to dmxGlobalX=%d dmxGlobalY=%d"
" on screen index=%d/%d localX=%d localY=%d\n",
dmxGlobalX, dmxGlobalY,
dmxScreen ? dmxScreen->index : -1, pScreen->myNum,
localX, localY);
}
#endif
}
/* Send updates down to all core input
* drivers */
for (i = 0, dmxInput = &dmxInputs[0]; i < dmxNumInputs; i++, dmxInput++) {
int j;
for (j = 0; j < dmxInput->numDevs; j += dmxInput->devs[j]->binding)
if (!dmxInput->detached
&& dmxInput->devs[j]->sendsCore
@ -259,6 +330,8 @@ void dmxCoreMotion(int x, int y, int delta, DMXBlockType block)
if (!dmxScreen) ProcessInputEvents();
}
#ifdef XINPUT
#define DMX_MAX_AXES 32 /* Max axes reported by this routine */
static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
@ -349,10 +422,12 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
}
}
if (block) dmxSigioBlock();
if (block)
dmxSigioBlock();
dmxPointerPutMotionEvent(pDevice, firstAxis, axesCount, v, xev->time);
dmxeqEnqueue(xE);
if (block) dmxSigioUnblock();
if (block)
dmxSigioUnblock();
}
static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
@ -366,7 +441,8 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
XDeviceKeyEvent *ke = (XDeviceKeyEvent *)e;
XDeviceMotionEvent *me = (XDeviceMotionEvent *)e;
if (!e) return -1; /* No extended event passed, cannot handle */
if (!e)
return -1; /* No extended event passed, cannot handle */
if ((XID)dmxLocal->deviceId != ke->deviceid) {
/* Search for the correct dmxLocal,
@ -377,7 +453,8 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
DMXInputInfo *dmxInput = &dmxInputs[dmxLocal->inputIdx];
for (i = 0; i < dmxInput->numDevs; i++) {
dmxLocal = dmxInput->devs[i];
if ((XID)dmxLocal->deviceId == ke->deviceid) break;
if ((XID)dmxLocal->deviceId == ke->deviceid)
break;
}
}
@ -426,9 +503,11 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
xv->valuator4 = ke->axis_data[4];
xv->valuator5 = ke->axis_data[5];
if (block) dmxSigioBlock();
if (block)
dmxSigioBlock();
dmxeqEnqueue(xE);
if (block) dmxSigioUnblock();
if (block)
dmxSigioUnblock();
break;
case XI_DeviceMotionNotify:
@ -508,12 +587,18 @@ void dmxMotion(DevicePtr pDev, int *v, int firstAxes, int axesCount,
return;
}
#endif
if (axesCount == 2) switch (type) {
case DMX_RELATIVE: dmxCoreMotion(dmxGlobalX - v[0],
dmxGlobalY - v[1],
0, block); break;
case DMX_ABSOLUTE: dmxCoreMotion(v[0], v[1], 0, block); break;
case DMX_ABSOLUTE_CONFINED: dmxCoreMotion(v[0], v[1], -1, block); break;
if (axesCount == 2) {
switch (type) {
case DMX_RELATIVE:
dmxCoreMotion(pDev, dmxGlobalX - v[0], dmxGlobalY - v[1], 0, block);
break;
case DMX_ABSOLUTE:
dmxCoreMotion(pDev, v[0], v[1], 0, block);
break;
case DMX_ABSOLUTE_CONFINED:
dmxCoreMotion(pDev, v[0], v[1], -1, block);
break;
}
}
}
@ -525,7 +610,8 @@ static KeySym dmxKeyCodeToKeySym(DMXLocalInputInfoPtr dmxLocal,
if (!dmxLocal || !dmxLocal->pDevice || !dmxLocal->pDevice->key)
return NoSymbol;
pKeySyms = &dmxLocal->pDevice->key->curKeySyms;
if (!pKeySyms) return NoSymbol;
if (!pKeySyms)
return NoSymbol;
if (keyCode > pKeySyms->minKeyCode && keyCode <= pKeySyms->maxKeyCode) {
DMXDBG2("dmxKeyCodeToKeySym: Translated keyCode=%d to keySym=0x%04x\n",
@ -574,14 +660,16 @@ static int dmxFixup(DevicePtr pDev, int detail, KeySym keySym)
dmxLocal->pDevice->name);
return NoSymbol;
}
if (!keySym) keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
if (keySym == NoSymbol) return detail;
if (!keySym)
keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
if (keySym == NoSymbol)
return detail;
keyCode = dmxKeySymToKeyCode(dmxLocalCoreKeyboard, keySym, detail);
return keyCode ? keyCode : detail;
}
/** Enqueue a non-motion event from the \a pDev device with the
/** Enqueue an event from the \a pDev device with the
* specified \a type and \a detail. If the event is a KeyPress or
* KeyRelease event, then the \a keySym is also specified.
*
@ -593,29 +681,56 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
{
GETDMXINPUTFROMPDEV;
xEvent xE;
DeviceIntPtr p = dmxLocal->pDevice;
int i, nevents, valuators[3];
xEvent *events;
DMXDBG2("dmxEnqueue: Enqueuing type=%d detail=0x%0x\n", type, detail);
switch (type) {
case KeyPress:
case KeyRelease:
if (!keySym) keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
if (!keySym)
keySym = dmxKeyCodeToKeySym(dmxLocal, detail);
if (dmxCheckFunctionKeys(dmxLocal, type, keySym))
return;
if (dmxLocal->sendsCore && dmxLocal != dmxLocalCoreKeyboard)
xE.u.u.detail = dmxFixup(pDev, detail, keySym);
break;
events = Xcalloc(sizeof(xEvent), GetMaximumEventsNum());
/*ErrorF("KEY %d sym %d\n", detail, (int) keySym);*/
nevents = GetKeyboardEvents(events, p, type, detail);
for (i = 0; i < nevents; i++)
mieqEnqueue(p, events + i);
xfree(events);
return;
case ButtonPress:
case ButtonRelease:
detail = dmxGetButtonMapping(dmxLocal, detail);
break;
events = Xcalloc(sizeof(xEvent), GetMaximumEventsNum());
nevents = GetPointerEvents(events, p, type, detail,
POINTER_ABSOLUTE,
0, /* first_valuator = 0 */
0, /* num_valuators = 0 */
valuators);
for (i = 0; i < nevents; i++)
mieqEnqueue(p, events + i);
xfree(events);
return;
case MotionNotify:
/* All MotionNotify events should be sent via dmxCoreMotion and
* dmxExtMotion -- no input driver should build motion events by
* hand. */
dmxLog(dmxError, "dmxEnqueueXEvent: MotionNotify not allowed here\n");
break;
/* Always ignore these events */
events = Xcalloc(sizeof(xEvent), GetMaximumEventsNum());
valuators[0] = e->xmotion.x;
valuators[1] = e->xmotion.y;
valuators[2] = e->xmotion.state;
nevents = GetPointerEvents(events, p, type, detail,
POINTER_ABSOLUTE, 0, 3, valuators);
for (i = 0; i < nevents; i++)
mieqEnqueue(p, events + i);
xfree(events);
return;
case EnterNotify:
case LeaveNotify:
case KeymapNotify:
@ -627,7 +742,8 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
default:
#ifdef XINPUT
if (type == ProximityIn || type == ProximityOut) {
if (dmxLocal->sendsCore) return; /* Not a core event */
if (dmxLocal->sendsCore)
return; /* Not a core event */
break;
}
#endif
@ -643,16 +759,19 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
return;
}
#if 00 /* dead code? */
memset(&xE, 0, sizeof(xE));
xE.u.u.type = type;
xE.u.u.detail = detail;
xE.u.keyButtonPointer.time = GetTimeInMillis();
#ifdef XINPUT
if (!dmxLocal->sendsCore) dmxEnqueueExtEvent(dmxLocal, &xE, block);
if (!dmxLocal->sendsCore)
dmxEnqueueExtEvent(dmxLocal, &xE, block);
else
#endif
dmxeqEnqueue(&xE);
#endif /*00*/
}
/** A pointer to this routine is passed to low-level input drivers so

View File

@ -72,6 +72,7 @@
#include "input.h"
#include "mipointer.h"
#include "windowstr.h"
#include "mi.h"
#ifdef XINPUT
#include <X11/extensions/XI.h>
@ -222,6 +223,57 @@ static DMXLocalInputInfoRec DMXLocalDevices[] = {
{ NULL } /* Must be last */
};
#if 11 /*BP*/
void
DDXRingBell(int volume, int pitch, int duration)
{
/* NO-OP */
}
/* taken from kdrive/src/kinput.c: */
static void
dmxKbdCtrl (DeviceIntPtr pDevice, KeybdCtrl *ctrl)
{
#if 0
KdKeyboardInfo *ki;
for (ki = kdKeyboards; ki; ki = ki->next) {
if (ki->dixdev && ki->dixdev->id == pDevice->id)
break;
}
if (!ki || !ki->dixdev || ki->dixdev->id != pDevice->id || !ki->driver)
return;
KdSetLeds(ki, ctrl->leds);
ki->bellPitch = ctrl->bell_pitch;
ki->bellDuration = ctrl->bell_duration;
#endif
}
/* taken from kdrive/src/kinput.c: */
static void
dmxBell(int volume, DeviceIntPtr pDev, pointer arg, int something)
{
#if 0
KeybdCtrl *ctrl = arg;
KdKeyboardInfo *ki = NULL;
for (ki = kdKeyboards; ki; ki = ki->next) {
if (ki->dixdev && ki->dixdev->id == pDev->id)
break;
}
if (!ki || !ki->dixdev || ki->dixdev->id != pDev->id || !ki->driver)
return;
KdRingBell(ki, volume, ctrl->bell_pitch, ctrl->bell_duration);
#endif
}
#endif /*BP*/
static void _dmxChangePointerControl(DMXLocalInputInfoPtr dmxLocal,
PtrCtrl *ctrl)
{
@ -420,14 +472,24 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
memset(&info, 0, sizeof(info));
switch (what) {
case DEVICE_INIT:
if (dmxLocal->init) dmxLocal->init(pDev);
if (dmxLocal->get_info) dmxLocal->get_info(pDev, &info);
if (dmxLocal->init)
dmxLocal->init(pDev);
if (dmxLocal->get_info)
dmxLocal->get_info(pDev, &info);
if (info.keyboard) { /* XKEYBOARD makes this a special case */
dmxKeyboardOn(pDevice, &info);
break;
}
if (info.keyClass) {
#if 00 /*BP*/
InitKeyClassDeviceStruct(pDevice, &info.keySyms, info.modMap);
#else
DevicePtr pDev = (DevicePtr) pDevice;
InitKeyboardDeviceStruct(pDev,
&info.keySyms,
info.modMap,
dmxBell, dmxKbdCtrl);
#endif
}
if (info.buttonClass) {
InitButtonClassDeviceStruct(pDevice, info.numButtons, info.map);
@ -435,8 +497,13 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
if (info.valuatorClass) {
if (info.numRelAxes && dmxLocal->sendsCore) {
InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
#if 00 /*BP*/
miPointerGetMotionEvents,
miPointerGetMotionBufferSize(),
#else
GetMotionHistory,
GetMaximumEventsNum(),
#endif
Relative);
#ifdef XINPUT
for (i = 0; i < info.numRelAxes; i++)
@ -521,11 +588,22 @@ static void dmxProcessInputEvents(DMXInputInfo *dmxInput)
int i;
dmxeqProcessInputEvents();
#if 00 /*BP*/
miPointerUpdate();
if (dmxInput->detached) return;
#endif
if (dmxInput->detached)
return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->process_input)
if (dmxInput->devs[i]->process_input) {
#if 11 /*BP*/
miPointerUpdateSprite(dmxInput->devs[i]->pDevice);
#endif
dmxInput->devs[i]->process_input(dmxInput->devs[i]->private);
}
#if 11 /*BP*/
mieqProcessInputEvents();
#endif
}
static void dmxUpdateWindowInformation(DMXInputInfo *dmxInput,
@ -553,7 +631,8 @@ static void dmxUpdateWindowInformation(DMXInputInfo *dmxInput,
}
#endif
if (dmxInput->detached) return;
if (dmxInput->detached)
return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->update_info)
dmxInput->devs[i]->update_info(dmxInput->devs[i]->private,
@ -564,7 +643,8 @@ static void dmxCollectAll(DMXInputInfo *dmxInput)
{
int i;
if (dmxInput->detached) return;
if (dmxInput->detached)
return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->collect_events)
dmxInput->devs[i]->collect_events(&dmxInput->devs[i]
@ -661,7 +741,8 @@ static DeviceIntPtr dmxAddDevice(DMXLocalInputInfoPtr dmxLocal)
char *devname;
DMXInputInfo *dmxInput;
if (!dmxLocal) return NULL;
if (!dmxLocal)
return NULL;
dmxInput = &dmxInputs[dmxLocal->inputIdx];
if (dmxLocal->sendsCore) {
@ -710,8 +791,13 @@ static DeviceIntPtr dmxAddDevice(DMXLocalInputInfoPtr dmxLocal)
registerProcPtr(pDevice);
if (dmxLocal->isCore && dmxLocal->type == DMX_LOCAL_MOUSE)
if (dmxLocal->isCore && dmxLocal->type == DMX_LOCAL_MOUSE) {
#if 00 /*BP*/
miRegisterPointerDevice(screenInfo.screens[0], pDevice);
#else
/* Nothing? dmxDeviceOnOff() should get called to init, right? */
#endif
}
if (dmxLocal->create_private)
dmxLocal->private = dmxLocal->create_private(pDevice);

View File

@ -99,9 +99,13 @@ int ChangePointerDevice(DeviceIntPtr old_dev,
}
dmxLocalNew->savedMotionProc = new_dev->valuator->GetMotionProc;
dmxLocalNew->savedMotionEvents = new_dev->valuator->numMotionEvents;
#if 00 /*BP*/
new_dev->valuator->GetMotionProc = miPointerGetMotionEvents;
new_dev->valuator->numMotionEvents = miPointerGetMotionBufferSize();
#else
new_dev->valuator->GetMotionProc = GetMotionHistory;
new_dev->valuator->numMotionEvents = GetMaximumEventsNum();
#endif
/* Switch our notion of core pointer */
dmxLocalOld->isCore = 0;
dmxLocalOld->sendsCore = dmxLocalOld->savedSendsCore;

View File

@ -164,7 +164,9 @@
#include <sys/kd.h>
#include <termios.h>
#include "atKeynames.h"
#if 00
#include "xf86Keymap.h"
#endif
#include <linux/keyboard.h>
#define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0]))
@ -800,7 +802,12 @@ static void kbdLinuxReadKernelMapping(int fd, KeySymsPtr pKeySyms)
tbl[2] = 8; /* alt */
tbl[3] = tbl[2] | 1;
#if 00/*BP*/
k = map+GLYPHS_PER_KEY;
#else
ErrorF("kbdLinuxReadKernelMapping() is broken/no-op'd\n");
return;
#endif
maxkey = NUM_AT2LNX;
for (i = 0; i < maxkey; ++i) {
@ -927,8 +934,13 @@ static void kbdLinuxGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
char type;
int i;
#if 00/*BP*/
mapCopy = xalloc(sizeof(map));
memcpy(mapCopy, map, sizeof(map));
#else
ErrorF("kbdLinuxGetMap() is broken/no-op'd\n");
return;
#endif
kbdLinuxReadKernelMapping(priv->fd, pKeySyms);

View File

@ -788,7 +788,7 @@ ATIPseudoDMAInit(ScreenPtr pScreen)
atis->cce_pri_size = MMIO_IN32(mmio, RADEON_REG_CP_CSQ_CNTL) &
R200_CSQ_CNT_PRIMARY_MASK;
MMIO_OUT32(mmio, RADEON_REG_ME_CNTL, RADEON_ME_MODE_FREE_RUN);
} if (atic->is_radeon) {
} else if (atic->is_radeon) {
MMIO_OUT32(mmio, RADEON_REG_CP_CSQ_CNTL,
RADEON_CSQ_PRIPIO_INDDIS);
atis->cce_pri_size = MMIO_IN32(mmio, RADEON_REG_CP_CSQ_CNTL) &

View File

@ -14,8 +14,8 @@ SRCS = InitInput.c \
$(top_srcdir)/Xi/stubs.c \
$(top_srcdir)/mi/miinitext.c
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
libfbcmap_a_CFLAGS = $(AM_CFLAGS)
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap_mi.c
Xvfb_SOURCES = $(SRCS)

View File

@ -84,7 +84,7 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 2)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(2, 0)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)

View File

@ -75,13 +75,13 @@ libdbe_la_SOURCES = dbemodule.c
libfb_la_LDFLAGS = -avoid-version
libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS)
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libfb_la_CFLAGS = $(AM_CFLAGS)
libwfb_la_LDFLAGS = -avoid-version
libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la
libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
libwfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
libglx_la_LDFLAGS = -avoid-version
if AIGLX

View File

@ -958,6 +958,10 @@ the driver-specific documentation recommends it.
This optional entry specifies the pixel clock frequency that is used
for the regular text mode. The frequency is specified in MHz. This is
rarely used.
.TP 7
.BI "Option \*qModeDebug\*q \*q" boolean \*q
Enable printing of additional debugging information about modesetting to
the server log.
.ig
.TP 7
This optional entry allows an IRQ number to be specified.

View File

@ -377,6 +377,15 @@ static OptionInfoRec xf86OutputOptions[] = {
{-1, NULL, OPTV_NONE, {0}, FALSE },
};
enum {
OPTION_MODEDEBUG,
};
static OptionInfoRec xf86DeviceOptions[] = {
{OPTION_MODEDEBUG, "ModeDebug", OPTV_STRING, {0}, FALSE },
{-1, NULL, OPTV_NONE, {0}, FALSE },
};
static void
xf86OutputSetMonitor (xf86OutputPtr output)
{
@ -589,7 +598,6 @@ xf86CrtcCloseScreen (int index, ScreenPtr screen)
{
xf86OutputPtr output = config->output[o];
output->crtc = NULL;
output->randr_output = NULL;
}
for (c = 0; c < config->num_crtc; c++)
@ -1160,8 +1168,6 @@ xf86SortModes (DisplayModePtr input)
return output;
}
#define DEBUG_REPROBE 1
void
xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
{
@ -1330,7 +1336,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
if (mode->status == MODE_OK)
mode->status = (*output->funcs->mode_valid)(output, mode);
xf86PruneInvalidModes(scrn, &output->probed_modes, TRUE);
xf86PruneInvalidModes(scrn, &output->probed_modes,
config->debug_modes);
output->probed_modes = xf86SortModes (output->probed_modes);
@ -1363,7 +1370,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
output->initial_rotation = xf86OutputInitialRotation (output);
#ifdef DEBUG_REPROBE
if (config->debug_modes) {
if (output->probed_modes != NULL) {
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"Printing probed modes for output %s\n",
@ -1373,7 +1380,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
"No remaining probed modes for output %s\n",
output->name);
}
#endif
}
for (mode = output->probed_modes; mode != NULL; mode = mode->next)
{
/* The code to choose the best mode per pipe later on will require
@ -1382,9 +1389,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
mode->VRefresh = xf86ModeVRefresh(mode);
xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
#ifdef DEBUG_REPROBE
if (config->debug_modes)
xf86PrintModeline(scrn->scrnIndex, mode);
#endif
}
}
}
@ -1479,6 +1485,15 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
int width;
int height;
/* Set up the device options */
config->options = xnfalloc (sizeof (xf86DeviceOptions));
memcpy (config->options, xf86DeviceOptions, sizeof (xf86DeviceOptions));
xf86ProcessOptions (scrn->scrnIndex,
scrn->options,
config->options);
config->debug_modes = xf86ReturnOptValBool (config->options,
OPTION_MODEDEBUG, FALSE);
if (scrn->display->virtualX)
width = scrn->display->virtualX;
else
@ -1962,9 +1977,11 @@ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
output->MonInfo = edid_mon;
/* Debug info for now, at least */
xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n", output->name);
if (config->debug_modes) {
xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
output->name);
xf86PrintEDID(edid_mon);
}
/* Set the DDC properties for the 'compat' output */
if (output == config->output[config->compat_output])

View File

@ -552,6 +552,13 @@ typedef struct _xf86CrtcConfig {
CARD8 *cursor_image;
Bool cursor_on;
CARD32 cursor_fg, cursor_bg;
/**
* Options parsed from the related device section
*/
OptionInfoPtr options;
Bool debug_modes;
} xf86CrtcConfigRec, *xf86CrtcConfigPtr;
extern int xf86CrtcConfigPrivateIndex;

View File

@ -45,8 +45,8 @@ SRCS = Args.c \
$(top_srcdir)/Xi/stubs.c \
$(top_srcdir)/mi/miinitext.c
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap_mi.c
libfbcmap_a_CFLAGS = $(AM_CFLAGS)
Xnest_SOURCES = $(SRCS)

View File

@ -38,6 +38,6 @@ Xprt_SOURCES = \
Util.c \
miinitext-wrapper.c \
dpmsstubs-wrapper.c \
$(top_srcdir)/fb/fbcmap.c
$(top_srcdir)/fb/fbcmap_mi.c
EXTRA_DIST = ValTree.c

View File

@ -89,6 +89,12 @@ InitOutput(
}
void
DDXRingBell(int volume, int pitch, int duration)
{
/* dummy func; link fails without */
}
static void
BellProc(
int volume,

View File

@ -117,10 +117,18 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
se.sequenceNumber = client->sequence;
se.sizeID = RR10CurrentSizeID (pScreen);
if (se.rotation & (RR_Rotate_90 | RR_Rotate_270)) {
se.widthInPixels = pScreen->height;
se.heightInPixels = pScreen->width;
se.widthInMillimeters = pScreen->mmHeight;
se.heightInMillimeters = pScreen->mmWidth;
} else {
se.widthInPixels = pScreen->width;
se.heightInPixels = pScreen->height;
se.widthInMillimeters = pScreen->mmWidth;
se.heightInMillimeters = pScreen->mmHeight;
}
WriteEventsToClient (client, 1, (xEvent *) &se);
}