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/glapi \
-I@MESA_SOURCE@/src/mesa/main \ -I@MESA_SOURCE@/src/mesa/main \
-DXFree86Server \ -DXFree86Server \
-DNO_LIBCWRAPPER \
@GLX_DEFINES@ @GLX_DEFINES@
# none yet # none yet

View File

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

View File

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

View File

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

View File

@ -37,40 +37,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#endif #endif
#include <string.h> #include <string.h>
#include <regionstr.h>
#include <resource.h> #include <GL/xmesa.h>
#include <GL/gl.h> #include <GL/internal/glcore.h>
#include <GL/glxint.h>
#include <GL/glxtokens.h>
#include <scrnintstr.h>
#include <windowstr.h>
#include <config.h>
#include <glxserver.h> #include <glxserver.h>
#include <glxscreens.h> #include <glxscreens.h>
#include <glxdrawable.h> #include <glxdrawable.h>
#include <glxcontext.h> #include <glxcontext.h>
#include <glxext.h>
#include <glxutil.h> #include <glxutil.h>
#include "context.h"
#include "xmesaP.h" #include "xmesaP.h"
#include "context.h"
#include "glcontextmodes.h" #include "glcontextmodes.h"
#include "os.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 __GLXMESAscreen __GLXMESAscreen;
typedef struct __GLXMESAcontext __GLXMESAcontext; typedef struct __GLXMESAcontext __GLXMESAcontext;
typedef struct __GLXMESAdrawable __GLXMESAdrawable; typedef struct __GLXMESAdrawable __GLXMESAdrawable;
@ -218,8 +197,7 @@ __glXMesaContextCopy(__GLXcontext *baseDst,
__GLXMESAcontext *dst = (__GLXMESAcontext *) baseDst; __GLXMESAcontext *dst = (__GLXMESAcontext *) baseDst;
__GLXMESAcontext *src = (__GLXMESAcontext *) baseSrc; __GLXMESAcontext *src = (__GLXMESAcontext *) baseSrc;
_mesa_copy_context(&src->xmesa->mesa, &dst->xmesa->mesa, mask); return XMesaCopyContext(src->xmesa, dst->xmesa, mask);
return GL_TRUE;
} }
static int static int
@ -227,7 +205,7 @@ __glXMesaContextForceCurrent(__GLXcontext *baseContext)
{ {
__GLXMESAcontext *context = (__GLXMESAcontext *) baseContext; __GLXMESAcontext *context = (__GLXMESAcontext *) baseContext;
GlxSetRenderTables (context->xmesa->mesa.CurrentDispatch); /* GlxSetRenderTables() call for XGL moved in XMesaForceCurrent() */
return XMesaForceCurrent(context->xmesa); return XMesaForceCurrent(context->xmesa);
} }

View File

