~ubuntu-branches/ubuntu/precise/xorg-server/precise-updates

« back to all changes in this revision

Viewing changes to hw/xfree86/common/xf86DGA.c

Tags: 2:1.10.1-2
* Build xserver-xorg-core-udeb on hurd-i386.  Thanks, Samuel Thibault!
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
 
54
54
static DevPrivateKeyRec DGAScreenKeyRec;
55
55
#define DGAScreenKeyRegistered dixPrivateKeyRegistered(&DGAScreenKeyRec)
56
 
static int mieq_installed = 0;
 
56
static Bool mieq_installed;
57
57
 
58
58
static Bool DGACloseScreen(int i, ScreenPtr pScreen);
59
59
static void DGADestroyColormap(ColormapPtr pmap);
250
250
{
251
251
   DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
252
252
 
253
 
   if (XDGAEventBase) {
 
253
   if (mieq_installed) {
254
254
       mieqSetHandler(ET_DGAEvent, NULL);
255
 
    }
 
255
       mieq_installed = FALSE;
 
256
   }
256
257
 
257
258
   FreeMarkedVisuals(pScreen);
258
259
 
446
447
   pScreenPriv->grabMouse = TRUE;
447
448
   pScreenPriv->grabKeyboard = TRUE;
448
449
 
 
450
   if (!mieq_installed) {
 
451
      mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
 
452
      mieq_installed = TRUE;
 
453
   }
 
454
 
449
455
   return Success;
450
456
}
451
457
 
466
472
 
467
473
      if (!mieq_installed) {
468
474
          mieqSetHandler(ET_DGAEvent, DGAHandleEvent);
469
 
          mieq_installed = 1;
 
475
          mieq_installed = TRUE;
470
476
      }
471
477
   }
472
478
}
936
942
   return TRUE;
937
943
}  
938
944
 
939
 
static int  DGAMouseX, DGAMouseY;
940
 
 
941
945
Bool
942
946
DGAStealMotionEvent(DeviceIntPtr dev, int index, int dx, int dy)
943
947
{
952
956
   if(!pScreenPriv || !pScreenPriv->grabMouse) /* no direct mode */
953
957
        return FALSE;
954
958
 
955
 
    DGAMouseX += dx;
956
 
    if (DGAMouseX < 0)
957
 
        DGAMouseX = 0;
958
 
    else if (DGAMouseX > screenInfo.screens[index]->width)
959
 
        DGAMouseX = screenInfo.screens[index]->width;
960
 
    DGAMouseY += dy;
961
 
    if (DGAMouseY < 0)
962
 
        DGAMouseY = 0;
963
 
    else if (DGAMouseY > screenInfo.screens[index]->height)
964
 
        DGAMouseY = screenInfo.screens[index]->height;
965
 
 
966
959
    memset(&event, 0, sizeof(event));
967
960
    event.header = ET_Internal;
968
961
    event.type = ET_DGAEvent;
1006
999
 
1007
1000
/* We have the power to steal or modify events that are about to get queued */
1008
1001
 
1009
 
Bool
1010
 
DGAIsDgaEvent (xEvent *e)
1011
 
{
1012
 
    int     coreEquiv;
1013
 
    if (!DGAScreenKeyRegistered || XDGAEventBase == 0)
1014
 
        return FALSE;
1015
 
    coreEquiv = e->u.u.type - *XDGAEventBase;
1016
 
    if (KeyPress <= coreEquiv && coreEquiv <= MotionNotify)
1017
 
        return TRUE;
1018
 
    return FALSE;
1019
 
}
1020
 
 
1021
1002
#define NoSuchEvent 0x80000000  /* so doesn't match NoEventMask */
1022
1003
static Mask filters[] =
1023
1004
{
1039
1020
    DeviceEvent     ev;
1040
1021
 
1041
1022
    memset(&ev, 0, sizeof(ev));
 
1023
    ev.header = ET_Internal;
1042
1024
    ev.length = sizeof(ev);
1043
1025
    ev.detail.key = event->detail;
1044
1026
    ev.type = event->subtype;
1058
1040
        de.u.u.type = *XDGAEventBase + GetCoreType((InternalEvent*)&ev);
1059
1041
        de.u.u.detail = event->detail;
1060
1042
        de.u.event.time = event->time;
1061
 
        de.u.event.dx = 0;
1062
 
        de.u.event.dy = 0;
 
1043
        de.u.event.dx = event->dx;
 
1044
        de.u.event.dy = event->dy;
1063
1045
        de.u.event.screen = pScreen->myNum;
1064
1046
        de.u.event.state = ev.corestate;
1065
1047
 
1114
1096
        de.u.u.type = *XDGAEventBase + coreEquiv;
1115
1097
        de.u.u.detail = event->detail;
1116
1098
        de.u.event.time = event->time;
1117
 
        de.u.event.dx = 0;
1118
 
        de.u.event.dy = 0;
 
1099
        de.u.event.dx = event->dx;
 
1100
        de.u.event.dy = event->dy;
1119
1101
        de.u.event.screen = pScreen->myNum;
1120
1102
        de.u.event.state = ev.corestate;
1121
1103
 
1216
1198
    if (!pScreenPriv)
1217
1199
        return;
1218
1200
 
 
1201
    if (!IsMaster(device))
 
1202
        return;
 
1203
 
1219
1204
    switch (event->subtype) {
1220
1205
    case KeyPress:
1221
1206
    case KeyRelease: