diff options
author | Philip Langdale <philipl@fido2.homeip.net> | 2007-02-10 22:17:01 -0800 |
---|---|---|
committer | Philip Langdale <philipl@fido2.homeip.net> | 2007-02-10 22:17:01 -0800 |
commit | 24f9e67a8f9729fa7cb10f0479a3be9c16c5d13a (patch) | |
tree | 54449d226fc4de91bd8f85f6355603930ece5442 | |
parent | d8d8f114caece4c26c777ae6eee57e66b1f499e7 (diff) | |
download | xorg-driver-xf86-input-evdev-24f9e67a8f9729fa7cb10f0479a3be9c16c5d13a.tar.gz |
Stop caching the screen size for scaling.
Do be able to correctly scale absolute inputs, the actual
screen size must be used as this changes when the screen
resizes.
-rw-r--r-- | src/evdev.h | 1 | ||||
-rw-r--r-- | src/evdev_axes.c | 10 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/evdev.h b/src/evdev.h index f682312..c6e9188 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -172,7 +172,6 @@ typedef struct { int min[ABS_MAX]; int max[ABS_MAX]; int map[ABS_MAX]; - int scale[2]; int screen; /* Screen number for this device. */ Bool use_touch; Bool touch; diff --git a/src/evdev_axes.c b/src/evdev_axes.c index 9d2ef20..cab9784 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -276,11 +276,14 @@ EvdevAxesAbsSynRep (InputInfoPtr pInfo) skip_xy = 1; } else if (state->mode == Absolute && state->abs->screen != -1 && state->abs->axes >= 2) { int conv_x, conv_y; + int scale[2]; + + scale[0] = screenInfo.screens[state->abs->screen]->width; + scale[1] = screenInfo.screens[state->abs->screen]->height; for (i = 0; i < 2; i++) state->axes->v[i] = xf86ScaleAxis (state->abs->v[i], - 0, state->abs->scale[i], - state->abs->min[i], state->abs->max[i]); + 0, scale[i], state->abs->min[i], state->abs->max[i]); EvdevConvert (pInfo, 0, 2, state->abs->v[0], state->abs->v[1], @@ -504,9 +507,6 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo) if (k < screenInfo.numScreens && k >= 0) { state->abs->screen = k; xf86Msg(X_CONFIG, "%s: AbsoluteScreen: %d.\n", pInfo->name, k); - - state->abs->scale[0] = screenInfo.screens[state->abs->screen]->width; - state->abs->scale[1] = screenInfo.screens[state->abs->screen]->height; } else { if (k != -1) xf86Msg(X_CONFIG, "%s: AbsoluteScreen: %d is not a valid screen.\n", pInfo->name, k); |