@ -37,8 +37,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <stdlib.h> #include <stdlib.h>
#include <gcstruct.h>
#include "pixmapstr.h"
#include "xf86glx_util.h" #include "xf86glx_util.h"
#include <X11/Xmd.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 dst_dir glx
action indirect_size.h action indirect_size.h
src_dir src/mesa/drivers/dri/common
action glcontextmodes.c action glcontextmodes.c
action glcontextmodes.h action glcontextmodes.h

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -80,9 +80,9 @@ SOFTWARE.
*/ */
int int
SProcXUngrabDeviceKey(register ClientPtr client) SProcXUngrabDeviceKey(ClientPtr client)
{ {
register char n; char n;
REQUEST(xUngrabDeviceKeyReq); REQUEST(xUngrabDeviceKeyReq);
swaps(&stuff->length, n); 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]), AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
[ BUILDERSTRING="$withval" ] [ 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)]), 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="$withval" ],
[ FONTDIR="${libdir}/X11/fonts" ]) [ 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)]), AC_ARG_WITH(rgb-path, AS_HELP_STRING([--with-rgb-path=PATH], [Path to RGB database (default: ${datadir}/X11/rgb)]),
[ RGBPATH="$withval" ], [ RGBPATH="$withval" ],
[ RGBPATH="${datadir}/X11/rgb" ]) [ 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" 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)]), 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}" ]. [ 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=$enableval],
[NULL_ROOT_CURSOR=no]) [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. dnl Extensions.
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes]) 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]) 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(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(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(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(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(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]) 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) if (p->devPrivate.ptr == NULL)
return TRUE; return TRUE;
if (pExaScr->info->PixmapIsOffscreen)
return pExaScr->info->PixmapIsOffscreen(p);
return ((unsigned long) ((CARD8 *) p->devPrivate.ptr - return ((unsigned long) ((CARD8 *) p->devPrivate.ptr -
(CARD8 *) pExaScr->info->memoryBase) < (CARD8 *) pExaScr->info->memoryBase) <
pExaScr->info->memorySize); pExaScr->info->memorySize);

View File

@ -39,7 +39,7 @@
#include "fb.h" #include "fb.h"
#define EXA_VERSION_MAJOR 2 #define EXA_VERSION_MAJOR 2
#define EXA_VERSION_MINOR 1 #define EXA_VERSION_MINOR 2
#define EXA_VERSION_RELEASE 0 #define EXA_VERSION_RELEASE 0
typedef struct _ExaOffscreenArea ExaOffscreenArea; typedef struct _ExaOffscreenArea ExaOffscreenArea;
@ -636,6 +636,23 @@ typedef struct _ExaDriver {
*/ */
void (*FinishAccess)(PixmapPtr pPix, int index); 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 /** @name PrepareAccess() and FinishAccess() indices
* @{ * @{
*/ */

View File

@ -78,4 +78,4 @@ libwfb_la_SOURCES = $(libfb_la_SOURCES)
libfb_la_LIBADD = libfbmmx.la 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 "resource.h"
#include "fb.h" #include "fb.h"
#ifndef XFree86Server #ifdef XFree86Server
#error "You should be compiling fbcmap_mi.c instead of fbcmap.c!"
#endif
ColormapPtr FbInstalledMaps[MAXSCREENS]; ColormapPtr FbInstalledMaps[MAXSCREENS];
int int
@ -584,87 +589,3 @@ fbInitVisuals (VisualPtr *visualp,
*defaultVisp = depth[i].vids[j]; *defaultVisp = depth[i].vids[j];
return TRUE; 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 bin_PROGRAMS = XDarwin Xquartz
XDarwin_SOURCES = \ XDarwin_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \ $(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \ $(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c $(top_srcdir)/Xi/stubs.c
Xquartz_SOURCES = \ Xquartz_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \ $(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \ $(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c \ $(top_srcdir)/Xi/stubs.c \
apple/X11Application.m \ apple/X11Application.m \
@ -115,7 +115,7 @@ x11app:
cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
XDarwinApp_SOURCES = \ XDarwinApp_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \ $(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \ $(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c $(top_srcdir)/Xi/stubs.c

View File

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

View File

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

View File

@ -49,6 +49,7 @@
#include "inputstr.h" #include "inputstr.h"
#include "input.h" #include "input.h"
#include "mi.h"
/** Returns TRUE if the key is a valid modifier. For PC-class /** Returns TRUE if the key is a valid modifier. For PC-class
* keyboards, all keys can be used as modifiers, so return TRUE * 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(dmxWarning, "Use keyboard/mouse pair with the first -input\n");
dmxLog(dmxFatal, "At least one core keyboard/mouse pair required\n"); dmxLog(dmxFatal, "At least one core keyboard/mouse pair required\n");
} }
mieqInit();
} }
/** Called from dix/dispatch.c in Dispatch() whenever input events /** 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 void dmxGetGlobalPosition(int *x, int *y);
extern DMXScreenInfo *dmxFindFirstScreen(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); DMXBlockType block);
/* Support for dynamic addition of inputs. This functions is defined in /* 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) void dmxBackendUpdatePosition(pointer private, int x, int y)
{ {
GETPRIVFROMPRIVATE; GETPRIVFROMPRIVATE;
int screen = miPointerCurrentScreen()->myNum; int screen = miPointerGetScreen(inputInfo.pointer)->myNum;
DMXScreenInfo *dmxScreen = &dmxScreens[priv->myScreen]; DMXScreenInfo *dmxScreen = &dmxScreens[priv->myScreen];
int oldRelative = priv->relative; int oldRelative = priv->relative;
int topscreen = dmxBackendFindOverlapping(priv, screen, x, y); int topscreen = dmxBackendFindOverlapping(priv, screen, x, y);
@ -354,7 +354,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
switch (X.type) { switch (X.type) {
case EnterNotify: case EnterNotify:
dmxCommonSaveState(priv); dmxCommonSaveState(priv);
if (entered++) continue; if (entered++)
continue;
priv->entered = 1; priv->entered = 1;
ignoreLeave = 1; ignoreLeave = 1;
DMXDBG5("dmxBackendCollectEvents: Enter %lu %d,%d; GRAB %s %p\n", DMXDBG5("dmxBackendCollectEvents: Enter %lu %d,%d; GRAB %s %p\n",
@ -378,7 +379,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
continue; continue;
} }
dmxCommonRestoreState(priv); dmxCommonRestoreState(priv);
if (left++) continue; if (left++)
continue;
DMXDBG7("dmxBackendCollectEvents: Leave %lu %d,%d %d %d %s %s\n", DMXDBG7("dmxBackendCollectEvents: Leave %lu %d,%d %d %d %s %s\n",
X.xcrossing.root, X.xcrossing.x, X.xcrossing.y, X.xcrossing.root, X.xcrossing.x, X.xcrossing.y,
X.xcrossing.detail, X.xcrossing.focus, X.xcrossing.detail, X.xcrossing.focus,
@ -398,7 +400,8 @@ void dmxBackendCollectEvents(DevicePtr pDev,
priv->newscreen, priv->newscreen,
X.xmotion.x, X.xmotion.y, X.xmotion.x, X.xmotion.y,
entered, priv->lastX, priv->lastY); entered, priv->lastX, priv->lastY);
if (dmxBackendPendingMotionEvent(priv, TRUE)) continue; if (dmxBackendPendingMotionEvent(priv, TRUE))
continue;
if (!(dmxScreen = dmxBackendFindWindow(priv, X.xmotion.window))) if (!(dmxScreen = dmxBackendFindWindow(priv, X.xmotion.window)))
dmxLog(dmxFatal, dmxLog(dmxFatal,
" Event on non-existant window %lu\n", " Event on non-existant window %lu\n",
@ -449,6 +452,9 @@ void dmxBackendCollectEvents(DevicePtr pDev,
case KeyRelease: case KeyRelease:
enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block); enqueue(priv->kbd, X.type, X.xkey.keycode, 0, NULL, block);
break; break;
case ButtonPress:
case ButtonRelease:
/* fall-through */
default: default:
/* Pass the whole event here, because /* Pass the whole event here, because
* this may be an extension event. */ * this may be an extension event. */
@ -571,12 +577,16 @@ void dmxBackendInit(DevicePtr pDev)
/** Get information about the backend pointer (for initialization). */ /** Get information about the backend pointer (for initialization). */
void dmxBackendMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info) void dmxBackendMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
{ {
const DMXScreenInfo *dmxScreen = dmxBackendInitPrivate(pDev);
info->buttonClass = 1; info->buttonClass = 1;
dmxCommonMouGetMap(pDev, info->map, &info->numButtons); dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
info->valuatorClass = 1; info->valuatorClass = 1;
info->numRelAxes = 2; info->numRelAxes = 2;
info->minval[0] = 0; 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->res[0] = 1;
info->minres[0] = 0; info->minres[0] = 0;
info->maxres[0] = 1; info->maxres[0] = 1;

View File

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

View File

@ -860,12 +860,17 @@ void dmxConsoleInit(DevicePtr pDev)
* for pointers. */ * for pointers. */
void dmxConsoleMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info) void dmxConsoleMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info)
{ {
GETPRIVFROMPDEV;
info->buttonClass = 1; info->buttonClass = 1;
dmxCommonMouGetMap(pDev, info->map, &info->numButtons); dmxCommonMouGetMap(pDev, info->map, &info->numButtons);
info->valuatorClass = 1; info->valuatorClass = 1;
info->numRelAxes = 2; info->numRelAxes = 2;
info->minval[0] = 0; 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->res[0] = 1;
info->minres[0] = 0; info->minres[0] = 0;
info->maxres[0] = 1; info->maxres[0] = 1;

View File

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

View File

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

View File

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

View File

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

View File

@ -164,7 +164,9 @@
#include <sys/kd.h> #include <sys/kd.h>
#include <termios.h> #include <termios.h>
#include "atKeynames.h" #include "atKeynames.h"
#if 00
#include "xf86Keymap.h" #include "xf86Keymap.h"
#endif
#include <linux/keyboard.h> #include <linux/keyboard.h>
#define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0])) #define NUM_AT2LNX (sizeof(at2lnx) / sizeof(at2lnx[0]))
@ -800,7 +802,12 @@ static void kbdLinuxReadKernelMapping(int fd, KeySymsPtr pKeySyms)
tbl[2] = 8; /* alt */ tbl[2] = 8; /* alt */
tbl[3] = tbl[2] | 1; tbl[3] = tbl[2] | 1;
#if 00/*BP*/
k = map+GLYPHS_PER_KEY; k = map+GLYPHS_PER_KEY;
#else
ErrorF("kbdLinuxReadKernelMapping() is broken/no-op'd\n");
return;
#endif
maxkey = NUM_AT2LNX; maxkey = NUM_AT2LNX;
for (i = 0; i < maxkey; ++i) { for (i = 0; i < maxkey; ++i) {
@ -927,8 +934,13 @@ static void kbdLinuxGetMap(DevicePtr pDev, KeySymsPtr pKeySyms, CARD8 *pModMap)
char type; char type;
int i; int i;
#if 00/*BP*/
mapCopy = xalloc(sizeof(map)); mapCopy = xalloc(sizeof(map));
memcpy(mapCopy, map, sizeof(map)); memcpy(mapCopy, map, sizeof(map));
#else
ErrorF("kbdLinuxGetMap() is broken/no-op'd\n");
return;
#endif
kbdLinuxReadKernelMapping(priv->fd, pKeySyms); 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) & atis->cce_pri_size = MMIO_IN32(mmio, RADEON_REG_CP_CSQ_CNTL) &
R200_CSQ_CNT_PRIMARY_MASK; R200_CSQ_CNT_PRIMARY_MASK;
MMIO_OUT32(mmio, RADEON_REG_ME_CNTL, RADEON_ME_MODE_FREE_RUN); 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, MMIO_OUT32(mmio, RADEON_REG_CP_CSQ_CNTL,
RADEON_CSQ_PRIPIO_INDDIS); RADEON_CSQ_PRIPIO_INDDIS);
atis->cce_pri_size = MMIO_IN32(mmio, RADEON_REG_CP_CSQ_CNTL) & 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)/Xi/stubs.c \
$(top_srcdir)/mi/miinitext.c $(top_srcdir)/mi/miinitext.c
libfbcmap_a_CFLAGS = $(AM_CFLAGS) -DXFree86Server libfbcmap_a_CFLAGS = $(AM_CFLAGS)
libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap.c libfbcmap_a_SOURCES = $(top_srcdir)/fb/fbcmap_mi.c
Xvfb_SOURCES = $(SRCS) Xvfb_SOURCES = $(SRCS)

View File

@ -84,7 +84,7 @@ typedef enum {
* mask is 0xFFFF0000. * mask is 0xFFFF0000.
*/ */
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3) #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_XINPUT_VERSION SET_ABI_VERSION(1, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3) #define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5) #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_LDFLAGS = -avoid-version
libfb_la_LIBADD = $(top_builddir)/fb/libfb.la libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS) libfb_la_CFLAGS = $(AM_CFLAGS)
libwfb_la_LDFLAGS = -avoid-version libwfb_la_LDFLAGS = -avoid-version
libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la
libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libwfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS) -DFB_ACCESS_WRAPPER libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
libglx_la_LDFLAGS = -avoid-version libglx_la_LDFLAGS = -avoid-version
if AIGLX 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 This optional entry specifies the pixel clock frequency that is used
for the regular text mode. The frequency is specified in MHz. This is for the regular text mode. The frequency is specified in MHz. This is
rarely used. rarely used.
.TP 7
.BI "Option \*qModeDebug\*q \*q" boolean \*q
Enable printing of additional debugging information about modesetting to
the server log.
.ig .ig
.TP 7 .TP 7
This optional entry allows an IRQ number to be specified. 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 }, {-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 static void
xf86OutputSetMonitor (xf86OutputPtr output) xf86OutputSetMonitor (xf86OutputPtr output)
{ {
@ -589,7 +598,6 @@ xf86CrtcCloseScreen (int index, ScreenPtr screen)
{ {
xf86OutputPtr output = config->output[o]; xf86OutputPtr output = config->output[o];
output->crtc = NULL;
output->randr_output = NULL; output->randr_output = NULL;
} }
for (c = 0; c < config->num_crtc; c++) for (c = 0; c < config->num_crtc; c++)
@ -1160,8 +1168,6 @@ xf86SortModes (DisplayModePtr input)
return output; return output;
} }
#define DEBUG_REPROBE 1
void void
xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
{ {
@ -1330,7 +1336,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
if (mode->status == MODE_OK) if (mode->status == MODE_OK)
mode->status = (*output->funcs->mode_valid)(output, mode); 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); output->probed_modes = xf86SortModes (output->probed_modes);
@ -1363,7 +1370,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
output->initial_rotation = xf86OutputInitialRotation (output); output->initial_rotation = xf86OutputInitialRotation (output);
#ifdef DEBUG_REPROBE if (config->debug_modes) {
if (output->probed_modes != NULL) { if (output->probed_modes != NULL) {
xf86DrvMsg(scrn->scrnIndex, X_INFO, xf86DrvMsg(scrn->scrnIndex, X_INFO,
"Printing probed modes for output %s\n", "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", "No remaining probed modes for output %s\n",
output->name); output->name);
} }
#endif }
for (mode = output->probed_modes; mode != NULL; mode = mode->next) for (mode = output->probed_modes; mode != NULL; mode = mode->next)
{ {
/* The code to choose the best mode per pipe later on will require /* 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); mode->VRefresh = xf86ModeVRefresh(mode);
xf86SetModeCrtc(mode, INTERLACE_HALVE_V); xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
#ifdef DEBUG_REPROBE if (config->debug_modes)
xf86PrintModeline(scrn->scrnIndex, mode); xf86PrintModeline(scrn->scrnIndex, mode);
#endif
} }
} }
} }
@ -1479,6 +1485,15 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
int width; int width;
int height; 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) if (scrn->display->virtualX)
width = scrn->display->virtualX; width = scrn->display->virtualX;
else else
@ -1962,9 +1977,11 @@ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
output->MonInfo = edid_mon; output->MonInfo = edid_mon;
/* Debug info for now, at least */ if (config->debug_modes) {
xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n", output->name); xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
output->name);
xf86PrintEDID(edid_mon); xf86PrintEDID(edid_mon);
}
/* Set the DDC properties for the 'compat' output */ /* Set the DDC properties for the 'compat' output */
if (output == config->output[config->compat_output]) if (output == config->output[config->compat_output])

View File

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

View File

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

View File

@ -38,6 +38,6 @@ Xprt_SOURCES = \
Util.c \ Util.c \
miinitext-wrapper.c \ miinitext-wrapper.c \
dpmsstubs-wrapper.c \ dpmsstubs-wrapper.c \
$(top_srcdir)/fb/fbcmap.c $(top_srcdir)/fb/fbcmap_mi.c
EXTRA_DIST = ValTree.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 static void
BellProc( BellProc(
int volume, int volume,

View File

@ -117,10 +117,18 @@ RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
se.sequenceNumber = client->sequence; se.sequenceNumber = client->sequence;
se.sizeID = RR10CurrentSizeID (pScreen); 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.widthInPixels = pScreen->width;
se.heightInPixels = pScreen->height; se.heightInPixels = pScreen->height;
se.widthInMillimeters = pScreen->mmWidth; se.widthInMillimeters = pScreen->mmWidth;
se.heightInMillimeters = pScreen->mmHeight; se.heightInMillimeters = pScreen->mmHeight;
}
WriteEventsToClient (client, 1, (xEvent *) &se); WriteEventsToClient (client, 1, (xEvent *) &se);
} }