diff --git a/dix/devices.c b/dix/devices.c index 2d7885e28..a78a1255d 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -88,8 +88,6 @@ SOFTWARE. /* The client that is allowed to change pointer-keyboard pairings. */ static ClientPtr pairingClient = NULL; - -DevPrivateKey MasterDevClassesPrivateKey = &MasterDevClassesPrivateKey; DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKey; /** @@ -409,7 +407,6 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what) XkbComponentNamesRec names; #endif ClassesPtr classes; - DeviceIntRec dummy; switch (what) { case DEVICE_INIT: @@ -419,8 +416,6 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what) return BadAlloc; } - dixSetPrivate(&pDev->devPrivates, MasterDevClassesPrivateKey, NULL); - keySyms.minKeyCode = 8; keySyms.maxKeyCode = 255; keySyms.mapWidth = 4; @@ -459,53 +454,9 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what) xfree(keySyms.map); xfree(modMap); - - classes->key = pDev->key; - classes->valuator = pDev->valuator; - classes->button = pDev->button; - classes->focus = pDev->focus; - classes->proximity = pDev->proximity; - classes->absolute = pDev->absolute; - classes->kbdfeed = pDev->kbdfeed; - classes->ptrfeed = pDev->ptrfeed; - classes->intfeed = pDev->intfeed; - classes->stringfeed = pDev->stringfeed; - classes->bell = pDev->bell; - classes->leds = pDev->leds; - - /* Each time we switch classes we free the MD's classes and copy the - * SD's classes into the MD. We mustn't lose the first set of classes - * though as we need it to restore them when the last SD disconnects. - * - * So we create a fake device, seem to copy from the fake to the real - * one, thus ending up with a copy of the original ones in our MD. - * - * If we don't do that, we're in SIGABRT territory (double-frees, etc) - */ - memcpy(&dummy, pDev, sizeof(DeviceIntRec)); - /* Need to set them to NULL. Otherwise, Xkb does some weird stuff and - * the dev->key->xkbInfo->kbdProc starts calling itself. This can - * probably be fixed in a better way, but I don't know how. (whot) */ - pDev->key = NULL; - pDev->valuator = NULL; - pDev->button = NULL; - pDev->focus = NULL; - pDev->proximity = NULL; - pDev->absolute = NULL; - pDev->kbdfeed = NULL; - pDev->ptrfeed = NULL; - pDev->intfeed = NULL; - pDev->stringfeed = NULL; - pDev->bell = NULL; - pDev->leds = NULL; - DeepCopyDeviceClasses(&dummy, pDev); - - dixSetPrivate(&pDev->devPrivates, MasterDevClassesPrivateKey, - classes); break; case DEVICE_CLOSE: - dixSetPrivate(&pDev->devPrivates, CoreDevicePrivateKey, NULL); break; default: @@ -526,16 +477,12 @@ CorePointerProc(DeviceIntPtr pDev, int what) BYTE map[33]; int i = 0; ClassesPtr classes; - DeviceIntRec dummy; - switch (what) { case DEVICE_INIT: if (!(classes = xcalloc(1, sizeof(ClassesRec)))) return BadAlloc; - dixSetPrivate(&pDev->devPrivates, MasterDevClassesPrivateKey, NULL); - for (i = 1; i <= 32; i++) map[i] = i; InitPointerDeviceStruct((DevicePtr)pDev, map, 32, @@ -545,43 +492,9 @@ CorePointerProc(DeviceIntPtr pDev, int what) pDev->lastx = pDev->valuator->axisVal[0]; pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2; pDev->lasty = pDev->valuator->axisVal[1]; - - classes->key = pDev->key; - classes->valuator = pDev->valuator; - classes->button = pDev->button; - classes->focus = pDev->focus; - classes->proximity = pDev->proximity; - classes->absolute = pDev->absolute; - classes->kbdfeed = pDev->kbdfeed; - classes->ptrfeed = pDev->ptrfeed; - classes->intfeed = pDev->intfeed; - classes->stringfeed = pDev->stringfeed; - classes->bell = pDev->bell; - classes->leds = pDev->leds; - - /* See comment in CoreKeyboardProc. */ - memcpy(&dummy, pDev, sizeof(DeviceIntRec)); - /* Need to set them to NULL for the VCK (see CoreKeyboardProc). Not - * sure if also necessary for the VCP, but it doesn't seem to hurt */ - pDev->key = NULL; - pDev->valuator = NULL; - pDev->button = NULL; - pDev->focus = NULL; - pDev->proximity = NULL; - pDev->absolute = NULL; - pDev->kbdfeed = NULL; - pDev->ptrfeed = NULL; - pDev->intfeed = NULL; - pDev->stringfeed = NULL; - pDev->bell = NULL; - pDev->leds = NULL; - DeepCopyDeviceClasses(&dummy, pDev); - - dixSetPrivate(&pDev->devPrivates, MasterDevClassesPrivateKey, classes); break; case DEVICE_CLOSE: - dixSetPrivate(&pDev->devPrivates, CoreDevicePrivateKey, NULL); break; default: @@ -857,13 +770,6 @@ CloseDevice(DeviceIntPtr dev) xfree(dev->name); - if (dev->isMaster) - { - classes = (ClassesPtr)dixLookupPrivate(&dev->devPrivates, - MasterDevClassesPrivateKey); - FreeAllDeviceClasses(classes); - } - classes = (ClassesPtr)&dev->key; FreeAllDeviceClasses(classes); @@ -2543,16 +2449,9 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master) if (!it) /* no dev is paired with old master */ { - ClassesPtr classes; + /* XXX: reset to defaults */ EventList event = { NULL, 0}; char* classbuf; - DeviceIntRec dummy; - - FreeAllDeviceClasses((ClassesPtr)&oldmaster->key); - classes = (ClassesPtr)dixLookupPrivate(&oldmaster->devPrivates, - MasterDevClassesPrivateKey); - memcpy(&dummy.key, classes, sizeof(ClassesRec)); - DeepCopyDeviceClasses(&dummy, oldmaster); /* Send event to clients */ CreateClassesChangedEvent(&event, oldmaster, oldmaster);