Merge remote branch 'whot/for-keith'
This commit is contained in:
commit
ea1ffd3e60
|
@ -53,7 +53,7 @@
|
|||
|
||||
static DevPrivateKeyRec DGAScreenKeyRec;
|
||||
#define DGAScreenKeyRegistered dixPrivateKeyRegistered(&DGAScreenKeyRec)
|
||||
static int mieq_installed = 0;
|
||||
static Bool mieq_installed;
|
||||
|
||||
static Bool DGACloseScreen(int i, ScreenPtr pScreen);
|
||||
static void DGADestroyColormap(ColormapPtr pmap);
|
||||
|
@ -250,8 +250,9 @@ DGACloseScreen(int i, ScreenPtr pScreen)
|
|||
{
|
||||
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
|
||||
|
||||
if (XDGAEventBase) {
|
||||
if (mieq_installed) {
|
||||
mieqSetHandler(ET_DGAEvent, NULL);
|
||||
mieq_installed = FALSE;
|
||||
}
|
||||
|
||||
FreeMarkedVisuals(pScreen);
|
||||
|
@ -446,6 +447,11 @@ xf86SetDGAMode(
|
|||
pScreenPriv->grabMouse = TRUE;
|
||||
pScreenPriv->grabKeyboard = TRUE;
|
||||
|
||||
if (!mieq_installed) {
|
||||
mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
|
||||
mieq_installed = TRUE;
|
||||
}
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
|
@ -466,7 +472,7 @@ DGASetInputMode(int index, Bool keyboard, Bool mouse)
|
|||
|
||||
if (!mieq_installed) {
|
||||
mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
|
||||
mieq_installed = 1;
|
||||
mieq_installed = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -936,8 +942,6 @@ DGAStealKeyEvent(DeviceIntPtr dev, int index, int key_code, int is_down)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static int DGAMouseX, DGAMouseY;
|
||||
|
||||
Bool
|
||||
DGAStealMotionEvent(DeviceIntPtr dev, int index, int dx, int dy)
|
||||
{
|
||||
|
@ -952,17 +956,6 @@ DGAStealMotionEvent(DeviceIntPtr dev, int index, int dx, int dy)
|
|||
if(!pScreenPriv || !pScreenPriv->grabMouse) /* no direct mode */
|
||||
return FALSE;
|
||||
|
||||
DGAMouseX += dx;
|
||||
if (DGAMouseX < 0)
|
||||
DGAMouseX = 0;
|
||||
else if (DGAMouseX > screenInfo.screens[index]->width)
|
||||
DGAMouseX = screenInfo.screens[index]->width;
|
||||
DGAMouseY += dy;
|
||||
if (DGAMouseY < 0)
|
||||
DGAMouseY = 0;
|
||||
else if (DGAMouseY > screenInfo.screens[index]->height)
|
||||
DGAMouseY = screenInfo.screens[index]->height;
|
||||
|
||||
memset(&event, 0, sizeof(event));
|
||||
event.header = ET_Internal;
|
||||
event.type = ET_DGAEvent;
|
||||
|
@ -1006,18 +999,6 @@ DGAStealButtonEvent(DeviceIntPtr dev, int index, int button, int is_down)
|
|||
|
||||
/* We have the power to steal or modify events that are about to get queued */
|
||||
|
||||
Bool
|
||||
DGAIsDgaEvent (xEvent *e)
|
||||
{
|
||||
int coreEquiv;
|
||||
if (!DGAScreenKeyRegistered || XDGAEventBase == 0)
|
||||
return FALSE;
|
||||
coreEquiv = e->u.u.type - *XDGAEventBase;
|
||||
if (KeyPress <= coreEquiv && coreEquiv <= MotionNotify)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#define NoSuchEvent 0x80000000 /* so doesn't match NoEventMask */
|
||||
static Mask filters[] =
|
||||
{
|
||||
|
@ -1039,6 +1020,7 @@ DGAProcessKeyboardEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr keybd)
|
|||
DeviceEvent ev;
|
||||
|
||||
memset(&ev, 0, sizeof(ev));
|
||||
ev.header = ET_Internal;
|
||||
ev.length = sizeof(ev);
|
||||
ev.detail.key = event->detail;
|
||||
ev.type = event->subtype;
|
||||
|
@ -1058,8 +1040,8 @@ DGAProcessKeyboardEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr keybd)
|
|||
de.u.u.type = *XDGAEventBase + GetCoreType((InternalEvent*)&ev);
|
||||
de.u.u.detail = event->detail;
|
||||
de.u.event.time = event->time;
|
||||
de.u.event.dx = 0;
|
||||
de.u.event.dy = 0;
|
||||
de.u.event.dx = event->dx;
|
||||
de.u.event.dy = event->dy;
|
||||
de.u.event.screen = pScreen->myNum;
|
||||
de.u.event.state = ev.corestate;
|
||||
|
||||
|
@ -1114,8 +1096,8 @@ DGAProcessPointerEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr mouse)
|
|||
de.u.u.type = *XDGAEventBase + coreEquiv;
|
||||
de.u.u.detail = event->detail;
|
||||
de.u.event.time = event->time;
|
||||
de.u.event.dx = 0;
|
||||
de.u.event.dy = 0;
|
||||
de.u.event.dx = event->dx;
|
||||
de.u.event.dy = event->dy;
|
||||
de.u.event.screen = pScreen->myNum;
|
||||
de.u.event.state = ev.corestate;
|
||||
|
||||
|
@ -1216,6 +1198,9 @@ DGAHandleEvent(int screen_num, InternalEvent *ev, DeviceIntPtr device)
|
|||
if (!pScreenPriv)
|
||||
return;
|
||||
|
||||
if (!IsMaster(device))
|
||||
return;
|
||||
|
||||
switch (event->subtype) {
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
|
|
|
@ -83,7 +83,7 @@ typedef enum {
|
|||
*/
|
||||
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
|
||||
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(9, 0)
|
||||
#define ABI_XINPUT_VERSION SET_ABI_VERSION(12, 1)
|
||||
#define ABI_XINPUT_VERSION SET_ABI_VERSION(12, 2)
|
||||
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(5, 0)
|
||||
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
|
||||
|
||||
|
|
|
@ -1011,11 +1011,6 @@ xf86PostMotionEventM(DeviceIntPtr device,
|
|||
DeviceEvent *event;
|
||||
int flags = 0;
|
||||
|
||||
#if XFreeXDGA
|
||||
int index;
|
||||
int dx = 0, dy = 0;
|
||||
#endif
|
||||
|
||||
if (valuator_mask_num_valuators(mask) > 0)
|
||||
{
|
||||
if (is_absolute)
|
||||
|
@ -1029,7 +1024,9 @@ xf86PostMotionEventM(DeviceIntPtr device,
|
|||
if (valuator_mask_isset(mask, 0) ||
|
||||
valuator_mask_isset(mask, 1))
|
||||
if (miPointerGetScreen(device)) {
|
||||
index = miPointerGetScreen(device)->myNum;
|
||||
int index = miPointerGetScreen(device)->myNum;
|
||||
int dx = 0, dy = 0;
|
||||
|
||||
if (valuator_mask_isset(mask, 0))
|
||||
{
|
||||
dx = valuator_mask_get(mask, 0);
|
||||
|
@ -1160,10 +1157,6 @@ xf86PostButtonEventM(DeviceIntPtr device,
|
|||
int i = 0, nevents = 0;
|
||||
int flags = 0;
|
||||
|
||||
#if XFreeXDGA
|
||||
int index;
|
||||
#endif
|
||||
|
||||
if (valuator_mask_num_valuators(mask) > 0)
|
||||
{
|
||||
if (is_absolute)
|
||||
|
@ -1174,7 +1167,8 @@ xf86PostButtonEventM(DeviceIntPtr device,
|
|||
|
||||
#if XFreeXDGA
|
||||
if (miPointerGetScreen(device)) {
|
||||
index = miPointerGetScreen(device)->myNum;
|
||||
int index = miPointerGetScreen(device)->myNum;
|
||||
|
||||
if (DGAStealButtonEvent(device, index, button, is_down))
|
||||
return;
|
||||
}
|
||||
|
@ -1240,6 +1234,19 @@ xf86PostKeyEventM(DeviceIntPtr device,
|
|||
{
|
||||
int i = 0, nevents = 0;
|
||||
|
||||
#if XFreeXDGA
|
||||
DeviceIntPtr pointer;
|
||||
|
||||
/* Some pointers send key events, paired device is wrong then. */
|
||||
pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
|
||||
if (miPointerGetScreen(pointer)) {
|
||||
int index = miPointerGetScreen(pointer)->myNum;
|
||||
|
||||
if (DGAStealKeyEvent(device, index, key_code, is_down))
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (is_absolute) {
|
||||
nevents = GetKeyboardValuatorEvents(xf86Events, device,
|
||||
is_down ? KeyPress : KeyRelease,
|
||||
|
|
|
@ -124,7 +124,6 @@ extern _X_EXPORT Bool DGAStealButtonEvent(DeviceIntPtr dev, int Index, int butto
|
|||
int is_down);
|
||||
extern _X_EXPORT Bool DGAStealMotionEvent(DeviceIntPtr dev, int Index, int dx, int dy);
|
||||
extern _X_EXPORT Bool DGAStealKeyEvent(DeviceIntPtr dev, int Index, int key_code, int is_down);
|
||||
extern _X_EXPORT Bool DGAIsDgaEvent (xEvent *e);
|
||||
|
||||
extern _X_EXPORT Bool DGAOpenFramebuffer(int Index, char **name, unsigned char **mem,
|
||||
int *size, int *offset, int *flags);
|
||||
|
|
|
@ -177,7 +177,7 @@ struct _DGAEvent
|
|||
Time time; /**< Time in ms */
|
||||
int subtype; /**< KeyPress, KeyRelease, ButtonPress,
|
||||
ButtonRelease, MotionNotify */
|
||||
int detail; /**< Relative x coordinate */
|
||||
int detail; /**< Button number or key code */
|
||||
int dx; /**< Relative x coordinate */
|
||||
int dy; /**< Relative y coordinate */
|
||||
int screen; /**< Screen number this event applies to */
|
||||
|
|
|
@ -915,9 +915,14 @@ ProcXkbSetControls(ClientPtr client)
|
|||
stuff->axtOptsMask);
|
||||
}
|
||||
|
||||
if (stuff->changeCtrls & XkbPerKeyRepeatMask)
|
||||
if (stuff->changeCtrls & XkbPerKeyRepeatMask) {
|
||||
memcpy(new.per_key_repeat, stuff->perKeyRepeat,
|
||||
XkbPerKeyBitArraySize);
|
||||
if (xkbi->repeatKey &&
|
||||
!BitIsOn(new.per_key_repeat, xkbi->repeatKey)) {
|
||||
AccessXCancelRepeatKey(xkbi, xkbi->repeatKey);
|
||||
}
|
||||
}
|
||||
|
||||
old= *ctrl;
|
||||
*ctrl= new;
|
||||
|
|
Loading…
Reference in New Issue
Block a user