diff --git a/dix/devices.c b/dix/devices.c index 52a0a0ac2..ee0c74b78 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -815,6 +815,9 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, int i; register ValuatorClassPtr valc; + if (!dev) + return FALSE; + valc = (ValuatorClassPtr)xalloc(sizeof(ValuatorClassRec) + numAxes * sizeof(AxisInfo) + numAxes * sizeof(unsigned int)); @@ -827,13 +830,15 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, valc->mode = mode; valc->axes = (AxisInfoPtr)(valc + 1); valc->axisVal = (int *)(valc->axes + numAxes); - for (i=0; iaxisVal[i]=0; valc->lastx = 0; valc->lasty = 0; valc->dxremaind = 0; valc->dyremaind = 0; dev->valuator = valc; + for (i=0; iaxisVal[i]=0; + } return TRUE; } diff --git a/dix/events.c b/dix/events.c index fac492c29..6c4448511 100644 --- a/dix/events.c +++ b/dix/events.c @@ -4953,12 +4953,12 @@ GetPointerEvents(xEvent **xE, DeviceIntPtr pDev, int type, int buttons, axes = pDev->valuator->axes; if (kbp->root_x < axes->min_value) kbp->root_x = axes->min_value; - if (kbp->root_x > axes->max_value) + if (axes->max_value > 0 && kbp->root_x > axes->max_value) kbp->root_x = axes->max_value; axes++; if (kbp->root_y < axes->min_value) kbp->root_y = axes->min_value; - if (kbp->root_y > axes->max_value) + if (axes->max_value > 0 && kbp->root_y > axes->max_value) kbp->root_y = axes->max_value; if (pDev->coreEvents) { diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 92fd83195..6a337bca3 100644 --- a/hw/kdrive/ephyr/ephyr.c +++ b/hw/kdrive/ephyr/ephyr.c @@ -863,10 +863,10 @@ MouseInit (KdPointerInfo *pi) pi->driverPrivate = (EphyrPointerPrivate *) xcalloc(sizeof(EphyrPointerPrivate), 1); ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = FALSE; + pi->nAxes = 3; + pi->nButtons = 32; ephyrMouse = pi; - /* FIXME DO NOT COMMIT */ KdAddPointerDriver(&EphyrMouseDriver); - ErrorF("SUCCESS!\n"); return Success; } @@ -874,7 +874,6 @@ static Status MouseEnable (KdPointerInfo *pi) { ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = TRUE; - ErrorF("SUCCESS ENABLE!\n"); return Success; } diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c index b23532fe0..96d121191 100644 --- a/hw/kdrive/ephyr/hostx.c +++ b/hw/kdrive/ephyr/hostx.c @@ -675,13 +675,6 @@ hostx_load_keymap(void) max_keycode - min_keycode + 1, &host_width); - - ephyrKeySyms.map = (KeySym *)calloc(sizeof(KeySym), - (max_keycode - min_keycode + 1) * - width); - if (!ephyrKeySyms.map) - return; - /* Try and copy the hosts keymap into our keymap to avoid loads * of messing around. * @@ -690,15 +683,21 @@ hostx_load_keymap(void) */ width = (host_width > 4) ? 4 : host_width; + ephyrKeySyms.map = (KeySym *)calloc(sizeof(KeySym), + (max_keycode - min_keycode + 1) * + width); + if (!ephyrKeySyms.map) + return; + for (i=0; i<(max_keycode - min_keycode+1); i++) for (j=0; j 4) ? 4 : width; + ephyrKeySyms.mapWidth = width; XFree(keymap); }