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.
This commit is contained in:
Philip Langdale
2007-02-10 22:17:01 -08:00
parent d8d8f114ca
commit 24f9e67a8f
2 changed files with 5 additions and 6 deletions

View File

@@ -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;

View File

@@ -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);